软件重构-笔记
代码重构就是在不改变软件系统外部行为的前提下,改善它的内部结构。
重构也就是在软件开发过程中,在需要的时候进行软件的结构与设计调整,包括代码整理。
与传统的先设计再写代码不同的是,重构是边开发边设计,设计与开发并进。
但并不是说重构就不需要做初始设计<一开始完全不进行设计而直接写代码>。
重构是在一定的初始设计基础上,在有了一个足够合理的软件结构的基础上进行的,在开发过程中发现不足时调整设计与代码。这里的初始设计不像传统设计那样刻求完美灵活可扩展等。
重构的特点非常适用于敏捷式开发。
重构的时机,什么时候需要重构?
1,发现重复代码。比如几个函数反复调用同一段几乎相同的代码,这时就应该把这段功能封装为函数供使用。两个类有相同的功能就应该重构这两个类。
2,发现类过大,函数过长。应该拆分类为细化的小类,拆分函数为功能单一的小函数。
3,发现有两个类有相似之处,应该考虑抽出共同点放到一个新类中。发现有两个功能相似的模块如字符串处理,看是不是团队间两个不同成员写的,这是由于团队缺乏沟通,各做各的,在两方不知情的情况下各自开发出了相同的功能模块,做了无用功。
4,发现一个类频繁的调用另一个类,就应该考虑是不是该将两个类合为一个类。发现两个类之间相互频繁的调用,就应该考虑是不是从两者中抽象另外一个类来消除两个类之间的耦合。
5,发现过长的调用链,一个类要经过好几步中间调用才调用到另一个类,就应该考虑设计是不是过度封装了,是不是有其它问题。
6,发现修改代码时牵一发而动全身,就应该考虑是不是设计的抽象度不够或代码功能过度分散导致的。
7,发现当前架构应对新需求时有些捉急,为了支持新功能必须做一些扭曲的处理或临时的苟且,这时就应该考虑扩展现有架构甚至要重新设计。
8,发现旧模块无人能懂,非常难理解,或旧模块问题很多,去修复它估计要花很大代价,这时就应该考虑是否放弃旧模块重新写一个。