命名規(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ī)范模版必指,這里有兩個庫 pedantic
和 effective_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ī)范工具
進行整理記錄