编写高质量Dart程序
最后更新于:2022-04-02 05:54:42
>编写高质量的Dart正在针当前实践和Dart2在更新。如果你发现了一些没有[被发现的问题](https://github.com/dart-lang/site-www/labels/EffectiveDart),请提交bug。
>
在过去的几年中,我们已经编写了大量的Dart代码,并且了解了很多关于哪些代码有效,哪些代码无效。我们将与您分享这一点,以便您也可以编写一致的、健壮的、快速的代码。主要有两个主题:
* 一致的:当涉及到格式化和大小写时,关于哪个更好的争论是主观的,并且不可能解决。我们所知道的是保持一致在客观上是有帮助的。
如果两段代码看起来不一样,那是因为它们在某种意义上是不同的。当一些代码引人注目并引起您的注意时,它应该出于一个有用的原因这样做。
* 简洁的: Dart被设计的让我们感觉非常熟悉,因此它继承了许多与C,Java,JavaScript和其他语言相同的语句和表达式。 但我们创建了Dart,因为这些语言提供了很多改进的空间。 我们添加了一系列功能,从字符串插值到初始化形式,以帮助您更简单,更轻松地表达您的意图。
如果有多种表达方式,你应该选择最简洁的一种。这不是说你像Code golf(一种娱乐性的计算机编程竞赛)一样把所有代码都写在一行。我们的目标是经济有效的代码量而不是密集的代码。
## 指南
为了便于理解,我们将引导部分分成以下几个章节:
* 样式引导--这定义了布局和组织代码的规则,或者至少是darfmt不为您处理的部分。样式指南还指定了标识符的格式化方式:驼峰法、下换线规则等。
* 文档引导--这将告诉你所有你需要知道的关于注释内部的信息。文档注释和普通的代码注释。
* 使用引导--这将教你如何充分利用语言特性来实现行为。如果它在一个语句或表达式中,它就在这里。
* 设计引导--这是最软的指南,但却是最广泛的。它涵盖了关于为库设计一致的、可用的api的知识。如果它在类型签名或声明中,这个就会跳过它。
## 如何阅读指南
每个指南被分成几个部分。部分包含指南列表。每条指南都以以下一句话开头:
* 【规定】描述了应该始终遵循的实践规则。几乎没有理由抛开这些规定。
* 【禁忌】是相反的:说明了那些不被推荐的实践。但愿我们不要像其他语言一样有过多的这种禁忌中的问题发生,因为我们没有历史包袱。
* 【优先】是应该遵循的规则。然而,在某些情况下,如果不这样做可能是有意义的。只要你确保理解了在哪些地方应该忽略本指南以及为什么要忽略。
* 【避免】说明了我们尽量避免的一些做法,但是在一些罕见的情况下我们也可以这样去做。
* 【考虑】是一些你可以遵循也可以不遵循的一些实践建议,主要取决于环境、先例和你自己的偏好。
听起来就像你的鞋带系错了警察就会破门而入一样。其实情况没有那么糟糕,这里的大部分指南都是常识,我们都是通情达理的人。目标都是写出良好的,可读的,可维护的代码。
## 术语
* 【库成员】是顶级字段,getter,setter或者函数。基本上任何在顶层不是类型的东西。
* 【类成员】是类中声明的构造函数,字段,getter,setter,函数或操作符。类成员可以是实例、静态、抽象或具体的。
* 【成员】可以是库成员,也可以是类成员。
* 【变量】通常情况下,变量指的是顶级变量、参数和局部变量。它不包含静态或实例字段。
* 【类型】是任何命名类型声明:类、typedef或enum。
* 【属性】是顶级变量、getter(在类内部或顶层,实例或静态)、setter(same)或字段(实例或静态)。大致上是任何“类字段”的命名构造。
';