Flutter開發(fā)規(guī)范

一、開發(fā)工具,SDK版本要求

1、flutter可以說是Google的親兒子,強烈推薦使用Android Studio,我們表面上比較不出和其他開發(fā)工具的差異,然而flutter,dart,甚至flushia,是Google重新發(fā)力打造的新生態(tài)工具,所以無論是從編譯、打包,還是后續(xù)插件化升級,都有一定的優(yōu)勢;
2、統(tǒng)一使用最新版Android Studio(v3.5.1), jdk(1.8+), flutter(v1.9.1+hotfix.6), dart(v2.6.0),避免團隊之間因版本不一致導(dǎo)致的報錯;
flutter sdk下載地址: https://flutter.dev/docs/get-started/install/windows
dart sdk下載地址: https://dart.dev/tools/sdk


二、目錄規(guī)范

image.png

1、lib文件夾是flutter主要代碼目錄,通常不會直接在根目錄下直接創(chuàng)建dart文件,而是會根據(jù)功能點、模塊、屬性等創(chuàng)建子文件夾,在相應(yīng)子文件夾中創(chuàng)建相應(yīng)dart文件,當然子文件下依然可以再創(chuàng)建文件夾,將目標文件所屬角色細化;
2、文件夾通常是小寫單詞,小駝峰法使用較少,不推薦使用下劃線連接法;
3、通常main(mian.dart程序入口)會直接創(chuàng)建在根目錄下;
4、Android代碼目錄(src/main/java/包名)基本上也是這個規(guī)則;

三、命名規(guī)范

1、大駝峰法:類名稱,如MainPage;
2、小駝峰法:包名、函數(shù)名,變量名、參數(shù)名;
3、查看dart源碼發(fā)現(xiàn),源文件名都是小寫英文加上下劃線組成,如app_bar.dart;
4、一般情況下,類名是源文件名的大駝峰寫法,如源文件app_bar.dart,類名AppBar;源文件bottom_app_bar,類名BottomAppBar;
5、不使用前綴字母,如不推薦使用mList,可以用list,或者更加詳細的命名,如bookList;
6、assets目錄下的資源文件名,和源文件名命名規(guī)則一樣;
7、枚舉類的元素,使用大寫英文加下劃線,如YEAR_MONTH_DAY;

四、代碼規(guī)范

1、if else使用大括號,盡可能不省略;
2、不要使用new;
3、page頁面中(StatelessWidget、StatefulWidget)盡量將每一層和每一個widget以單獨函數(shù)形式調(diào)用,層次清晰分明(工具類封裝的Widget可例外);
4、封裝簡單常用的widget,注意使用@required、assert

  /*
  *  生成常用的AppBar
  */
  static Widget buildAppBar(BuildContext context, String text,
      {double fontSize: 18.0,
      double height: 50.0,
      double elevation: 0.5,
      Widget leading,
      bool centerTitle: false,
      List<Widget> actions,
      OnItemDoubleClick onItemDoubleClick}) {
    return PreferredSize(
        child: GestureDetector(
            onDoubleTap: () {
              if (null != onItemDoubleClick) {
                onItemDoubleClick(null);
              }
            },
            child: AppBar(
              elevation: elevation, //陰影
              centerTitle: centerTitle,
              title: Text(text, style: TextStyle(fontSize: fontSize)),
              leading: leading,
              actions: actions,
            )),
        preferredSize: Size.fromHeight(height));
  }

5、常用的顏色值和寬高值,使用統(tǒng)一相同含義值來賦值;
6、實時處理報錯(error)和警告(warning):Dart Analysis統(tǒng)計了所有報錯和警告的具體信息;(好處:一則讓代碼程序更健壯,二則在dart sdk升級后,可避免報錯);
7、必要的簡要的代碼注釋(不止是.dart文件,還包括pubspec.yaml);
8、編碼過程中習(xí)慣性使用“Reformat Code with dartfmt”;
9、拒絕弱命名(如var a),拒絕硬編碼(如if (a == 2)...);
10、善用///[],"[]"內(nèi)可以是類名、變量名,在引用中可以添加注釋說明;
11、適當?shù)膿Q行,函數(shù)體之間、語句過長等;

五、其他

1、盡量不使用第三方插件庫(SDK),大多數(shù)SDK在功能點覆蓋和適配方面存在很多的缺陷;逼不得已時選擇flutter官方指定維護的sdk、知名度和活躍度高的sdk;
2、創(chuàng)建項目時,包名采用反寫域名命名規(guī)則,即com.xx.xxx.xxxx形式全部使用小寫字母。一級包名為com,二級包名為xx(一般為公司或個人域名),三級包名根據(jù)應(yīng)用進行命名,四級包名為功能模塊名;
3、如果一個bool類型"isShow"在不確定是否會為null的情況下(尤其在與原生雙向交互中),避免"if(isShow)..."這種寫法,正確寫法"if(isShow == true)";
4、注重dispose()方法中資源的釋放;
5、刪除或注釋掉assets下無效的資源及pubspec.yaml的聲明。

最后編輯于
?著作權(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)容

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