好了,前面所有的都是很简单的例子,现在开始的是大型重构。
对于大型重构来说,情况复杂多变,耗时也会很长,前面的简单重构大多是在一个小时内可以完成,但是对于大型重构来说可能需要几个月,甚至数年。如果是一个运行中的系统,重构起来只能每天一点点去慢慢重构。
(恕我直言,在国内恐怕这样的公司也很少。所以我们要自己养成随时重构的习惯,不要挖坑给自己埋最好。没谁能给你这么长时间重构,特别当你是个低端程序员的时候。你得相信,你所有偷懒的举动,都会给你以后的工作带来麻烦。除非你明天走人了,那么你的锅可能就给我背了,等你到了新的公司,你又发现你也成了一个背锅的。)
1、梳理并分解继承体系
修改点:某个继承体系同时承担两个责任。如果继承体系中的某一特定层级上的所有类,其子类名称都以相同的形容词开始,那么这个体系很可能就是承担着两项不同的责任。
做法:建立两个继承体系,并通过委托关系让其中一个可以调用另一个。
动机:混乱的继承体系会导致重复代码。
好吧,简单来说,你可以理解为桥接模式。
2、将过程化设计转为对象设计
修改点:就是出现了C语言式的代码
做法:将数据记录变为对象,将大块的行为分成小块,并将行为移至相关对象中。
3、将领域和表述/显示分离
修改点:某些GUI类中包含了业务逻辑
做法:将领域逻辑分离出来,并为它们建立独立的领域类
4、提炼继承体系
修改点:你为某个类做了太多工作,其中一部分以大量条件表达式完成
做法:建立一个继承体系,以一个子类表示一种特殊情况
小总结:
好吧,上面四个点写得很概括,但是其实包括了很多东西。
越复杂的东西反而讲起来越简单。
就像我说我们来写个注册系统吧,多简单,但是实施起来其实也不简单。
很多时候我们都不愿意去改别人的代码,因为可能业务就已经很复杂了,再加上可能他也写得烂。
你唯一必须做的是,至少保证自己的代码别人维护起来很轻松,与君共勉吧!