繁体   English   中英

Dart中有关类成员封装和类型注释的约定是什么?

[英]What are the conventions in Dart about class members' encapsulation and type annotations?

我是Dart语言的新手。 所以我想更多地了解程序员在使用这种语言进行开发时遵循的一些约定。

  1. 我应该像我一样封装我的类成员,例如在Java中吗? 每当我创建类的属性时,我应该将其设为私有并提供getter / setter吗? 或者有些情况我应该公开他们? 如果是这样,这些情况的例子是什么?

  2. 在我看来,键入注释,如String,int等,增加了代码的可读性。 它们作为正在阅读/使用我的代码的其他开发人员的文档。 程序员现在不应该考虑在这个变量中存储什么类型的值。 那么,在声明变量时需要使用var关键字的情况又是什么?

梅德。

谢谢。

感谢您查看Dart!

无需封装类字段。 Dart为您创建隐式getter和setter。 如果您需要为该字段实际计算某些内容,则可以手动实现getter或setter。 额外奖励:这不会破坏您的API的消费者。

例:

class Person {
  int age;
}

之后,您想要计算年龄:

class Person {
  DateTime birthdate;

  int get age => new DateTime.now().difference(birthdate).inDays ~/ 365;
}

在这两种情况下,您都可以这样做:

print(person.age);

太酷了! API没有变化,也没有防御性的getter和setter(只需在需要时添加它们)。

您应该为代码的“表面区域”使用类型注释。 例如,对方法和函数签名使用类型注释。 对于变量类型非常明显的情况,您应该考虑使用var ,因为它更简洁,更易读。

例如:

String doCoolStuff(int bar) {
  var clearlyABool = true;
  return 'Hello world';
}

请注意,返回类型和bar参数是带注释的类型,但clearlyABool使用var因为我们使用bool初始化。

随意使用类型注释,它是程序员的选择。 轶事:dart2js源代码几乎无处不在使用类型注释。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM