01.dart代码风格规范

01.dart代码风格规范

UpperCamelCase 风格命名类型

Classes(类名)、 enums(枚举类型)、 typedefs(类型定义)、以及 type parameters(类型参数),带参注解,应该把每个单词的首字母都大写(包含第一个单词),不使用分隔符。

class SliderMenu { ... }enum Colors {yellow,red}typedef Predicate<T> = bool Function(T value);///带参注解首字母大写,无参小写class Foo {  const Foo([Object? arg]);}@Foo(anArg)class A { ... }

与类型命名一样,extensions扩展 的名称也应大写每个单词的首字母(包括第一个单词),并且不使用分隔符。

extension MyFancyList<T> on List<T> { ... }

lowercase_with_underscores 风格命名类型

一些文件系统不区分大小写,所以很多项目要求文件名必须是小写字母。使用分隔符这种形式可以保证命名的可读性。使用下划线作为分隔符可确保名称仍然是有效的Dart标识符,如果语言后续支持符号导入,这将会起到非常大的帮助。

library peg_parser.source_scanner;
import 'dart:math' as math;import 'package:angular_components/angular_components'        as angular_components;import 'package:js/js.dart' as js;

1.把 “dart:” 导入语句放到其他导入语句之前。2.把 “package:” 导入语句放到项目相关导入语句之前。3.把导出(export)语句作为一个单独的部分放到所有导入语句之后。排序:library > import'dart:' > import 'package:' > import 'util.dart' > export 'src/error.dart'4.按照字母顺序来排序每个部分中的语句。

import 'package:bar/bar.dart';import 'package:foo/foo.dart';import 'foo.dart';import 'foo/foo.dart';

lowerCamelCase 风格来命名其他的标识符

类成员、顶级定义、变量、参数以及命名参数等 除了第一个单词,每个单词首字母都应大写,并且不使用分隔符。

var count = 3;HttpRequest httpRequest;void align(bool clearItems) {  // ...}

在新的代码中,使用 lowerCamelCase 来命名常量,包括枚举的值。

const pi = 3.14;const defaultTimeout = 1000;final urlScheme = RegExp('^([a-z]+):');class Dice {  static final numberGenerator = Random();}

把超过两个字母的首字母大写缩略词和缩写词当做一般单词来对待。

例外情况 两个字母情况下,类似 IO (input/output) 这样的 缩略词 要全大写。另外,两个字母的 缩写词 比如 ID (identification) 与其他常规单词一样,首字母大写即可: Id

class HttpConnection {}class DBIOPort {}class TVVcr {}class MrRogers {}var httpRequest = ...var uiHandler = ...Id id;

对于未使用的回调参数,最好使用_,_ _等。

有时候回调函数的类型签名需要一个参数,但是回调实现不使用这个参数。在本例中,习惯上将未使用的参数命名为_。如果函数有多个未使用的参数,请使用额外的下划线以避免名称冲突:_ _ _等。

futureOfVoid.then((_,__,___) {  print('Operation complete.');});

不要使用前缀字母

在编译器无法帮助你了解自己代码的时, 匈牙利命名法 和其他方案出现在了 BCPL ,但是因为 Dart 可以提示你声明的类型,范围,可变性和其他属性,所以没有理由在标识符名称中对这些属性进行编码。

defaultTimeout  // X  kDdeaultTimeout

格式化

和其他大部分语言一样, Dart 忽略空格。但是,不会。具有一致的空格风格有助于帮助我们能够用编译器相同的方式理解代码。

格式化是一项繁琐的工作,尤其在重构过程中特别耗时。庆幸的是,你不必担心。我们提供了一个名为 dart format 的优秀的自动代码格式化程序,它可以为你完成格式化工作。我们有一些关于它适用的规则的 文档 , Dart 中任何官方的空格处理规则由 dart format 生成

对所有流控制结构使用花括号。这样可以避免 dangling else(else悬挂)的问题。

推荐阅读