dart/flutter 中的代碼規(guī)范

文章首發(fā)地址: http://www.itdecent.cn/p/047eb78dce53

前言

最近看qq群里發(fā)的很多代碼截圖,感覺命名規(guī)則/文件命名都不符合規(guī)范
很多朋友都是從其他語言轉(zhuǎn)向dart/flutter的,深感語言環(huán)境還需要大家共同去維護,建議還是規(guī)范化代碼,這樣所有人看著都會舒服
恰好dart語言官方有自己的代碼規(guī)范和相關(guān)的說明,在dartlang官網(wǎng)上,英文好的建議閱讀原文
連接地址 https://www.dartlang.org/guides/language/effective-dart/style

我這里僅粗略翻譯和加入一些自己的理解

圖片均來自于上述url對應(yīng)的頁面中
當前dart版本為2.0版本,日期為2018年08月22日
可能會在未來有改動,到時請以最新文檔為準

文檔中圖片的綠色部分為正例,右上角帶good標識
紅色是反例,右上角帶bad標識

標識方案

image.png

在dart有3種常規(guī)標識方案
第一個為大寫字母開頭的駝峰式 如 UserInterface 每個詞的首字母為大寫
第二個是小寫開頭的駝峰式,如testRun,第一個單詞是小寫,后續(xù)每個單詞首字母大寫
第三個是每個單詞均為小寫,以下劃線分隔,如user_response

總結(jié)

如果不想往下看具體的圖片和翻譯,直接看這里

文件名: 小寫+下劃線
類型名(類名,函數(shù)類型名):大寫開頭駝峰
變量名(包含const final 常量):使用小寫開頭駝峰, 項目有特殊要求 const可以使用大寫+下劃線的方式,如同java中一樣
導(dǎo)包as后的名稱為小寫+下劃線
不要用匈牙利命名法中的kXXXX 這樣的命名方式,應(yīng)該去掉k
超過兩位的英文縮寫一律按該單詞為普通小寫單詞處理,使用小寫

導(dǎo)包有順序要求,且每"部分"間空行分隔開,每部分內(nèi)按字母排序,按如下順序排序
dart sdk內(nèi)的庫
flutter內(nèi)的庫
第三方庫
自己的庫
相對路徑引用

先全部import再export,不要交替進行

使用dartfmt工具格式化dart文件代碼 dartfmt -w lib/ flutter可以用flutter format lib
單行字符建議不要超過80個
流程控制語句無論如何都使用花括號包裹,即使只有單行

格式化個人建議:

建議不要使用idea/as/vscode 的自動儲存格式化作為交付
因為idea/vs有自己的格式化工具,并不是使用的dartfmt,這樣會造成代碼交付格式不統(tǒng)一,寫代碼過程中可以使用以方便提高閱讀性,但每次代碼commit前建議使用 dartfmt -w lib/ 來格式化代碼,以便于項目代碼風(fēng)格的統(tǒng)一,flutter用戶使用 flutter format lib

類型名稱

image.png

適用于類名,注解名,typedef定義的函數(shù)名

這里有一個特例,當你的注解是一個const的常量時,使用@foo的方式作為注解

庫名稱,文件名用小寫+下劃線

image.png

使用小寫+下劃線方式命名library,文件名

原因如下:
某些文件系統(tǒng)不區(qū)分大小寫,因此許多項目要求文件名全部為小寫。使用分隔字符允許名稱仍以該形式可讀。使用下劃線作為分隔符可確保名稱仍然是有效的Dart標識符

導(dǎo)入時

image.png

當導(dǎo)入包時, 如果涉及到as, 一律使用小寫+下劃線方式

其他標識符

image.png

包含頂級成員,類成員,方法內(nèi)成員,參數(shù)名,命名參數(shù)名,一律使用小寫駝峰式

常量名稱

image.png

建議使用小寫駝峰式命名
但是你的項目中如果使用大寫+下劃線分割單詞的方式,則可以繼續(xù)使用這種方式
這里有個小說明:最初dart中采用的大寫+下劃線方式,但是后來有一些變量需要修改為非const變量,就需要修改為小寫駝峰式,后一律使用小寫駝峰式

縮寫相關(guān)

image.png

超過兩位的使用常規(guī)方式,兩位以內(nèi)使用大寫

在小寫駝峰式中,會出現(xiàn)一些約定俗成的縮寫,如http ftp io等,這些在英文詞法中都應(yīng)該是大寫,但大寫連續(xù)會破壞可讀性,如HTTPSFTP,你不知道是HTTPS FTP 還是 HTTP SFTP,所以采用如上圖綠色的方式來命名

不要使用前綴字母

image.png

匈牙利命名法中使用縮寫開頭的小寫駝峰命名法時,是因為當時編輯器無法很好幫助理解你的代碼,這樣命名法能夠很好的幫助你去理解代碼,現(xiàn)在dart語言中,編輯器可以很好的通過聲明等方式幫你理解你的代碼,故,不要使用前綴字母,如上圖綠色

規(guī)定代碼的順序


為了使文件保持整潔,我們有一個規(guī)定代碼順序。每個“部分”應(yīng)該用空行分隔。

image.png

保證dart的導(dǎo)入順序在所有其他包之前


image.png

保證帶包名的引用方式在相對路徑引用之前


image.png

首先import第三方的包
導(dǎo)入自己的包在后面一個單獨的部分


image.png

全部導(dǎo)入完畢后,再export 導(dǎo)出


image.png

每個部分按字母順序排序

格式化

image.png

使用dartfmt 程序來格式化代碼

image.png

單行長度為80字符

可讀性研究表明,長行文字難以閱讀,因為當你移動到下一行的開頭時,你的眼睛必須走得更遠。這就是報紙和雜志使用多列文本的原因。

如果你真的發(fā)現(xiàn)自己想要超過80個字符的行,我們的經(jīng)驗是你的代碼可能過于冗長而且可能更緊湊。主要罪犯通常是VeryLongCamelCaseClassNames。問問自己,“該類型名稱中的每個單詞是否告訴我一些關(guān)鍵或防止名稱沖突?”如果不是,請考慮省略它。

流程控制使用花括號

image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1、引言 數(shù)據(jù)庫設(shè)計過程中表、字段等的命名規(guī)范也算是設(shè)計規(guī)范的一部分,不過設(shè)計規(guī)范更多的是為了確保數(shù)據(jù)庫設(shè)計的合理...
    SnowflakeCloud閱讀 41,244評論 0 48
  • android文件眾多,根據(jù)名稱來辨別用途很重要,因此命名要規(guī)范 這篇文章可參考:Android 命名規(guī)范 (提高...
    Near尼爾閱讀 516評論 0 2
  • 參考地址 術(shù)語說明 在文檔中,除非另有說明: 術(shù)語 class 可表示一個普通類,枚舉類,接口或是annotati...
    該名字已被使用閱讀 930評論 2 1
  • 好話誰都會說,可是怎樣才說的真誠,怎樣才說的有力量,怎樣才說到對方的心里去卻是一種能力。 朋友圈從有了點贊功能以后...
    孫大貓閱讀 685評論 1 5
  • 很多時候,過于自信和對他人充滿信心時,“我以為”就出來了。 說說我朋友吧。 之前出現(xiàn)過的b君還記得嗎,我男友的好友...
    襲人歸_閱讀 776評論 0 0

友情鏈接更多精彩內(nèi)容