文章目录
  1. 1. 什么是敏捷
  2. 2. 我们的问题
  3. 3. 怎么做
    1. 3.1. 敏捷实践
    2. 3.2. 设计原则
      1. 3.2.1. 一. 单一职责原则(SRP)
      2. 3.2.2. 二. 放开-封闭原则(OCP)
      3. 3.2.3. 三. 里氏替换原则(LSP)
      4. 3.2.4. 四. 依赖倒置原则(DIP)
      5. 3.2.5. 五. 接口隔离原则(ISP)
    3. 3.3. 设计模式

最近部门的项目进度老是延期,且 Bug 率总是很高,还有长时间的加班让作为开发的我们也很沮丧。

之前,我们总喊着敏捷的口号,可是实际上我们做的结果看上去不像是敏捷。故写此文来学习真正的敏捷。

什么是敏捷

在认识敏捷之前不妨先来认识一下敏捷性:

敏捷性(Agility)是指以微小增量的方式构建软件

敏捷性着重体现的是微小增量。敏捷性是一个方法,作为敏捷方法中最著名的一个,我们很有必要在认识一下极限编程.

极限编程(eXtreme Programming, 简称 XP),它由一系列简单却互相依赖的实践组成,这些实践结合在一起形成了一个胜于部分结合的整体。

我们的问题

导致项目延期和 Bug 率高很大一方面原因是因为我们软件设计的臭味。针对如何判断我们的代码是否腐化,可判断是否符合一下情况的一条或几条:

  1. 僵化性:很难对系统进行改进,因为每个改动都会迫使许多对系统其他的部分的其他改动
  2. 脆弱性:对系统的改动会导致系统中和改动的地方在概念上无关的许多地方出现问题
  3. 牢固性:很难解开系统的纠结,使之成为一些可在其他系统中重用的组件
  4. 粘滞性:做正确的事情比做错误的事情要困难
  5. 不必要的复杂性:设计中包含有不具任何直接好处的基础结构
  6. 不必要的重复:设计中包含有重复的结构,而该重复的结构本可以使用单一的抽象进行统一
  7. 晦涩性:很难阅读、理解。没有很好地表现出意图

怎么做

遇到上述的问题,我们该如何去做呢?

  1. 遵循敏捷实践去发现问题
  2. 应用设计原则去诊断问题
  3. 应用适当的设计模式去解决问题

    上述三个步骤,说起来很容易,但是具体该如何做呢?当然是学习敏捷实践、设计原则和设计模式了。

敏捷实践

敏捷宣言:(> 是胜过的意思)

  1. 个体和交互 > 过程和工具
  2. 可以工作的软件 > 面面具到的文档
  3. 客户合作 > 合同谈判
  4. 相应变化 > 遵循计划

直接迫切的需要并且意义重大时,才来编织文档。

Jack Reeves:实际上满足工程设计标准的唯一软件文档,就是源代码清单。

设计原则

软件设计五大原则有助于开发人员消除设计中的臭味,并为当前的特性集构建出最好的设计。这些原则如下:

一. 单一职责原则(SRP)

就一个类而言,应该仅有一个引起它变化的原因

二. 放开-封闭原则(OCP)

软件实体(类、模块、函数等等)应该是可以扩展的,但是不可修改的

三. 里氏替换原则(LSP)

子类型必须能够替换掉它们的基类型

四. 依赖倒置原则(DIP)
  • 高层模块不应该依赖于低层模块。二者都应该依赖于抽象。
  • 抽象不应该依赖于细节。细节应该依赖于抽象。
五. 接口隔离原则(ISP)

不应该强迫客户依赖于它们不用的方法。

设计模式

关于设计模式,我之前有写过,传送门如下:

创建型结构型行为型
工厂方法
简单工厂
抽象工厂
建造者模式
单例模式
原型模式
组合模式
外观模式
桥接模式
代理模式
享元模式
适配器模式
装饰模式
策略模式
模板方法
状态模式
观察者模式
备忘录模式
迭代器模式
命令模式
职责链模式
解释器模式
访问者模式
中介者模式


本文地址 http://94275.cn/2016/10/01/about-agility/ 作者为 Zhenguo

author:Zhenguo
Author: Zhenguo      Blog: 94275.cn/     Email: jinzhenguo1990@gmail.com
I have almost 13 years of application development experience and have a keen interested in the latest emerging technologies. I use my spare time to turn my experience, ideas and love for IT tech into informative articles, tutorials and more in hope to help others and learn more.
文章目录
  1. 1. 什么是敏捷
  2. 2. 我们的问题
  3. 3. 怎么做
    1. 3.1. 敏捷实践
    2. 3.2. 设计原则
      1. 3.2.1. 一. 单一职责原则(SRP)
      2. 3.2.2. 二. 放开-封闭原则(OCP)
      3. 3.2.3. 三. 里氏替换原则(LSP)
      4. 3.2.4. 四. 依赖倒置原则(DIP)
      5. 3.2.5. 五. 接口隔离原则(ISP)
    3. 3.3. 设计模式
返回顶部