编写可读性的代码

2016-04-19  本文已影响0人  TianZhu

命名

  1. 避免泛化词
    所有数据都叫 data -> PersonalInfo ? ImageContent ?
  2. 增加信息量
    带上单位 delay -> delayMS , size->sizeMB
    包含必要的解释 days->daysSinceLastUpdate
  3. 用的词要有效
    converToString -> toString
    有歧义的词
    result = filter(objects, "year"<="2016")
    filter是要保留select还是排除exclude
  4. 符合惯例
    约定俗成
    循环变量:i, j, k
    表示范围:[begin, end) [first, last]
    noSurprise! 只表达简单的操作、无副作用,成对的API参数含义一致

注释

  1. 不加没有价值的注释,如果变量名就可以说明,就不必要加注释
  2. 为常量加注释,为什么取这个值
  3. 解释Hack
  4. 解释可能出现的风险: 非线程安全

逻辑:表达式

  1. 变量与常量:变量在左,常量在右
    变量与变量:小于号原则,与数轴一致
  2. 临时变量+好的命名

if (lhs.min <= rhs.max && lhs.max<=rhs.min) {
operations
}
bool isOverlay = 表达式;
if (isOverlay) {
operations
}

结构:减少嵌套,善用空行

上一篇下一篇

猜你喜欢

热点阅读