Flutter 代碼規范

命名規范

命名規范中包括了文件以及文件夾的命名規范,常量和變量的命名規范,類的命令規范。Dart 中只包含這三種命名標識。

AaBb 類規范,首字母大寫駝峰命名法,例如 IsClassName,常用于類的命名
aaBb 類規范,首字母小寫駝峰命名法,例如 isParameterName,常用于常量以及變量命名
aa_bb 類規范,小寫字母下劃線連接法,例如 is_a_flutter_file_name,常用于文件文件夾命名

注釋規范

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

單行注釋

單行注釋主要是 // 這類標示的注釋方法,這類注釋與其他各類語言使用的規范一致。單行注釋主要對于單行代碼邏輯進行解釋,為了避免過多注釋,主要是在一些理解較為復雜的代碼邏輯上進行注釋

多行注釋

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

多行注釋涉及類的注釋和函數的注釋。兩者在注釋方法上一致。首先是用一句話來解釋該類或者函數的作用,其次使用空行將注釋和詳細注釋進行分離,在空行后進行詳細的說明。如果是類,在詳細注釋中,補充該類作用,其次應該介紹返回出去的對象功能,或者該類的核心方法。如果是函數,則在詳細注釋中,補充函數中的參數以及返回的數據對象。

注釋文檔生成

根據代碼注釋內容,我們可以利用一個官方工具 dartdoc 命令
來將當前項目中的注釋轉化為文檔。該工具的執行命令在 Dart 執行命令的同一個目錄下

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

dartdoc

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

若報錯:

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

需要配置 FLUTTER_ROOT 環境變量,可查看 Mac 搭建 Flutter 開發環境

export FLUTTER_ROOT=你的 flutter 安裝目錄

庫引入規范

Dart 為了保持代碼的整潔,規范了 import 庫的順序。將 import 庫分為了幾個部分,每個部分使用空行分割。分為 dart 庫、package 庫和其他的未帶協議頭(例如下面中的 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 一樣,已經包含在 Dart SDK 中,因此可以直接運行如下命令檢查是否生效:

dartfmt -h

dartfmt

dartfmt 工具的規范包括了以下幾點:

使用空格而不是 tab;
在一個完整的代碼邏輯后面使用空行區分;
二元或者三元運算符之間使用空格;
在關鍵詞 , 和 ; 之后使用空格;
一元運算符后請勿使用空格;
在流控制關鍵詞,例如 for 和 while 后,使用空格區分;
在 ( [ { } ] ) 符號后請勿使用空格;
在 { 后前使用空格;
使用 . 操作符,從第二個 . 符號后每次都使用新的一行。

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

dartfmt -w --fix lib/

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

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

工具化

上面介紹了這些規范,在 Dart 中同樣存在和 eslint 一樣的工具 dartanalyzer
來保證代碼質量。

該工具 dartanalyzer 已經集成在 Dart SDK ,你只需要在 Dart 項目根目錄下新增 analysis_options.yaml 文件,然后在文件中按照規范填寫你需要執行的規則檢查即可,目前現有的檢查規則可以參考 Dart linter rules 規范

為了方便,我們可以使用現成已經配置好的規范模版,這里有兩個庫 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 不滿足我們的要求,我們再根據 Dart linter rules 規范,前往選擇自己需要的規范配置,修改下面的配置:

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 的基礎上又增加了一些對于樣式和文檔的規范,增加完成以上配置后,運行如下命令可進行檢查。

dartanalyzer lib

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

通過學習 Flutter 快學快用 24 講04 | 代碼規范:實踐開發 Flutter 編程代碼規范工具 進行整理記錄

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

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,505評論 6 533
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,556評論 3 418
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,463評論 0 376
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,009評論 1 312
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,778評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,218評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,281評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,436評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,969評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,795評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,993評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,537評論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,229評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,659評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,917評論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,687評論 3 392
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,990評論 2 374