首先感谢异步社区, 有缘读到由异步社区发起的《重构 改善既有代码的设计 第2版 》。让在来聊聊我对《重构》的感情。在我开发的8年时间里Martin Fowler的《重构》从2015年开始就一直陪着我,是我工位上的一本常用的工具书,指导书。使我在技术上和思维上得到提升。每一次读都有不一样的感受。在每一次的系统代码根据公司业务需要更改的时候我就会想起Martin Fowler老师的《重构》。
Martin Fowler在1.3章节中说道“每当我要进行重构的时候,第一个步骤永远相同:那就是我得确保即将修改的代码拥有一组可靠的测试。而这些测试必不可少,因为尽管遵循重构手法可以使我避免绝大多数引入Bug情形。”
然后问自己,何谓重构?为何重构?何时重构?现在重构会给现在的系统造成的利弊?就像我去写一个功能的时候,刚开始没有去做封装,用到一个地方就要去写一次,我在好多地方用到了都要去写,当我抽取出来封装成函数,我在要用的地方直接去调取它,这样的重构帮我提高了编程速度和提高了代码的质量。但在重构的过程中我也是快乐与挑战,快乐是以后开发和读代码更加舒服,挑战是重构不是一件简单的事情,需要去做好各项准备因为像作者提到“重构过程中有一二两时间不可用”。
重构是很多价值的工具,但只有重构还不行。重构前,先检查自己是否有一套可靠的测试机制。这些测试必须有自我检验的能力,毕竟重构可能破坏掉一些东西,我们要靠测试帮助我们发现这些问题,不要因为测试无法捕捉所有bug就不写测试, 因为测试的确可以捕捉到大多数bug。不过,说来惭愧,我在写php项目的时候写测试用例写的比较少,但在Java项目上写的还可以。
所以我经过Martin Fowler的《重构》和自己的一点小总结,像函数过长、参数过多、类过大、修改一个小功能,要对多个类进行修改、switch语句等这样的我就考虑需要重构。当我在Review代码、修改Bug、增加新功能的时候来重构。而我最基本的重构方法是细化方法,更小颗粒度、方法移动到别的类、抽象出新的类、内部类。
我个人力荐的技术书籍之一Martin Fowler的《重构》,它可以说是我作为程序员进阶的秘籍,何况它是已经由时间证明过的重要著作《重构》的新版上市。
> 我来回应