命名時(shí)應(yīng)該采取駝峰大小寫形式。
類、枚舉以及自定義類型應(yīng)該將每個(gè)單詞的首字母大寫(包括第一個(gè)詞),并且不能使用分隔符。
// good
class SliderMenu {
// ...
}
class HttpRequest {
// ...
}
typedef num Adder(num x, num y);
最好使用 lowerCamelCase
的形式為常量命名。
一般使用 lowerCamelCase
的形式為常量命名,枚舉類型中的值也應(yīng)該采用這種形式。
如果已有的代碼中采用全大寫的方式為常量命名,那么你可以打開大寫鎖定以保持代碼的一致性。
// good
const pi = 3.14;
const defaultTimeout = 1000;
final urlScheme = new RegExp('^([a-z]+):');
class Dice {
static final numberGenerator = new Random();
}
// bad
const PI = 3.14;
const kDefaultTimeout = 1000;
final URL_SCHEME = new RegExp('^([a-z]+):');
class Dice {
static final NUMBER_GENERATOR = new Random();
}
變動(dòng):在以前的代碼中我們建議常量命名使用全大寫。由于現(xiàn)在 const 從 final 中分離出來了,所以我們更改了命名的建議。當(dāng)然,也有人希望枚舉采用全大寫的形式,但是我們希望以本指南當(dāng)前的狀況為準(zhǔn)。
對(duì)于其他的標(biāo)識(shí)符,應(yīng)該使用 lowerCamelCase
的形式命名。
類的成員、全局定義、變量、參數(shù)以及命名的參數(shù)都應(yīng)該將除了第一個(gè)單詞以外的詞語(yǔ)大寫,并且不能使用分隔符。
//good
var item;
HttpRequest httpRequest;
align(clearItems) {
// ...
}
對(duì)于在元數(shù)據(jù)注解中使用的類,應(yīng)該采用 UpperCamelCase
的形式命名。
如果注解不需要任何參數(shù),你可能希望為其創(chuàng)建一個(gè) lowerCamelCase
形式的常量。
// good
@Foo(anArg)
class A { ... }
@Foo()
class B { ... }
@foo
class C { ... }
對(duì)于庫(kù)以及源文件,應(yīng)該采用 lowercase_with_underscores
的形式命名。
有些文件系統(tǒng)是不區(qū)分大小寫的,所以很多項(xiàng)目要求文件名應(yīng)該全部采用小寫的形式。這種情況下使用下劃線將文件名中的單詞分隔開,這樣就可以使文件名依舊具有可讀性。使用下劃線作為分隔符的名稱依舊是有效的 Dart 標(biāo)識(shí)符,如果以后 Dart 增添了對(duì)符號(hào)引用的支持,那么該特性將會(huì)非常有用。
好的例子:
slider_menu.dart
file_system.dart
library peg_parser
壞的例子:
SliderMenu.dart
filesystem.dart
library peg-parser
聲明庫(kù)的前綴的時(shí)候應(yīng)該采取 lowercase_with_underscores
的形式。
// good
import 'dart:math' as math;
import 'dart:json' as json;
import 'package:js/js.dart' as js;
import 'package:javascript_utils/javascript_utils.dart' as js_utils;
// bad
import 'dart:math' as Math;
import 'dart:json' as JSON;
import 'package:js/js.dart' as JS;
import 'package:javascript_utils/javascript_utils.dart' as jsUtils;
庫(kù)名稱的前面應(yīng)該加上包名并且用 .
來分隔路徑。
本指南將會(huì)幫助你避免因?yàn)閮蓚€(gè)庫(kù)有相同名稱而產(chǎn)生的警告。以下使我們推薦的一些規(guī)則:
.
來分隔庫(kù)所對(duì)應(yīng)的 Dart 文件所在路徑。如果是 lib
下的庫(kù),名稱中不用加入 lib。舉個(gè)例子,如果包名是 my_package
。下面是該包中其他庫(kù)文件的名稱:
// good
// In lib/my_package.dart
library my_package;
// In lib/other.dart
library my_package.other;
// In lib/foo/bar.dart
library my_package.foo.bar;
// In example/foo/bar.dart
library my_package.example.foo.bar;
// In lib/src/private.dart
library my_package.src.private;
對(duì)于超過兩個(gè)字母的首字母縮略詞以及縮寫詞,應(yīng)該大寫。
大寫首字母縮略詞可能有點(diǎn)難以閱讀,并且當(dāng)該詞由相鄰的多個(gè)單詞構(gòu)成時(shí)可能會(huì)導(dǎo)致歧義。像 HTTPSFTPConnection
這樣的名稱,你無法判斷它究竟是 HTTPS FTP 連接還是 HTTP SFTP 連接。
為了避免出現(xiàn)這種情況,首字母縮略詞以及縮寫詞還是像常規(guī)詞語(yǔ)那樣書寫,如果只有兩個(gè)字母的話,可以按照個(gè)人喜好命名。(兩個(gè)字母的縮寫詞,像 ID 以及 Mr. 也可以想常規(guī)詞語(yǔ)一樣書寫)
// good
HttpConnection
uiHandler
IOStream
HttpRequest
Id
id
Pt
DB
// bad
HTTPConnection
UiHandler
IoStream
HTTPRequest
ID
PT
Db
更多建議: