为什么 Dart 更喜欢省略局部变量的类型注释?

Why does Dart prefer omitting type annotations for local varibles?

我使用 dart 有一段时间了,只是想知道不使用类型注释的偏好,我个人觉得如果我能看到类型注释而不想知道什么类型,它更容易理解并回顾我的代码某些变量是。有理由更喜欢 var 而不是直接类型注释吗?

这是为什么:

var match = regexp.firstMatch('Regex Match');

更喜欢这个:

RegExpMatch match = regexp.firstMatch('Regex Match');

争论点是额外的冗长通常不值得它自己的重量。

除非您命名每个 中间值,否则您已经可以毫无问题地使用无类型表达式。说:

myThingie.flooTheFloo().biz.baz.fixIt();

这里有四个中间值,您没有为其指定名称和类型,我们通常不认为这是一个问题。 如果你把它写成;

var v1 = myThingie.flooTheFloo();
var v2 = v1.biz;
var v3 = v2.baz;
var v4 = v3.fixIt();

没有什么特别的理由让您突然需要以前不需要的类型。

可以说,将类型放在变量上不如重要,而不是将类型放在匿名中间结果上,因为前者的 name 提供更多信息。如果名称具有足够的描述性,则不需要名称和类型。

然后有人争辩说这些论点都很好,但是你有时无论如何都想给某物一个类型,因为那个案例 从上下文或名称中不清楚。没关系,the style guide only says "AVOID”,而不是“不要”,这意味着在某些情况下,其他原因可能胜过风格指南的建议。

我个人习惯写类型,很难不写(尤其是int,还没来得及想就从指缝里流了出来!) 但是,我已经尝试在不键入局部变量的情况下编写 Dart 代码,并且在实践中这不是问题。很多人都有同样的经历。 (我想我们会在 6-12 个月后再次回到该代码时看到会发生什么。)