前端译趣

代码重构之道

2018-07-30  本文已影响11人  linc2046

1.干净代码

重构的主要目的是为了消除技术债务,将复杂转换成干净代码和简单设计。

干净代码主要有下面几个特点:

这里不是聊超级复杂算法,糟糕的变量命名和冗余的类和方法,黄金数字,你能说到的这些都会让代码变得臃肿

并且很难理解。

每次你不得不在重复代码中变更代码时,你不得不在所有的实例中做同样的变化同步,最终会提高认知负担,减慢进度。

更少的代码意味着更少的维护量,更少的 bug。

代码是一种责任,要保持简短和简单。

当只有 95%的代码通过测试时,你的代码就不会干净。

测试覆盖率是零时,你的代码就有问题。

2.脏代码/技术债务

每个人一开始都会尽力编写优质代码。

没有一个程序员会有意编写脏代码搞砸项目。

但什么时候代码会变得不干净呢?

脏代码的技术债务比喻最早是 Ward Cunningham 提出。

如果你从银行贷款,会让你更快付款。

你付出额外的经费加速过程。

代码也是这样,为了加快进度完成新功能,不写测试,最后会逐渐的减慢进度,最终

编写所有的测试来偿还技术债务。

有时你的雇员不会理解随着技术债务的积累,技术债务也会有收益,降低开发的节奏。

这会让后续重构变得更加困难,因为故那里层不会重视重构的价值。

这会发生在项目组装成大型应用,而不是独立产品模块时。

这种场景中,项目中的任何变化将会影响其他部分。

团队开发会变得更加困难,因为很难分割每个成员的工作。

缺乏快速反馈鼓励快速但有风险的折中方案或替代技巧。

更加糟糕的场景中,生产环境会在没有预先测试的情况下集成和实施这些变化。

这会产生灾难性的后果,例如,某项修复会发送奇怪的测试邮件给数千计客户,更糟糕的是,导致整个数据库崩溃。

缺乏文档將降低新人熟悉项目的速度,如果有关键人员离开时,会加快项目停滞。

如公司缺乏完整的知识库,开发人员将会获得过时的项目过程信息。

当导师错误地培训初级开发者时,这种情况会恶化。

项目需求一直在变,有时部分代码会废弃成为累赘,必须重新设计以满足新需求。

另外一方面,项目开发者每天都在围绕废弃部分写新代码。因此,重构延期越长,未来需要重做的关联代码会更多。

当所有开发者都在同一个项目编写他们认为合适的代码时,就如同上个项目一样,就会缺乏相应的监控。

当开发者不知道如何编写合适的代码时会导致代码不完整。

3.何时重构

4.如何重构

重构应当通过一系列的变化,会逐步优化当前代码,保证程序正常工作。

5.代码味道

6.重构技巧

7.译者注

上一篇下一篇

猜你喜欢

热点阅读