Contents

Effective Dart

在过去的几年中,我们编写了许多Dart代码,并从中学习了很多有效的方法和无效的方法. 我们正在与您分享此内容,因此您也可以编写一致,健壮,快速的代码. 有两个总体主题:

  1. 始终如一. 当涉及诸如格式和大小写之类的内容时,关于哪个更好的争论是主观的,无法解决. 我们所知道的是,保持一致在客观上是有帮助的.

    如果两段代码看起来不同,应该是因为他们在一些有意义的方式不同. 当一些代码脱颖而出并引起您的注意时,出于一个有用的原因,它应该这样做.

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

    如果有多种表达方式,通常应该选择最简洁的方式. 这并不是说您应该自己编写代码,将整个程序挤入一行. 目标是节省代码,而不要使代码密集 .

Dart分析器具有一个lint,可以帮助您编写良好,一致的代码. 如果存在可以帮助您遵循准则的短绒规则,则该准则链接到该规则. 这是一个例子:

短绒规则: prefer_collection_literals

有关启用Linter规则的帮助,请参阅用于自定义静态分析的文档.

The guides

我们将准则分为几个单独的页面,以方便消化:

  • Style Guide – This defines the rules for laying out and organizing code, or at least the parts that dartfmt doesn’t handle for you. The style guide also specifies how identifiers are formatted: camelCase, using_underscores, etc.

  • 文档指南 –告诉您注释中包含的所有信息. doc注释和常规代码注释.

  • 使用指南 –这将教您如何充分利用语言功能来实现行为. 如果在语句或表达式中,则在此处进行介绍.

  • 设计指南 –这是最软的指南,但范围最广. 它涵盖了我们为库设计一致,可用的API所学的知识. 如果在类型签名或声明中,则将其覆盖.

有关所有准则的链接,请参见摘要 .

How to read the guides

每个指南分为几部分. 本节包含准则列表. 每个准则都以以下单词之一开头:

  • DO准则描述了应始终遵循的做法. 几乎没有任何理由偏离它们.

  • 不要遵循准则:相反,事情从来都不是一个好主意. 希望我们没有其他语言那么多,因为我们的历史包less更少.

  • 优选准则是遵循的实践. 但是,在某些情况下,否则可能会有意义. 只要确保您了解在执行操作时忽略指南的全部含义即可.

  • AVOID准则是"优先"的双重选择:您不应该做的事情,但是在极少数情况下可能有充分理由的地方.

  • 注意事项准则是您可能会或可能不想遵循的做法,具体取决于情况,先例和您自己的喜好.

一些准则描述一个异常的规则适用. 当列出这些例外时,这些例外可能并不详尽-您可能仍需要对其他情况做出判断.

这听起来像是警察如果不正确绑好鞋带就会撞倒你的门. 事情还不错. 这里的大多数准则都是常识,我们都是有理智的人. 和往常一样,目标是编写美观,可读性和可维护性的代码.

Glossary

为了使指南保持简短,我们使用一些简短的术语来指代不同的Dart构造.

  • 库成员是顶级字段,getter,setter或函数. 基本上,任何不是类型的东西都在顶层.

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

  • 成员是库成员或类成员.

  • 通常使用的变量是指顶级变量,参数和局部变量. 它不包括静态或实例字段.

  • 类型是任何命名的类型声明:类,typedef或枚举.

  • 属性是顶层变量,getter(在类内部或顶层,实例或静态),setter(相同)或字段(实例或静态). 几乎任何"类似领域的"命名构造.

Summary of all rules

Usage

Libraries

Booleans

Strings

Collections

Functions

Parameters

Variables

Members

Constructors

错误处理

Asynchrony

Design

Names

Libraries

类和混合

Constructors

Members

Types

Parameters

Equality

by  ICOPY.SITE