
获得徽章 0
- “你并不需要预测什么会变化,你需要知道的是,变化必然会发生。程序应该保证尽可能合理的灵活性,这样,不管未来发生什么变化,都可以应付得了。
请回顾整个过程中的每次修改。问问自己,最初写这个文件时,你能预测到这些变化吗?是否一开始写好就能够减轻后期的工作量。总的来说,就是要尝试理解每次修改,看看是否能从中得到一些关于软件开发的新的收获。
渐进式开发及设计:它要求按照特定顺序,一点一点地设计和构建系统。
举一个实现一个支持加减乘除计算器的例子。
1. 设计一个只能进行加法运算的系统。
2. 修改现有的设计,让它支持减法运算。
3. 实现减法运算功能。现在系统支持加法和减法。
4. 再次修改现有的设计,让它支持乘法运算。
5. 实现乘法运算功能。现在系统支持加法,减法和乘法了。
6. 再次修改现有的设计,让它支持除法运算。
7. 添加除法的功能。最后得到一个我们期望的可以加减乘除的计算器。
这个方法的精妙之处在于,它是根据实现的顺序来决策的。总的来说,在其中的每个阶段,下一步都只做最容易的事情:首先选择加法,因为这是最简单的运算;其次选择减法,因为从逻辑上说它与加法只有很小的差异;第二步也可以选择乘法,因为乘法无非是把加法执行很多次而已。而唯一不应当选择的是除法,因为从加法到除法的距离太远了,步子太大了。而从乘法到除法却相对简单很多。
这里混合了两种做法:一种叫做‘渐进开发’,另一种叫做‘渐进设计’。
渐进式开发是一种通过该小步骤构建整个系统的办法;渐进式设计也是一种类似的方法,它也通过一系列小步骤来创建和改进系统的设计。
-- 来自《简约之美:软件设计之道》”
作者指出了我们应该认识到变化是必然会发生的,因此我们在设计系统的时候要尽可能保持灵活,让系统便于修改。而且在每次改动之后我们最好也可以做一个复盘:这个修改我们是否当初想到过,当初的设计是否可以很好地应对这个修改。如果不能,我们以后应该如何避免类似的情况发生?或者我们是否可以积累一下经验,对比变化前后的差异,弥补我们在思考方面的不足?
作者也介绍了渐进式开发和设计:它所追求的是通过小步骤来构建和改进系统的方法,核心是每一步骤相差的距离很小。同时也举了一个简单的例子帮助我们理解。以后在我们构建复杂系统的时候可以借鉴作者介绍的这种渐进式的方案。展开评论5 - 评论39