wzj-boot/doc/代码约定.md

127 lines
2.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 代码约定
#### 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行请尝试封装重构