最近一直在搞重构。
目前又再新重构一个小工具。
因为工具功能比较简单,但是需求不太明确,所以之前写代码的时候有点随意,现在写完了,感觉代码很乱。
也因为现在对这个小工具比较熟悉了,觉得是时候重构一发了。
因为重构,我也正在看《重构,改善既有代码的设计》一书。实践一下我看了几章的感悟和这几年的经验。
我的重构步骤:
一:看和想,然后做标记。
1.梳理流程。先把自己的项目的几个数据入口整理出来,然后数据处理怎么提取公共类,怎么定义接口,
大致写出来。然后看看每步节点处是否需要接口处理。需要怎么处理。然后看整个项目可以分成几个模块。
2. 然而在想流程的时候,你也许还会有很多疑问,比如当初设计这个项目的人问什么这里要这么做?那么
你一定要解决这些疑问。因为,你要完全了解这些业务功能才能使你更加自如的处理接下来的重构。
所以把你的疑问列出来,然后搞明白。(重要)
3. 查看之前代码。
首先看看每个类的位置是否放在该放的地方,或者是否需要创建新的地方。然后查看那些地方的类是不必要的。
还有那些类的存在不单纯。然后想想怎么处理好每个类的关系,怎么让一个类单纯。然后查看哪些方法是多余的,
那些代码是重复的。哪些放啊需要定义一个接口,规范一下步骤。那些方法不单纯,需要拆分一下代码(分成两个或者几个类)。
二:测试部分。
修改之前你一定已经写了一版测试。在修改之前一定要重新看一下你的集成测试。因为你的每一
步修改,都有可能导致问题。当然测试也不是一开始就知道测试什么。但是当你流程梳理明白之后,你会发现,
有哪些地方,需要写单元测试。哪些地方可以测试几种情况,哪些地方需要集成测试重新覆盖新的方法。然后
配合后边你的修改,一键测试,也许是一个不错的体验。
三:移动位置,根据一,知道那些类放置的位置不正确。移动到对应的位置。整理好之后发现一切一目了然。
四:修改代码。位置都清楚了,那么哪些要修改就很明显了
1.位置知道了,那么放在那里的类的作用相信你已经很明白,哪些类或者接口是不必要的了,然后你要做的就
是删除不必要的类接口,处理好对应类之间的关系。让这些类单纯起来。
2.拆分功能复杂的类,提取方法,优化代码。
3.处理那些可以提取出来的方法,该创建父类的创建父类。该定义接口规范的定义接口规范。
看看业务分工是否明确,代码逻辑是否清晰,后来的人能否一看就明白。
最后修改测试,保证集成测试覆盖所有步骤和方法。然后测试你能知道的所有情况。
最后,看看你的代码,你一定内心美滋滋的想夸奖自己。然后,我觉得重构很有必要,特别是越大的项目。重构,高处
思考,纵观全局,一览众山小。然后从小处修改,一步一脚印(一测试)。当你完成的时候,你一定会觉得你,很,牛,逼。