内容

有效 Dart

在过去的几年里,我们编写了大量的 Dart 代码,并了解了很多关于什么有效以及什么无效的知识。我们与您分享这些信息,以便您也可以编写一致、健壮、快速的代码。有两个主要的主题

  1. 保持一致。 在格式和大小写等方面,关于哪种更好是主观的,无法解决。我们所知道的是,保持一致 绝对有用。

    如果两段代码看起来不同,应该是因为它们在某种有意义的方式上是不同的。当一段代码脱颖而出并引起你的注意时,它应该出于有用的原因。

  2. 简洁。 Dart 的设计是为了熟悉,因此它继承了 C、Java、JavaScript 和其他语言中许多相同的语句和表达式。但是我们创建 Dart 是因为这些语言提供的功能还有很大的改进空间。我们添加了许多功能,从字符串插值到初始化形式参数,以帮助您更简单、更轻松地表达您的意图。

    如果有多种方法可以表达某件事,你通常应该选择最简洁的一种。这并不是说你应该代码高尔夫将整个程序压缩成一行。目标是经济的代码,而不是密集的代码。

指南

#

我们将指南分为几个独立的页面,以便于消化

  • 样式指南 – 这定义了代码布局和组织的规则,或者至少定义了 dart format 未为你处理的部分。样式指南还指定了标识符的格式:camelCaseusing_underscores 等。

  • 文档指南 – 这告诉了你有关注释中包含内容的所有信息。包括文档注释和普通代码注释。

  • 用法指南 – 这教你如何最佳地利用语言特性来实现行为。如果它在语句或表达式中,那么它都会在这里涵盖。

  • 设计指南 – 这是最柔和的指南,但也是范围最广的指南。它涵盖了我们在设计一致、易用的库 API 时所学到的经验教训。如果它在类型签名或声明中,那么这将会涵盖它。

有关所有指南的链接,请参阅摘要

如何阅读指南

#

每个指南都分为几个部分。部分包含一系列指南。每个指南都以以下词语之一开头

  • DO 指南描述了应该始终遵循的做法。几乎没有正当理由偏离它们。

  • DON'T 指南与之相反:几乎从来都不是好主意的事情。希望我们没有像其他语言那样多的这种指南,因为我们有更少的历史包袱。

  • PREFER 指南是你应该遵循的做法。但是,在某些情况下,可能也有其他做法更合理。当你这样做的时候,请确保你完全了解忽略该指南的全部影响。

  • AVOID 指南是 "prefer" 的对立:你不应该做的事情,但在极少数情况下可能会有充分的理由这样做。

  • CONSIDER 指南是你在某些情况下可能想要遵循也可能不想遵循的做法,具体取决于情况、先例和你的个人偏好。

有些指南描述了该规则不适用例外情况。当列出时,例外情况可能并不详尽—你可能仍然需要在其他情况下使用你的判断。

这听起来像是如果你没有系好鞋带,警察就会破门而入。事情并没有那么糟糕。这里的大多数指南都是常识,我们都是理智的人。目标,一如既往,是编写美观、可读、易于维护的代码。

Dart 分析器提供了一个 linter 来帮助你编写符合这些指南和其他指南的良好、一致的代码。如果存在一个或多个linter 规则可以帮助你遵循某个指南,那么该指南会链接到这些规则。链接使用以下格式

Linter 规则:unnecessary_getters_setters

要了解如何使用 linter,请参阅启用 linter 规则linter 规则列表。

术语表

#

为了使指南简明扼要,我们使用了一些简写术语来指代不同的 Dart 结构。

  • 库成员是顶级字段、getter、setter 或函数。基本上,顶级的所有内容,除了类型。

  • 类成员是在类内声明的构造函数、字段、getter、setter、函数或运算符。类成员可以是实例或静态的、抽象的或具体的。

  • 成员是库成员或类成员。

  • 变量,当一般使用时,指的是顶级变量、参数和局部变量。它不包括静态或实例字段。

  • 类型是任何命名的类型声明:类、类型定义或枚举。

  • 属性是顶级变量、getter(在类内或顶级,实例或静态)、setter(相同)或字段(实例或静态)。大致上任何 "字段类" 命名的结构。

所有规则摘要

#

用法

#

字符串

集合

函数

变量

成员

构造函数

错误处理

异步

设计

#

名称

类和 mixin

构造函数

成员

类型

参数

相等