敏捷软件开发 789章

什么是敏捷设计

从根本上讲,源代码就是设计。

而当软件出现以下的7种特征时,说明软件已经开始变味,腐化。

  • 僵化性                     ---    代码一改动即牵一发而动全身 
  • 脆弱性                     ---    代码一改就出BUG
  • 顽固性                     ---    代码不可分离
  • 粘滞性                     ---    代码小改动即导致大规模全编译,签入几个文件要几小时
  • 不必要的复杂性
  • 不必要的重复
  • 晦涩性                     ---    自己也会不记得代码的原意

造成这些的原因就是需求,改动很急迫,并且改动的开发人员对于原始的设计思路并不熟悉。随着改动不断进行,这些弊端渐渐地积累,直到晚期。我们必须要设法找到一种方法来防止设计腐化,而敏捷团队依靠变化来获取活力对应这些情况很有灵活性。

Copy程序

这个例子很好的反映了项目由最初的需求到需求改变导致代码结构越来越怪的过程。然后需要怎么利用敏捷设计保持代码的灵活。例子中使用抽象类来使他们免于输入设备的变化带来的麻烦。

SRP:单一职责原则

Single Reposibility Principle

就一个类而言,有且仅有一个引起它变化的原因 (A class should have one, and only one, reason to change)

  • 每个类都必须有一个唯一的明确的职责,只做一件事,并且把这件事做好。
  • 仅仅当某种情况发生时(通常与这个类的职责直接相关)才需要修改这个类的代码。
  • 类名与方法名应该与其所又承担的职责相符。
  • 一个类与其他类间的依赖性越少越好。

应该SRP原则的关键是SOC(Separation Of Concerns):分离耦合,让这些关注点彼此独立。典型例子就是WinForm中的业务代码与UI代码混写在一个窗体文件中。

 OCP:开放-封闭原则

Open Closed Principle 开闭原则 

Software entities(classes,modules,functions,etc.)must be open for extension but closed for modification. 软件实体(类,模块,函数等)应该对扩展开放,对修改封闭。

  • 一个软件开发完毕以后,当需要扩展其功能时,不要修改原来的代码(封闭),而应该派生出新类(开放)
  • 仅当原程序有Bug时,才对原始程序进行修改。
  • 之所以要这么做,目的是为了在修改现在代码时,不引用新的Bug

 可以把方法写成virtual,方便子类实现。

原文地址:https://www.cnblogs.com/xiaoguanqiu/p/10513418.html