Flutter开发规范

作者: buhuiming | 来源:发表于2019-11-14 14:39 被阅读0次

    一、开发工具,SDK版本要求

    1、flutter可以说是Google的亲儿子,强烈推荐使用Android Studio,我们表面上比较不出和其他开发工具的差异,然而flutter,dart,甚至flushia,是Google重新发力打造的新生态工具,所以无论是从编译、打包,还是后续插件化升级,都有一定的优势;
    2、统一使用最新版Android Studio(v3.5.1), jdk(1.8+), flutter(v1.9.1+hotfix.6), dart(v2.6.0),避免团队之间因版本不一致导致的报错;
    flutter sdk下载地址: https://flutter.dev/docs/get-started/install/windows
    dart sdk下载地址: https://dart.dev/tools/sdk


    二、目录规范

    image.png

    1、lib文件夹是flutter主要代码目录,通常不会直接在根目录下直接创建dart文件,而是会根据功能点、模块、属性等创建子文件夹,在相应子文件夹中创建相应dart文件,当然子文件下依然可以再创建文件夹,将目标文件所属角色细化;
    2、文件夹通常是小写单词,小驼峰法使用较少,不推荐使用下划线连接法;
    3、通常main(mian.dart程序入口)会直接创建在根目录下;
    4、Android代码目录(src/main/java/包名)基本上也是这个规则;

    三、命名规范

    1、大驼峰法:类名称,如MainPage;
    2、小驼峰法:包名、函数名,变量名、参数名;
    3、查看dart源码发现,源文件名都是小写英文加上下划线组成,如app_bar.dart;
    4、一般情况下,类名是源文件名的大驼峰写法,如源文件app_bar.dart,类名AppBar;源文件bottom_app_bar,类名BottomAppBar;
    5、不使用前缀字母,如不推荐使用mList,可以用list,或者更加详细的命名,如bookList;
    6、assets目录下的资源文件名,和源文件名命名规则一样;
    7、枚举类的元素,使用大写英文加下划线,如YEAR_MONTH_DAY;

    四、代码规范

    1、if else使用大括号,尽可能不省略;
    2、不要使用new;
    3、page页面中(StatelessWidget、StatefulWidget)尽量将每一层和每一个widget以单独函数形式调用,层次清晰分明(工具类封装的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、常用的颜色值和宽高值,使用统一相同含义值来赋值;
    6、实时处理报错(error)和警告(warning):Dart Analysis统计了所有报错和警告的具体信息;(好处:一则让代码程序更健壮,二则在dart sdk升级后,可避免报错);
    7、必要的简要的代码注释(不止是.dart文件,还包括pubspec.yaml);
    8、编码过程中习惯性使用“Reformat Code with dartfmt”;
    9、拒绝弱命名(如var a),拒绝硬编码(如if (a == 2)...);
    10、善用///[],"[]"内可以是类名、变量名,在引用中可以添加注释说明;
    11、适当的换行,函数体之间、语句过长等;

    五、其他

    1、尽量不使用第三方插件库(SDK),大多数SDK在功能点覆盖和适配方面存在很多的缺陷;逼不得已时选择flutter官方指定维护的sdk、知名度和活跃度高的sdk;
    2、创建项目时,包名采用反写域名命名规则,即com.xx.xxx.xxxx形式全部使用小写字母。一级包名为com,二级包名为xx(一般为公司或个人域名),三级包名根据应用进行命名,四级包名为功能模块名;
    3、如果一个bool类型"isShow"在不确定是否会为null的情况下(尤其在与原生双向交互中),避免"if(isShow)..."这种写法,正确写法"if(isShow == true)";
    4、注重dispose()方法中资源的释放;
    5、删除或注释掉assets下无效的资源及pubspec.yaml的声明。

    相关文章

      网友评论

        本文标题:Flutter开发规范

        本文链接:https://www.haomeiwen.com/subject/uejtictx.html