敏捷设计
敏捷设计是一个过程,不是一个事件。它是一个持续的应用原则、模式以及实践来改进软件的结构和可读性的过程。它致力于保持系统设计是在任何实践都尽可能得简单、干净以及富有表现力。
在非敏捷环境中,由于需求没有按照初始设计遇见的方式进行变化,从而导致了设计的退化。通常,改动都很急迫,并且进行改动的开发人员对于原始的设计思路并不熟悉。因而,虽然对设计的改动可以工作,但是它却以某种方式违反了原始的设计。随着改动的不断进行,这些违反渐渐低积累,出现了以下这些臭味:
- 僵硬化:很难对系统进行改进,因为每个改动都会迫使许多对系统其他部分的其他改动
- 脆弱性:对系统的改动会导致系统中和改动的地方在概念上无关的许多地方出现问题
- 牢固性:很难揭开系统的纠结,使之成为一些可在其他系统中重要的组件。
- 粘滞性:做正确的事情比做错误的事情要困难。
- 不必要的复杂性:设计中包含有不具任何直接好处的基础结构。
- 不必要的重复:设计中包含有重复的结构,而该重复的结构本可以使用单一的抽象进行统一。
- 晦涩性: 很难阅读、理解。没有很好的地表现出意图。
SRP(单一职责原则)
职责这里定义为“变化的原因”,单一职责也就是
- 就一个类而言,应该仅有一个引起它变化的原因。
在平时的开发中不要把所有的方法都写到一个类中,那样在后续的改变中对类的改动会很频繁。
OCP(开放-封闭原则)
开放-封闭原则:对拓展开放、对修改封闭。
最近我们系统需要提高一个jar包给各系统使用,当时分配给了一个刚来的新人,我review代码的时候发现,可能是好心,jar包里把各个系统数据转换进行持久化全部都做了,如果以后有一个系统再想添加新的参数表结构,那么各系统就需要更改jar内的方法,或者重新写jar包,再重新发给每一个系统。对于这种,在jar中调用抽象方法,各系统实现抽象方法,在根据自身系统的特性实现相应的数据转换以及持久化即可,这样便对修改封闭了,拓展开放了。
生活要多点不自量力
网友评论