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

2019-08-2120:00:17APP与小程序开发Comments4,549 views字数 1975阅读模式

目录规范与命名

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 中标识符有三种风格:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/15725.html

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

类型名使用大写驼峰

类,枚举,自定义类型和参数类型,应该使用大写驼峰,且不能使用分隔符。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/15725.html

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
复制代码

导入顺序

各部分内按字母顺序排序文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/15725.html

// 在其它导入之前导入 “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 格式化代码。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/15725.html

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

可读性研究表明,过长的文本不适合阅读,因为当你看到下一行开始的时候眼睛移动的距离过大。这就是为什么新闻和杂志使用多列的文本。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/15725.html

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

if (isWeekDay) {
  print('Bike to work!');
} else {
  print('Go dancing or read a book!');
}

// 有一个例外是:if 语句没有 else,符合条件只有一行,可以省略大括号。
if (arg == null) return defaultValue;

作者:YYDev
链接:https://juejin.im/post/5d5bd3ba6fb9a06af23876ea
来源:掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/15725.html

文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/15725.html
  • 本站内容整理自互联网,仅提供信息存储空间服务,以方便学习之用。如对文章、图片、字体等版权有疑问,请在下方留言,管理员看到后,将第一时间进行处理。
  • 转载请务必保留本文链接:https://www.cainiaoxueyuan.com/xcx/15725.html

Comment

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定