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

时间:2015-03-28 21:02:19

标签: dart

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

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

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

  3. 梅德。

    谢谢。

1 个答案:

答案 0 :(得分:7)

感谢您查看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源代码几乎无处不在使用类型注释。