我使用dart已经有一段时间了,我只是想知道不带类型注解的偏好,我个人发现如果我能看到类型注解,而不想知道某些变量是什么类型,那么更容易理解和回顾我的代码。有什么理由比直接类型注解更喜欢var吗?原因是:
var match = regexp.firstMatch('Regex Match');
最好是:
RegExpMatch match = regexp.firstMatch('Regex Match');
f45qwnt81#
争论的焦点是,额外的冗长通常不值得它本身的重量。除非您命名 every 中间值,否则您已经可以使用无类型化表达式而不会出现问题。
myThingie.flooTheFloo().biz.baz.fixIt();
这里你有四个中间值,你没有给它们命名和类型,我们通常不认为这是一个问题。
var v1 = myThingie.flooTheFloo(); var v2 = v1.biz; var v3 = v2.baz; var v4 = v3.fixIt();
没有什么特别的原因会让你突然需要以前不需要的类型。可以说,把类型放在变量上不如把类型放在匿名中间结果上重要,因为前者的 name 提供了更多的信息,如果名称足够描述,你不应该同时需要名称和类型。有些人会说这些观点都很好,但是你 * 有时候 * 还是想给某个东西给予一个类型,因为 * 那个情况 * 从上下文或名称中看不清楚。这没关系,样式指南只说“AVOID”,而不是“DON 'T”,这意味着可能会有其他原因胜过样式指南推荐的情况。我个人习惯于编写类型,很难不这样做(尤其是int,它只是从我的手指流出来之前,我甚至可以考虑它!)不过,我已经尝试过编写Dart代码,而不键入局部变量,而且 * 在实践中 * 这并不是一个问题。很多人都有同样的经历。(我想我们会看到当我在6-12个月后再次使用该代码时会发生什么。)
int
1条答案
按热度按时间f45qwnt81#
争论的焦点是,额外的冗长通常不值得它本身的重量。
除非您命名 every 中间值,否则您已经可以使用无类型化表达式而不会出现问题。
这里你有四个中间值,你没有给它们命名和类型,我们通常不认为这是一个问题。
没有什么特别的原因会让你突然需要以前不需要的类型。
可以说,把类型放在变量上不如把类型放在匿名中间结果上重要,因为前者的 name 提供了更多的信息,如果名称足够描述,你不应该同时需要名称和类型。
有些人会说这些观点都很好,但是你 * 有时候 * 还是想给某个东西给予一个类型,因为 * 那个情况 * 从上下文或名称中看不清楚。这没关系,样式指南只说“AVOID”,而不是“DON 'T”,这意味着可能会有其他原因胜过样式指南推荐的情况。
我个人习惯于编写类型,很难不这样做(尤其是
int
,它只是从我的手指流出来之前,我甚至可以考虑它!)不过,我已经尝试过编写Dart代码,而不键入局部变量,而且 * 在实践中 * 这并不是一个问题。很多人都有同样的经历。(我想我们会看到当我在6-12个月后再次使用该代码时会发生什么。)