前言
这周进行第七、八、九章的阅读,这几章介绍什么是敏捷设计,以及引起软件腐化的原因,随后介绍在开发过程中应该遵循的两个原则:单一职责原则(SRP),开放-封闭原则(OCP)。
敏捷设计
在软件设计初始阶段,系统设计总是很清晰,但随着需求不断改变,功能需要不断增加,系统会变得越来越复杂,这时设计就逐渐变得腐化,系统开始变得难以扩展,难以维护。软件开始散发出腐化的气味。
1 软件腐化的气味
1) 僵化性 : 指的是很难对系统进行改动,每个小改动都意味着要更改系统其它更多的地方。
2)脆弱性:指的是对系统的一个地方进行改动,引起了其它地方出现了错误。
3)牢固性:指的是设计中包含了对其他系统有用的部分,但是要把这些部分从系统中出来所需要的努力和风险是巨大的。
4)粘滞性:粘滞性分为两种表现形式,软件的粘滞性和环境的粘滞性。开发人员在面临一个改动的多种方案中,发现那些保持软件设计的改动方法比破坏设计的方法更难用,此时软件设计具有很高的粘滞性。当开发环境迟钝或者低效时候就会产生环境的粘滞性。
5)不必要的复杂性:设计中包含没有用的组成部分。
6)不必要的重复:系统中有很多重复的代码。
7)晦涩性:指软件模块难以理解。
随着时间的推移,软件会逐渐腐化,为了尽量保持好的设计,我们在开发过程中就需要遵循一些原则。
单一职责原则
对于一个类来说,应该仅有一个引起它变化的原因。如果一个类承担的职责过多,就等于把这些职责耦合到了一起,这样的设计会引起软件的僵化性和脆弱性。因此,我们在开发过程中,需要把相同职责的功能都写到同一个类里面。
开放—封闭原则
1 描述
1.1 “对于扩展是开放的”。这意味着模块的行为是可以扩展的,当应用的需求改变时候,我们可以对模块进行扩展,使其具有满足那些改变的新行为。
1.2 “对于更改是封闭的”。对模块行为进行扩展时,不必改动模块的源代码或者二进制代码。
2 关键是抽象
合适的抽象可以使软件设计满足这个原则。
总结
学习敏捷设计和敏捷设计该遵循的原则可以使我思考现有项目中存在的问题和应该采取什么样的措施去改进设计。