127 lines
2.9 KiB
Markdown
127 lines
2.9 KiB
Markdown
![]() |
# 代码约定
|
|||
|
|
|||
|
#### 1.类文件名以大写驼峰开始,内部主类(class)保持与文件名一致,方便查询。
|
|||
|
|
|||
|
#### 2.每个类请标注注释 (特别是拼音缩写起名的类把拼音字母所对应的汉字请标注上)
|
|||
|
|
|||
|
```
|
|||
|
【例】
|
|||
|
//用于xxx的一个类
|
|||
|
class MyClass {
|
|||
|
}
|
|||
|
```
|
|||
|
|
|||
|
#### 3.如果是页面尽量用 xxPage命名,功能拥有复数页面的时候,其首页尽量用xxIndexPage命名。
|
|||
|
|
|||
|
```
|
|||
|
【例】
|
|||
|
HomePage //首页
|
|||
|
NewsIndexPage //新闻首页
|
|||
|
NewsInfoPage //新闻咨询页
|
|||
|
```
|
|||
|
|
|||
|
#### 4.变量命名
|
|||
|
|
|||
|
①布尔值请用can/is标记开头命名
|
|||
|
②int double 如不是width height count等能容易联想到的名字,尽量命名成xxxNum等容易联想的形式.
|
|||
|
③String型同理 如果不是name title lable等容易联想到的名字,尽量命名成xxxStr/xxxText等容易联想的名字。
|
|||
|
④类成员变量请用private(小写驼峰命名)
|
|||
|
|
|||
|
```
|
|||
|
【例】
|
|||
|
int count;
|
|||
|
var myPage;
|
|||
|
```
|
|||
|
|
|||
|
如是固定参数用,不会改变的变量请在初始化前使用final const开头以区分
|
|||
|
|
|||
|
|
|||
|
```
|
|||
|
【例】
|
|||
|
const Color clRed = Colors(0xFFFF0000);
|
|||
|
final List<String> pageValueList = ["第一","第二","第三"]
|
|||
|
```
|
|||
|
|
|||
|
#### 5.if文等逻辑表达式 判断条件如有两个表达式的时候 请将两个表达式分别用小括号引上
|
|||
|
|
|||
|
```
|
|||
|
【例】
|
|||
|
错误例: if ( a+1==b && b+2==c) {} ❌
|
|||
|
正确例: if ((a+1==b) && (b+2==c)) {} ✅
|
|||
|
|
|||
|
```
|
|||
|
|
|||
|
如更复杂三个及以上表达式的时候请整理各结果方便事后查阅
|
|||
|
|
|||
|
```
|
|||
|
【反例】
|
|||
|
if ((a=b) && (b=c) || (c=a)) {}
|
|||
|
```
|
|||
|
|
|||
|
```
|
|||
|
【推荐例】
|
|||
|
bool isAEqualB = (a==b);
|
|||
|
bool isBEqualC = (b==c);
|
|||
|
bool isAEqualC = (a==c);
|
|||
|
bool isResult = isAEqualB && isBEqualC && isAEqualC;
|
|||
|
if (isResult) {}
|
|||
|
```
|
|||
|
|
|||
|
#### 6.代码if/for嵌套花括号的层级不要太深(尽量控制在两层之内):
|
|||
|
|
|||
|
```
|
|||
|
【反例】
|
|||
|
if (isA) {
|
|||
|
if (isB) {
|
|||
|
if (isC) {
|
|||
|
处理1
|
|||
|
}
|
|||
|
}
|
|||
|
} else {
|
|||
|
处理2
|
|||
|
}
|
|||
|
```
|
|||
|
|
|||
|
```
|
|||
|
【正例】
|
|||
|
if (!isA) {
|
|||
|
处理2
|
|||
|
return
|
|||
|
}
|
|||
|
if (!isB) {
|
|||
|
return
|
|||
|
}
|
|||
|
if (isC) {
|
|||
|
处理1
|
|||
|
}
|
|||
|
```
|
|||
|
|
|||
|
#### 7.为防止bug,禁止浮点变量用“==”或“!=”与任何数字比较。
|
|||
|
【禁止用int和double不同变量做等于==”或“!=”判断】
|
|||
|
(会因为精度不同导致结果误差,如比较请同时转成int或者double,具体请百度)
|
|||
|
|
|||
|
#### 8.表示状态的迁移变化的变量 尽量使用enum
|
|||
|
|
|||
|
```
|
|||
|
【不推荐例】
|
|||
|
int currentPage = 1;
|
|||
|
changePage(int pageNum)
|
|||
|
```
|
|||
|
|
|||
|
```
|
|||
|
【推荐例】
|
|||
|
enum PageType {
|
|||
|
PAGE1,
|
|||
|
PAGE2
|
|||
|
}
|
|||
|
PageType currentPage = PageType.PAGE1;
|
|||
|
changePage(PageType pageType)
|
|||
|
```
|
|||
|
|
|||
|
#### 9.每个函数Widget函数的原则不建议超过40行.超过了请整理各要素和封装逻辑,以便维护。(防止行对齐都到屏幕外面去了)
|
|||
|
|
|||
|
#### 10.异步类方法/函数(async/Future<T>等)起名时候加定冠词do/run等方便识别.
|
|||
|
|
|||
|
#### 11.代码每个函数尽量控制到30行以内,超过30行请尝试封装重构
|
|||
|
|