• 项目实战整理 Flutter 代码与目录规范v1.0


    目录规范与命名

    Lib 
    ├──page 落地页     
    │   └──user 页面模块文件夹   
    │       └──login 页面落地页文件夹 
    │            └──user_login.dart => class UserLoginPage 后缀为page为落地页 唯一入口     
    │                   └──user_login_button.dart => class UserLoginButton 非公共部分页面子组件   
    ├──component 通用组件   
    │        └──Modal 
    │            └──alert.dart => class ModalAlertComponent  
    ├──store 数据集中管理 
    │    ├──index.dart 实例化Provider export model类
    │    ├──proto pb协议转换代码
    │    ├──service pb协议 yyp协议 等等转义成 dart方法
    │    ├──model
    │    │    ├──user_model.dart => class UserModel
    │    │    └──index.dart => export all models
    │    └──object
    │         └──user_object.dart => class UserObject
    ├──helper 公共方法   
    │    └──index.dart 常规方法、通用方法、全局方法可以用过这个入口export 避免重复引入、可以作用通过用方法入口
    ├──config 配置中心 
    │    ├──index.dart 配置变量与切换方法  
    └──router 路由 
         └──  页面映射配置、observe 方法导出
    复制代码

    标识符

    在 Dart 中标识符有三种风格:

    • 大写驼峰:每个单词的第一个字母大写,包括第一个单词。
    • 小写驼峰:每个单词的第一个字母大写,除了 第一个单词一直小写,即使第一个单词是缩写。
    • 小写加下划线:只使用小写字母,即使是缩写,然后使用下划线_分隔。

    类型名使用大写驼峰

    类,枚举,自定义类型和参数类型,应该使用大写驼峰,且不能使用分隔符。

    class SliderMenu {  }
    
    class HttpRequest {  }
    
    typedef bool Predicate<T>(T value);
    
    class Foo {
      const Foo([arg]);
    }
    
    @Foo(anArg)
    class A {  }
    
    @Foo()
    class B {  }
    
    // 如果注解类的构造函数没有参数,可以创建一个单独的小写驼峰常量。
    const foo = const Foo();
    
    @foo
    class C {  }
    复制代码

    库和源文件名使用小写加下划线

    library peg_parser.source_scanner;
    
    import 'file_system.dart';
    import 'slider_menu.dart';
    复制代码

    其它标识符使用小写驼峰

    var item;
    
    HttpRequest httpRequest;
    
    void align(bool clearItems) {
      // ...
    }
    复制代码

    推荐常量名使用小写驼峰

    const pi = 3.14;
    const defaultTimeout = 1000;
    final urlScheme = new RegExp('^([a-z]+):');
    
    class Dice {
      static final numberGenerator = new Random();
    }
    复制代码

    超过两个字母的首字母缩略词以及缩写词,应该大写

    HttpConnectionInfo
    uiHandler
    IOStream
    HttpRequest
    Id
    DB
    复制代码

    导入顺序

    各部分内按字母顺序排序

    // 在其它导入之前导入 “dart:”
    import 'dart:async';
    import 'dart:html';
    // 在相对导入之前导入 “package:”
    import 'package:bar/bar.dart';
    import 'package:foo/foo.dart';
    // 在其它导入前导入第三方 “package:”
    import 'package:my_package/util.dart';
    //
    import 'util.dart';
    // 在所有导入之后的单独部分指定导出
    export 'util.dart';
    复制代码

    dartfmt 格式化

    官方使用 dartfmt 格式化代码。

    避免一行的长度超过 80 个字符

    可读性研究表明,过长的文本不适合阅读,因为当你看到下一行开始的时候眼睛移动的距离过大。这就是为什么新闻和杂志使用多列的文本。

    对所有流程控制结构使用大括号

    if (isWeekDay) {
      print('Bike to work!');
    } else {
      print('Go dancing or read a book!');
    }
    
    // 有一个例外是:if 语句没有 else,符合条件只有一行,可以省略大括号。
    if (arg == null) return defaultValue;
  • 相关阅读:
    [zz]redhat6.0无法识别ntfs分区的解决方法
    使用ftp搭建yum源问题解决
    [zz]搭建centos6.0本地yum源(32位)
    JAVA传统线程技术
    JAVA判断字符串是否为数字
    java之异常
    随便记两笔Java中的反射
    【转】单例模式完全解析
    java.lang.Enum
    文件搜索
  • 原文地址:https://www.cnblogs.com/liuys635/p/14659860.html
Copyright © 2020-2023  润新知