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



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

  1. 我是否应该像以前那样封装类成员,例如用Java?每当我创建类的属性时,我是否应该将其设为私有并提供getters/ssetter?或者在某些情况下我应该把它们公开?如果是,这些情况的例子有哪些?

  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源代码几乎处处使用类型注释。

最新更新