文章目录
一、概述
1.0 参考文献
1.1 重构的基本功
识别坏味道、测试先行、行为保持的变更动作,是重构的基本功。
1.2 综述
识别坏味道和行为保持,小编理解的还不深,但是测试先行以及碰到合作缺少基本原则遇到的坑的体会还是有话语权的。
开发六大原则:单一、开闭、里氏替换、接口隔离,迪米特法则,依赖倒置
设计模式的六大原则:开闭、里氏替换、接口隔离,迪米特法则,依赖倒置,合成复用。
1.3 题外话和人物
波士顿(Boston)是美国马萨诸塞州的首府和最大城市。麻省理工(MIT)和东北大学(NEU)都在这个地方。
Barbara Liskov 芭芭拉·丽斯科夫:
Ian Holland 伊恩·赫兰德 (三代蜘蛛侠同姓):NEU
Booch:UML的创始者之一
二、详情
2.1 单一原则
2.2 开闭原则
以依赖倒置原则为基础
2.3 里氏替换
子类拥有父类的一切属性和行为,任何父类出现的地方,都可以用子类来代替。
源: 由芭芭拉·利斯科夫(Barbara Liskov)在1987年在一次会议上名为“数据的抽象与层次”的演说中首先提出。
2.4 迪米特法则(最少知道原则)
1、一个对象应该对其他对象保持最少的了解。只与直接的朋友通信。
2、工作中为了更好的遵循迪米特法则,有时候会去造一个中介/中间层,例如:门面模式、中介者模式、分层封装。
3、高内聚低耦合,降低类与类之间的耦合,只与直接的朋友通信就是要尽量避免依赖更多类型。
源:1987年秋天由美国Northeastern University(东北大学)的Ian Holland提出,被UML的创始者之一Booch等普及。后来,因为在经典著作《 The Pragmatic Programmer》而广为人知。
2.5 接口隔离
一个类对另外一个类的依赖性应当是建立在最小的接口上的。
使用多个隔离的接口,比使用单个接口要好。它还有另外一个意思是:降低类之间的耦合度。由此可见,其实设计模式就是从大型软件架构出发、便于升级和维护的软件设计思想,它强调降低依赖,降低耦合。
2.6 依赖倒置(Dependence Inversion Principle)
这个原则是开闭原则的基础,具体内容:针对接口编程,依赖于抽象而不依赖于具体。
个人理解:相对论,开发落地,依赖倒置需要明确抽象和具体最小2个类即可。
2.7 合成复用原则(Composite Reuse Principle)
尽量使用合成/聚合的方式,而不是使用继承。
三、总结
3.1 重构第一步
第一个步骤永远相同:我的确保即将修改的代码拥有一组可靠的测试。
尽管编写测试需要花费时间,但是却为我们节省下可观的调试时间。
3.2 十六字心法
旧的不变,
新的创建,
一不切换,
旧的再见。