在過去的幾年裏,咱們已經編寫了大量的Dart代碼,而且積累了如何開發出高效Dart代碼經驗。咱們正在與您分享這一點,所以您也能夠編寫一致,強大,快速的代碼。有兩個整體主題:git
始終如一。當談到格式和語句時,關於哪一個更好的論點是主觀的,無解的。咱們所知道的是,保持一致是客觀有益的。若是兩段代碼看起來不一樣,那應該是由於它們以某種有意義的方式不一樣。當一些代碼突出並引發你的注意時,它應該這樣作是有用的。github
簡潔的。 Dart的設計很是熟悉,所以它繼承了許多與C,Java,JavaScript和其餘語言相同的語句和表達式。但咱們建立了Dart,由於這些語言提供了不少改進的空間。咱們添加了一系列功能,從字符串插值到初始化形式,以幫助您更簡單,更輕鬆地表達您的意圖。 若是有多種說法,你一般應該選擇最簡潔的方法。ide
咱們將指導方針分紅幾個單獨的頁面以便於理解:函數
每一個指引分爲一些章節。每一個章節包含一系列指引。每一個指引都以如下一個詞開頭:佈局
DO 準則描述了應始終遵循的作法。你沒有理由偏離它們。ui
DON'T 不該該作的事。但願咱們沒有其餘語言那麼多,由於咱們的歷史包袱較少。設計
PREFER 您應遵循的作法。繼承
AVOID 是「PREFER」的雙重指引:你不該該作的事情,但在極少數狀況下可能有充分理由去作。ip
CONSIDER 凡事沒必要墨守成規,具體案例具體分析。開發
爲了保持簡潔,咱們使用一些術語來指代不一樣的Dart結構。
library member 庫成員是頂級字段,getter,setter或函數。基本上,頂級的任何東西都不是一種類型。
class member 類成員是在類中聲明的構造函數,字段,getter,setter,函數或運算符。類成員能夠是實例或靜態,抽象或具體。
member 庫成員或類成員。
variable 變量是指頂級變量,參數和局部變量。它不包括靜態或實例字段。
type 類型是任何命名的類型聲明:class,typedef或enum。
property 屬性是頂級變量,getter(在類內或頂層,實例或靜態),setter(相同)或字段(實例或靜態)。大體上任何「字段式」命名構造。