本文共 2603 字,大约阅读时间需要 8 分钟。
面向对象设计的原则
SRP 单一职责原则
就一个类而言,应该仅有一个引起它变化的原因。
理解:前两天在CSDN中看到一个网友提出PetShop4.0中将实体类(Model项目中的类)和操作类(BLL
项目中的类)合并,这样有利于简化程序结构。我觉得有悖于这条原则。
OCP 开放-封闭原则
软件实体(类、模块、函数等)应该是可以扩展的,但是不可修改。
理解:面向对象设计是要成本,代码比结构化程序多而且牺牲一定的效率,所获得的收益是代码复用,应付多变的需求。
修改软件实体将影响到已有的客户程序,等于没有复用,这种做法属于只有投入没有产出的,只干活不拿钱的事,
我们千万不能干。
LSP Liskov 替换原则
子类型必须能够替换掉它们的基类型。
理解:子类型无法替换基类型,将会导致在派生类对象作为基类对象进行传值时的错误。
这样多态机制处于瘫痪状态了。封装是面向对象的基础,继承可以算是实现手段,
多态是面向对象的核心。头可断,血可流,小JJ不可切。
DIP 依赖倒置原则
抽象不应该依赖于细节,细节应该依赖于抽象。
理解:这可能是程序员违反最多的原则,Gof23种设计模式,
好象没几个是和这条原则没关系的。
把程序比做建筑,细节是房子的地基,抽象是房子的装璜。
扒地基搞装修的,我这辈子都没见过。
往事不堪回首,翻开我的代码,发现我也是有钱人啊,搞装修算什么,偶扒地基搞装修,抽象依赖于细节的地方多得海了去了。
不知者不为过,我很大度地原谅了自己。
ISP 接口隔离原刚
不应该强迫客户依赖于他们不用的方法。接口属于客户,不属于它所在的类层次结构。
理解:接口是客户程序和类库交流的一个通道。不同的客户程序可能用到类库的不同方法,
因此对不同的客户程序要设计一套不同的接口。类库恒久远,接口天天变啊。类库是老婆,
要保持稳定,接口是哄老婆的花言巧语,要在不同的场合,随时进行切换。
REP 重用发布等价原则
重用的粒度就是发布的粒度。
CCP 共同封闭原则
包中的所有类对于同一类性质的变化应该是共同封闭的。一个变化若对一个包产生影响,
则将对该包中的所有类产生影响,而对于其他的包不造成任何影响。
CRP 共同重用原则
一个包的所有类应该是共同重用的。如果重用了包的一个类,那么就要重用包中的所有类。
ADP 无环依赖原则
在包的依赖关系图中不允许存在环。
SDP 稳定依赖原则
朝着稳定的方向进行依赖。
SAP 稳定抽象原则
包的抽象程度应该和其稳定程度一致。
敏捷宣言遵循的原则
1。我们最优先要做的是通过尽早的,持续的交付有价值的软件来使客户满意。
2。即使到了开发的后期,也欢迎改变需求。敏捷过程利用变化来为客户创造竞争优势。
3。经常性的交付可以工作的软件,交付的间隔可以从几个星期到几个月,交付的时间越短越好。
4。在整个项目的开发期间,业务人员和开发人员必须天天都在一起工作。
5。围绕被激励起来的个体莱构建项目,给他们提供所需的环境和支持,并信任他们能够出色的完成工作。
6。在团队内部,最具有有过并且附有效率的传递信息的方法,就是面对面的交谈。
7。工作的软件是首要的进度度量标准。
8。敏捷的过程提倡可持续的开发进度。责任人、开发者和用户应该能够保持一个长期的、恒定的开发速度。
9。不断得关注优秀的技能和好的设计会增强敏捷能力。
10。简单------是来完成工作最大化的艺术---------是根本的。
11。最好的架构、需求和设计出自于自组织的团队。
12。每隔一段时间,团队会在如何才能更有效的工作方面进行,然后对应的对自己的行为进行调整。
极限编程实践
转载地址:http://bggdi.baihongyu.com/