【问题标题】:Why does Dart prefer omitting type annotations for local varibles?为什么 Dart 更喜欢省略局部变量的类型注释?
【发布时间】:2020-10-08 10:27:56
【问题描述】:

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

为什么会这样:

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

更喜欢这个:

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

【问题讨论】:

    标签: oop dart types annotations var


    【解决方案1】:

    争论是多余的冗长通常不值得它自己的重量。

    除非您命名 每个 中间值,否则您已经可以使用无类型的表达式而不会出现问题。说:

    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 只说“AVOID”,而不是“DON'T”,这意味着在某些情况下,其他原因可能胜过样式指南的建议。

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

    【讨论】:

    • when I go back to that code in 6-12 months again. 哈哈这是我想的一件事。但这确实是有道理的,因为在大多数情况下,我们并不真的需要知道变量,但是文档说 avoid 而不是 don't 的事实确实指出推理出来。
    • @Irn 那么对于在 Flutter 开发中使用 dart 的普通移动应用程序开发人员,您有什么建议,在面向对象的方法中,哪种做法似乎更好?
    猜你喜欢
    • 2020-12-05
    • 2020-08-29
    • 2012-01-26
    • 2011-03-07
    • 2012-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-18
    相关资源
    最近更新 更多