怎么对经理说
对于快速创造软件,重构可带来巨大帮助。如果需要添加新功能,而原本设计却又使我无法方便地修改,我发现先重构再添加新功能会更快些。如果要修补错误,就得先理解软件的工作方式,而我发现重构是理解软件的最快方式。受进度驱动的经理要我尽可能快速完亊,至于怎么完成,那就是我的事了。我认为最快的方式就是重构,所以我就重构。
间接层和重构
“计算机科学是这样一门科学:它相信所有问题都可以通过增加一个间接层来解决。” ——Dennis DeBruler
重构往往把大型对象拆成多个小型对象,把大型函数拆成多个小型函数。 但是,间接层是一柄双刃剑。每次把一个东西分成两份,你就需要多管理一个东两。如果某个对象委托另一对象,后者又委托另一对象,程序会愈加难以阅读。基于这个观点,你会希望尽量减少间接层。别急,伙计!间接层有它的价值。下面就是间接层的某些价值。
- 允许逻辑共享。比如说一个子函数在两个不同的地点被调用,或超类中的某个函数被所有子类共享。
- 分开解释意图和实现。你可以选择每个类和函数的名字,这给了你一个解释自己意图的机会。类或函数内部则解释实现这个意图的做法。如果类和函数内部又以更小单元的意图来编写,你所写的代码就可以描述其结构中的大部分重要信息.
- 隔离变化。很可能我在两个不同地点使用同一对象,其中一个地点我想改变对象行为,但如果修改了它,我就要冒同时影响两处的风险。为此我做出一个子类,并在需要修改处引用这个子类。现在,我可以修改这个子类而不必承担无意中影响另一处的风险。
- 封装条件逻辑。对象有一种奇妙的机制:多态消息,可以灵活而清晰地表达条件逻辑。将条件逻辑转化为消息形式,往往能降低代码的重复、增加清晰度并提高弹性。