扫码阅读
手机扫码阅读

如何提升代码质量

226 2023-08-22

好的代码都有一些共同的特征,如可读性、较少的方法行数、高内聚低耦合、职责单一。但这只是一个结果,作为一个工程师,我们应该如何做到好的代码质量呢。

即使对于一流的程序员,高质量的代码大多也不是一蹴而就的(不排除少数天赋异禀)。在写代码的过程中,Martin Fowler说我们有两顶帽子:实现、重构。我们开发中先戴上实现的帽子,在实现的过程中,我们只考虑如何实现功能。当实现完成后,我们戴上重构的帽子,我们寻找代码中的坏味道,如过长的函数、不清晰的命名等等(详见代码的24个坏味道),然后对代码进行重构,直到代码的坏味道消失,这时候高质量的代码就涌现了出来。因此可以说,好的代码是重构出来的。

在代码重构过程中,很可能会引入新的Bug。那么如何保证重构的质量和效率呢?答案是单元测试。如果我们的代码有完整的单元测试覆盖,那么我们在重构的时候就不必担心因为重构引入新的Bug。每次重构一部分代码,我们都跑一下单元测试,确保我们没有破坏原有的逻辑。如果测试跑不过,回滚或者修改代码让它通过。

良好的单元测试,也可以帮助驱动你的代码的接口更加合理。我看到很多同学在拿到任务后,一开始无从下手,不知道接口应该如何设计。如果你从测试开始写,那么就给了你一个从外部审视代码的角度,从这个角度编写接口会比较容易。这就引入了另外一个实践——TDD(测试驱动开发)。

单元测试是为了测试业务逻辑,为了更好地编写单元测试,我们需要把业务逻辑和实现细节拆开。实现细节包括但不限于数据库、外部接口、IO、框架等。很多人觉得单元测试很难,就是因为无法隔离这些实现。要隔离这些实现,目前的做法是领域驱动开发DDD,编写仅仅含有业务逻辑的领域模块,通过接口实现对外部细节的操作。这样我们就能很方便的编写单元测试来测试业务逻辑。

总结:通过TDD驱动DDD的开发,通过重构提高领域中业务代码的质量,是代码质量提升的有效途径。

原文链接: http://mp.weixin.qq.com/s?__biz=MzUzMzkxMjE3NQ==&mid=2247483711&idx=1&sn=63199aae54d715cefd2d4c5ba600f20e&chksm=fa9d8e3fcdea0729a91f2f3edce932d996a1f710cbfb257eacff56075480790015e4290d91c3#rd