首先,附上链接:https://dart.dev/guides/language/effective-dart/style。
用Flutter写了一个项目,也迭代了一个版本,代码评审也开了两次,虽说还是不够完善,但是可以慢慢来,慢慢总结、慢慢优化!
一、标识符
Dart中有三种标识符:
UpperCamelCase:大写名字,每个单词的第一个字母要大写,包括第一个。
lowerCamelCase:小写名称,每个单词的第一个字母要大写,除了第一个是小写的,即使它是首字母缩略词。
lowercase_with_underscores:仅使用小写字母,首字母缩写,并使用_分隔单词。
1、类,枚举类型,typedef和类型参数应将每个单词的首字母大写(包括第一个单词),并且不使用分隔符。
class SliderMenu { ... }
class HttpRequest { ... }
typedef Predicate<T> = bool Function(T value);
包括打算在元数据注释中使用的类
class Foo {
const Foo([arg]);
}
@Foo(anArg)
class A { ... }
@Foo()
class B { ... }
如果注释类的构造函数不带任何参数,则可能要为其创建一个单独的lowerCamelCase常量。
const foo = Foo();
@foo
class C { ... }
与类型一样,扩展名应大写每个单词的首字母(包括第一个单词),并且不使用分隔符。
extension MyFancyList<T> on List<T> { ... }
extension SmartIterable<T> on Iterable<T> { ... }
2、(lowercase_with_underscores)请使用来命名库,程序包,目录和源文件:一些文件系统不区分大小写,因此许多项目要求文件名全部为小写。使用分隔符允许名称仍以该形式可读。使用下划线作为分隔符可确保名称仍然是有效的Dart标识符,如果该语言以后支持符号导入,则可能会有所帮助。
3、(lowerCamelCase)类成员,顶级定义,变量,参数和命名参数应将除第一个单词以外的每个单词的首字母大写,并且不使用分隔符。
4、缩写词和缩写词的首字母大写要长于单词之类的两个字母。
大写的首字母缩写词可能很难读懂,多个相邻的首字母缩写词可能导致名称不明确。例如,给定一个以开头的名称HTTPSFTP,则无法分辨它是指HTTPS FTP还是HTTP SFTP。
为避免这种情况,首字母缩写词和缩写词都像普通单词一样大写。
例外: IO(输入/输出)之类的两个字母的首字母大写:IO。另一方面,ID(标识)之类的两个字母的缩写仍像常规单词一样大写Id。
5、不要使用前缀字母。
BCPL时代出现了匈牙利表示法和其他方案,当时编译器没有做很多事情来帮助您理解代码。由于Dart可以告诉您声明的类型,范围,可变性和其他属性,因此没有理由在标识符名称中编码这些属性。