编写可读性的代码
2016-04-19 本文已影响0人
TianZhu
命名
- 避免泛化词
所有数据都叫 data -> PersonalInfo ? ImageContent ? - 增加信息量
带上单位 delay -> delayMS , size->sizeMB
包含必要的解释 days->daysSinceLastUpdate - 用的词要有效
converToString -> toString
有歧义的词
result = filter(objects, "year"<="2016")
filter是要保留select还是排除exclude - 符合惯例
约定俗成
循环变量:i, j, k
表示范围:[begin, end) [first, last]
noSurprise! 只表达简单的操作、无副作用,成对的API参数含义一致
注释
- 不加没有价值的注释,如果变量名就可以说明,就不必要加注释
- 为常量加注释,为什么取这个值
- 解释Hack
- 解释可能出现的风险: 非线程安全
逻辑:表达式
- 变量与常量:变量在左,常量在右
变量与变量:小于号原则,与数轴一致 - 临时变量+好的命名
if (lhs.min <= rhs.max && lhs.max<=rhs.min) {
operations
}
bool isOverlay = 表达式;
if (isOverlay) {
operations
}