命名規范
命名規范中包括了文件以及文件夾的命名規范,常量和變量的命名規范,類的命令規范。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 規范。
為了方便,我們可以使用現成已經配置好的規范模版,這里有兩個庫 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
不滿足我們的要求,我們再根據 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 編程代碼規范工具
進行整理記錄