Contents

Effective Dart

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

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

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

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

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

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

短绒规则: prefer_collection_literals

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

The guides

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

  • 样式指南 -这定义了布局和组织代码的规则,或者至少定义了dartfmt无法为您处理的部分. 样式指南还指定了标识符的格式: camelCaseusing_underscores等.

  • 文档指南 –告诉您所有有关注释内容的知识. 文档注释和常规代码注释.

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

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

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

How to read the guides

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

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

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

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

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

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

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

This sounds like the police are going to beat down your door if you don’t have your laces tied correctly. Things aren’t that bad. Most of the guidelines here are common sense and we’re all reasonable people. The goal, as always, is nice, readable and maintainable code.

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