Code review是帮助自己提升代码质量的关键一环。
Don’t repeat yourself (DRY)
**Copy-and-paste is an enormously tempting programming tool, and you should feel a frisson of danger run down your spine every time you use it **
重复代码增加维护成本和错误风险
应提取重复逻辑为函数/常量/数据结构
// Bad: 重复计算月份天数
// Good: 使用数组存储月份长度
const monthLengths = [0, 31, 28, 31, 30, ...];
Comments
-
一种关键注释是规范,出现在函数上方或类上方,并记录函数或类的行为。
-
通常最好将代码划分为段落、具有重点用途的行组,并在每个段落以注释作为主题句开始,解释该目的:
// prepare the rocket
...
...
...
// launch the rocket
...
...
...
// enter orbit
...
...
避免魔数
应使用命名常量或枚举
const FEBRUARY = 2;
const DAYS_IN_JANUARY = 31;
变量单一职责
不要重复使用参数,也不要重复使用变量。变量在编程中并不是稀缺资源
尤其函数参数,通常应保持未修改状态。(这对于为变更做好准备至关重要 —— 未来,函数的其他部分可能需要了解该函数的原始参数是什么,因此在计算过程中不应将其覆盖。)
尽可能为更多变量使用const
是个好主意,因为该关键字表明变量不应被重新赋值,而 TypeScript 编译器会对其进行静态检查。遗憾的是,TypeScript 目前(尚未)支持将函数参数声明为const
,以防止其在函数体内被重新赋值。
命名规范
- 变量名:名词短语(
secondsPerDay
) - 函数名:动词短语(
isLeapYear
) - 避免缩写:
message
而非msg
- 遵循语言惯例:TypeScript 使用
camelCase
避免全局变量
难以追踪修改,导致不可预测行为
改进:使用参数传递或局部变量,常量用 const