一、为何重构
1、重构改进软件设计
开发过程中,有时候急于完成任务,代码结构上缺少设计,可复用可扩展性不高。如果没有重构,代码设计会越来越糟糕,重构是改进代码结构的最好工具。
2、重构使软件更容易理解
对于一个长期维护的软件,代码的可读性非常重要。
同一个功能点,同一段代码可能在不同时期会由不同人来维护,如果代码很难读懂,对于维护人来说是件很痛苦的事情。
重构可以使代码结构清晰,逻辑之间相对独立,层次分明,随着代码的不断演变,新功能新需求越来越多,但是代码不会显得很复杂而不能维护。
3、重构帮助找到bug
重构使软件设计清晰、代码更容易理解,使得检查代码发现bug的难度大大降低。
4、重构提高编程速度
拥有良好的设计才可能做到快速开发;恶劣的设计让调试、添加新功能都很困难,理解一段代码都要花费很长时间。所以重构对开发效率有很大帮助。
二、何时重构
1、三次法则
“事不过三,三则重构”。在开发过程中,经常遇到同一段逻辑在多处被用到,这种情况就要考虑重构,减少代码冗余度,重构后再做同样的逻辑编码时,效率也会大大提高。
2、添加功能时重构
添加新功能的时候,如果有充足的时间,先做设计再动手,好的设计对后续开发也会有帮助。
3、修补错误时重构
修改bug的时候,如果发现代码很难调试、很难理解,说明代码设计得不好,bug产生多半也是因为代码过度复杂造成的。
4、复审代码时重构
自己写的代码有时很难发现问题,有时为了追求短时间内完成代码,而采用了简单却糟糕的实现方法,这些在别人review的时候更容易被发现。所以,
代码review是检查代码的绝佳方法。
三、何时不该重构
1、重构的前提是,代码在大部分情况下能够正常工作;如果代码根本不能稳定工作,应该考虑重写,而不是重构。
2、如果项目接近最后期限,尽量避免重构,带来项目延期或更大的损失。