《敏捷软件开发》— 敏捷设计

本文探讨了敏捷软件开发中设计的七个臭味:僵化性、脆弱性、牢固性、粘滞性、不必要的复杂性、不必要的重复和晦涩性,并通过C++的copy程序示例展示了如何在需求变更中采用敏捷设计方法,以保持代码的灵活性和可维护性。
摘要由CSDN通过智能技术生成

一、设计的臭味

1、僵化性

僵化性是指难以对软件进行改动,即使是简单的改动。如果单一的改动会导致有依赖关系的模块中的连锁改动,那么设计就是僵化的。必须要改动的模块越多,设计就越僵化。

很多开发人员在工作中都遇到过这样的情况。看着很简单的一个问题,只改了一行代码,却影响了整个程序。这就是所谓牵一发而动全身。这种情况的出现往往意味着程序的僵化。

2、脆弱性

脆弱性是指,在进行一个改动时,程序的许多地方就可能出现问题。常常是,出现新问题的地方与改动的地方没有概念上的关联。要修正这些问题就又会引出更多的问题,从而使开发团队就像一只不停追逐自己尾巴的狗一样(忙得团团转)。

3、牢固性

牢固性是指,设计中包含了对其他系统有用的部分,但是要把这些部分从系统中分离出来所需要的努力和风险是巨大的

4、粘滞性

粘滞性有两种表现形式:软件的粘滞性和环境的粘滞性。

当面临一个改动时,我们会发现有许多改动方法。其中,一些方法会保持设计;而另外一些会破坏设计。当那些可以保持系统设计的方法比那些生硬手法更难应用时,就表明设计具有高的粘滞性。做错误的事情是容易的,但是做正确的事情却很难。

当开发环境迟钝、低效时,就会产生环境的粘滞性。例如,如果编译所花费的时间很长,那么开发人员就会被引诱去做不会导致大规模重编译的改动,即使那些改动不再保持设计。如果源代码控制系统需要几个小时去 check in 仅仅几个文件,那么开发人员就会被引诱去做那些需要尽可能少拆入的改动,而不管改动是否会保持设计。

无论项目具有哪种粘滞性,都很难保持项目中的软件设计。我们希望创建易于保持设计的系统和项目环境。

5、不必要的复杂性

如果设计中包含有当前没有用的组成部分,它就含有不必要的复杂性。当开发人员预测需求的变化,并在软件中放置了处理那些潜在变化的代码时,常常会出现这种情况。这样做的初衷是为将来的变化早做准备,以保持代码的灵活性并且避免以后再进行痛苦的改动。然而多数情况下,过多的提前准备会导致设计中含有绝不会用到的结构,从而变得混乱。

6、不必要的重复

代码的复制和粘贴。

7、晦涩性

晦涩性是指代码难以理解。代码可以用清晰、富有表现力的方式编写,或者可以用晦涩、费解的方式编写。为了防止晦涩或含义模糊的代码出现,开发人员必须要站在代码阅读者的位置,共同努力对他们的代码进行重构。

二、copy 程序

这是书中的一个例子,我们抛去故事的脉络,只呈现需求的变化和代码的维护过程。实现语言为 C++。

1、初始需求

从键盘读取输入字符,并输出到打印机上

void Copy()
{
   
	int c;
	while (c = readKeyboard(
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值