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

Dmi*_*pka 5 dart

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

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

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

梅德.

谢谢.

Set*_*add 8

感谢您查看Dart!

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

例:

class Person {
  int age;
}
Run Code Online (Sandbox Code Playgroud)

之后,您想要计算年龄:

class Person {
  DateTime birthdate;

  int get age => new DateTime.now().difference(birthdate).inDays ~/ 365;
}
Run Code Online (Sandbox Code Playgroud)

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

print(person.age);
Run Code Online (Sandbox Code Playgroud)

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

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

例如:

String doCoolStuff(int bar) {
  var clearlyABool = true;
  return 'Hello world';
}
Run Code Online (Sandbox Code Playgroud)

请注意,返回类型和bar参数是注释类型,但是因为我们使用a初始化,所以是clearlyABool使用.varbool

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