敏捷设计:敏捷设计是一个过程,不是一个事件,它是一个持续的应用原则、模式以及实践来改进软件的结构和可读性的过程,它致力于保持系统设计在任何实践都尽可能得简单,干净,及富有表现力;
也可以理解为:在敏捷开发的过程中,都尽量使用敏捷开发的原则,模式来实践,改进软件的结构和可读性的一个过程
当软件发出下面任何一种气味的时候就表明软件正在腐化,
1、僵化性:很难对系统进行改造,因为一改动全身;
2、脆弱性:对系统的改动会导致系统中和被改动的地方在概念
上无关的许多地方出现问题;
3、 牢固性:很难解开系统的纠结,使之成为一些可在其他系统中重用的组件;
4、粘滞性:做正确的事比做错误的事要困难;
5、不必要的复杂性:设计中包含有不具有直接好处的基础结构;
6、不必要的重复:设计中包含有重复的结构,而这些重复的结构是可以进行抽象的统一的;
7、晦涩性:代码的可读性很差,让人难以理解,没有很好的表现出意图
单一职责原则(SRP):一个类最好只有一个职责;
开放—封闭原则(LSP):软件实体(类、模块、函数等等)应该是可以扩展的,但是不可修改;
特征:①对其扩展开放,当需求改变时,我们可以对模块进行扩展,使其具有满足那些改变的新行为;
②对于更改是封闭的,必须更改模块的源代码;
替换原则(LSP):子类型必须能够替换掉他们的基类型;
依赖倒置原则(DIP):①高层模块不应该依赖于底层模块;二者都应该依赖于抽象
②抽象不该依赖于细节,细节应该依赖于抽象;
依赖于抽象:程序中所有的依赖关系都应该终止与抽象类和或者接口:
① 任何变量都不应该持有一个指向具体类的指针或者引用;
②任何类都不应该从具体类派生出来;
③任何方法都不应该覆写它的任何基类中已经实现了的方法;
接口隔离原则(ISP):不强迫其他模块依赖于它们不用的方法;
当一个模块依赖于一个含有它不适用的方法的类,但其他模块却要使用该方法,那么当这个类因为需求改变时,就会影响到这个模块;