Flutter 代碼規(guī)范

命名規(guī)范

命名規(guī)范中包括了文件以及文件夾的命名規(guī)范,常量和變量的命名規(guī)范痊土,類的命令規(guī)范被辑。Dart 中只包含這三種命名標識。

AaBb 類規(guī)范父能,首字母大寫駝峰命名法,例如 IsClassName净神,常用于類的命名何吝。
aaBb 類規(guī)范,首字母小寫駝峰命名法强挫,例如 isParameterName岔霸,常用于常量以及變量命名
aa_bb 類規(guī)范俯渤,小寫字母下劃線連接法呆细,例如 is_a_flutter_file_name,常用于文件文件夾命名八匠。

注釋規(guī)范

注釋的目的是生成我們需要的文檔絮爷,從而增強項目的可維護性。

單行注釋

單行注釋主要是 // 這類標示的注釋方法梨树,這類注釋與其他各類語言使用的規(guī)范一致坑夯。單行注釋主要對于單行代碼邏輯進行解釋,為了避免過多注釋抡四,主要是在一些理解較為復(fù)雜的代碼邏輯上進行注釋柜蜈。

多行注釋

在 Dart 中由于歷史原因(前后對多行注釋方式進行了修改)有兩種注釋方式,一種是 /// 指巡,另外一種則是 / **......* / 或者 /*......*/ 淑履,這兩種都可以使用。/**......*//*......*/ 這種塊級注釋方式在其他語言(比如 JavaScript )中是比較常用的藻雪,但是在 Dart 中我們更傾向于使用 ///

多行注釋涉及類的注釋和函數(shù)的注釋秘噪。兩者在注釋方法上一致。首先是用一句話來解釋該類或者函數(shù)的作用勉耀,其次使用空行將注釋和詳細注釋進行分離指煎,在空行后進行詳細的說明。如果是類便斥,在詳細注釋中至壤,補充該類作用,其次應(yīng)該介紹返回出去的對象功能枢纠,或者該類的核心方法像街。如果是函數(shù),則在詳細注釋中,補充函數(shù)中的參數(shù)以及返回的數(shù)據(jù)對象宅广。

注釋文檔生成

根據(jù)代碼注釋內(nèi)容,我們可以利用一個官方工具 dartdoc 命令
來將當前項目中的注釋轉(zhuǎn)化為文檔些举。該工具的執(zhí)行命令在 Dart 執(zhí)行命令的同一個目錄下

打開命令行工具進入當前項目跟狱,或者在 Android Studio 點擊界面上的 Terminal 打開命令行窗口,運行如下命令

dartdoc

運行結(jié)束后户魏,會在當前項目目錄生成一個 doc 的文件夾驶臊。在生成文件夾中,可以直接打開 doc/api/index.html 文件

若報錯:

dartdoc failed: Top level package requires Flutter but FLUTTER_ROOT environment variable not set.

需要配置 FLUTTER_ROOT 環(huán)境變量叼丑,可查看 Mac 搭建 Flutter 開發(fā)環(huán)境

export FLUTTER_ROOT=你的 flutter 安裝目錄

庫引入規(guī)范

Dart 為了保持代碼的整潔关翎,規(guī)范了 import 庫的順序。將 import 庫分為了幾個部分鸠信,每個部分使用空行分割纵寝。分為 dart 庫、package 庫和其他的未帶協(xié)議頭(例如下面中的 util.dart )的庫星立。其次相同部分按照模塊的首字母的順序來排列爽茴,例如下面的代碼示例:

import 'dart:developer';
import 'package:flutter/material.dart';
import 'package:two_you_friend/pages/home_page.dart';
import 'util.dart';

代碼美化

在 Dart 中同樣有和前端一樣的工具 pritter ,在 Dart 中叫作 dartfmt 绰垂,該工具和 dartdoc 一樣室奏,已經(jīng)包含在 Dart SDK 中,因此可以直接運行如下命令檢查是否生效:

dartfmt -h

dartfmt

dartfmt 工具的規(guī)范包括了以下幾點:

