前言
为什么代码要整洁?
代码质量与整洁度成正比。有的团队在赶工期的时候,不注重代码的整洁,代码写的越来越糟糕,项目越来越混乱,生产力也跟着下降,那就必须找更多人来提高生产力,开发成本越来越高。
整洁的代码是怎样的?
清晰表达意图、消除重复、简单抽象、能通过测试。 换句话说:具有可读性、可重用性和可重构性
命名
- 名副其实:不使用缩写、不使用让人误解的名称,不要让人推测。
- 使用方便搜索的名称:避免硬编码,对数据用常量const记录。
- 类名应该是名词,方法名应该是动词。
- 多个变量属于同一类型的属性,那就他们整合成一个对象。同时省略多余的上下文。
其他:
-
不要写多余的废话,比如
theMessage
的the
可以删除。 -
统一术语。比如通知一词,不要一会在叫
notice
,一会叫announce
。 -
用读得通顺的词语。比如
getElementById
就比useIdToGetElement
好读。
函数(方法)
- 删除重复的代码,don't repeat yourself。很多地方可以注意dry,比如偷懒复制了某段代码、try...catch或条件语句写了重复的逻辑。
-
形参不超过三个,对测试函数也方便。多了就使用对象参数。
-
同时建议使用对象解构语法,有几个好处:
- 能清楚看到函数签名有哪些熟悉,
- 可以直接重新命名,
- 解构自带克隆,防止副作用,
- Linter检查到函数未使用的属性。
- 函数只做一件事,代码读起来更清晰,函数就能更好地组合、测试、重构。
-
自顶向下地书写函数,人们都是习惯自顶向下读代码,如,为了执行A,需要执行B,为了执行B,需要执行C。如果把A、B、C混在一个函数就很难读了。(看前一个的例子)。
-
不使用布尔值来作为参数,遇到这种情况时,一定可以拆分函数。
-
避免副作用。
- 常见就是陷阱就是对象之间共享了状态,使用了可变的数据类型,比如对象和数组。对于可变的数据类型,使用immutable等库来高效克隆。
- 避免用可变的全局变量。
- 副作用的缺点:出现不可预期的异常,比如用户对购物车下单后,网络差而不断重试请求,这时如果添加新商品到购物车,就会导致新增的商品也会到下单的请求中。
- 集中副作用:遇到不可避免的副作用时候,比如读写文件、上报日志,那就在一个地方集中处理副作用,不要在多个函数和类处理副作用。
- 其它注意的地方:
-
-
-