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