使用空格而不是 tab劲装;
在一個完整的代碼邏輯后面使用空行區(qū)分胧沫;
二元或者三元運算符之間使用空格;
在關(guān)鍵詞 , 和 ; 之后使用空格占业;
一元運算符后請勿使用空格绒怨;
在流控制關(guān)鍵詞,例如 for 和 while 后纺酸,使用空格區(qū)分窖逗;
在 ( [ { } ] ) 符號后請勿使用空格;
在 { 后前使用空格餐蔬;
使用 . 操作符碎紊,從第二個 . 符號后每次都使用新的一行。

打開命令行工具進入當前項目樊诺,或者在 Android Studio 點擊界面上的 Terminal 打開命令行窗口仗考,運行如下命令來格式化代碼規(guī)范

dartfmt -w --fix lib/

在 Android Studio 和 IntelliJ 中自動格式化代碼

要在當前源代碼窗口中自動格式化代碼,請右鍵單擊代碼窗口并選擇Reformat code with dartfmt词爬。你也可以通過快捷鍵來格式化代碼

工具化

上面介紹了這些規(guī)范秃嗜,在 Dart 中同樣存在和 eslint 一樣的工具 dartanalyzer
來保證代碼質(zhì)量。

該工具 dartanalyzer 已經(jīng)集成在 Dart SDK ,你只需要在 Dart 項目根目錄下新增 analysis_options.yaml 文件锅锨,然后在文件中按照規(guī)范填寫你需要執(zhí)行的規(guī)則檢查即可叽赊,目前現(xiàn)有的檢查規(guī)則可以參考 Dart linter rules 規(guī)范

為了方便必搞,我們可以使用現(xiàn)成已經(jīng)配置好的規(guī)范模版必指,這里有兩個庫 pedanticeffective_dart 可以參照使用。如果我們需要在項目中恕洲,使用它們兩者之一塔橡,可以在項目配置文件 pubspec.yaml 中新增如下兩行配置:

dependencies:
  flutter:
    sdk: flutter
  pedantic: ^1.8.0
  # The following adds the Cupertino Icons font to your application.
  # Use with the CupertinoIcons class for iOS style icons.
  cupertino_icons: ^0.1.2
dev_dependencies:
  flutter_test:
    sdk: flutter
  pedantic: ^1.8.0

配置完成以后,在當前項目路徑下運行 flutter pub upgrade 霜第。接下來在本地新增的 analysis_options.yaml 文件中新增如下配置:

include: package:pedantic/analysis_options.1.8.0.yaml

如果我們認為 pedantic 不滿足我們的要求葛家,我們再根據(jù) Dart linter rules 規(guī)范,前往選擇自己需要的規(guī)范配置泌类,修改下面的配置:

include: package:pedantic/analysis_options.1.8.0.yaml
analyzer:
  strong-mode:
    implicit-casts: false
linter:
  rules:
    # STYLE
    - camel_case_types
    - camel_case_extensions
    - file_names
    - non_constant_identifier_names
    - constant_identifier_names # prefer
    - directives_ordering
    - lines_longer_than_80_chars # avoid
    # DOCUMENTATION
    - package_api_docs # prefer
    - public_member_api_docs # prefer

我在 pedantic 的基礎(chǔ)上又增加了一些對于樣式和文檔的規(guī)范癞谒,增加完成以上配置后,運行如下命令可進行檢查末誓。

dartanalyzer lib

運行完成以后扯俱,你可以看到一些提示、警告或者報錯信息
有了以上工具化的校驗檢查喇澡,我們在做團隊代碼規(guī)范的時候迅栅,就非常簡單。

通過學(xué)習(xí) Flutter 快學(xué)快用 24 講04 | 代碼規(guī)范:實踐開發(fā) Flutter 編程代碼規(guī)范工具 進行整理記錄

參考資料:https://dart.cn/tools

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末晴玖,一起剝皮案震驚了整個濱河市读存,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌呕屎,老刑警劉巖让簿,帶你破解...
    沈念sama閱讀 216,496評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異秀睛,居然都是意外死亡尔当,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評論 3 392
  • 文/潘曉璐 我一進店門蹂安,熙熙樓的掌柜王于貴愁眉苦臉地迎上來椭迎,“玉大人,你說我怎么就攤上這事田盈⌒蠛牛” “怎么了?”我有些...
    開封第一講書人閱讀 162,632評論 0 353
  • 文/不壞的土叔 我叫張陵允瞧,是天一觀的道長简软。 經(jīng)常有香客問我蛮拔,道長,這世上最難降的妖魔是什么痹升? 我笑而不...
    開封第一講書人閱讀 58,180評論 1 292
  • 正文 為了忘掉前任建炫,我火速辦了婚禮,結(jié)果婚禮上疼蛾,老公的妹妹穿的比我還像新娘踱卵。我一直安慰自己,他們只是感情好据过,可當我...
    茶點故事閱讀 67,198評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著妒挎,像睡著了一般绳锅。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上酝掩,一...
    開封第一講書人閱讀 51,165評論 1 299
  • 那天鳞芙,我揣著相機與錄音,去河邊找鬼期虾。 笑死原朝,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的镶苞。 我是一名探鬼主播喳坠,決...
    沈念sama閱讀 40,052評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼茂蚓!你這毒婦竟也來了壕鹉?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,910評論 0 274
  • 序言:老撾萬榮一對情侶失蹤聋涨,失蹤者是張志新(化名)和其女友劉穎晾浴,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體牍白,經(jīng)...
    沈念sama閱讀 45,324評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡脊凰,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,542評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了茂腥。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片狸涌。...
    茶點故事閱讀 39,711評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖础芍,靈堂內(nèi)的尸體忽然破棺而出杈抢,到底是詐尸還是另有隱情,我是刑警寧澤仑性,帶...
    沈念sama閱讀 35,424評論 5 343
  • 正文 年R本政府宣布惶楼,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏歼捐。R本人自食惡果不足惜何陆,卻給世界環(huán)境...
    茶點故事閱讀 41,017評論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望豹储。 院中可真熱鬧贷盲,春花似錦、人聲如沸剥扣。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,668評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽钠怯。三九已至佳魔,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間晦炊,已是汗流浹背鞠鲜。 一陣腳步聲響...
    開封第一講書人閱讀 32,823評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留断国,地道東北人贤姆。 一個月前我還...
    沈念sama閱讀 47,722評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像稳衬,于是被迫代替她去往敵國和親霞捡。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,611評論 2 353