首页 理论教育 完美的软件开发:设计与编码要素

完美的软件开发:设计与编码要素

时间:2023-11-21 理论教育 版权反馈
【摘要】:—牛顿设计和编码是思维固化的过程,也是持续打造概念的边界和定义概念间的逻辑关系的过程。在这一过程中,满足明确的需求之外,核心目标是保持简单性,而面向对象分析设计、结构化分析设计等,都是达成这一目标的手段。次要目标则是保证设计编码的高效,即不做无用功,不浪费时间。表7-1 设计编码相关的逻辑链实际设计时,一个疯狂的趋向就是为可能发生也可能不发生的事情考虑得很多,这与我们这里强调的简单性原则冲突。

完美的软件开发:设计与编码要素

简单的事情考虑得很复杂,可以发现新领域,把复杂的现象看得很简单,可以发现新规律。

牛顿

设计和编码是思维固化的过程,也是持续打造概念的边界和定义概念间的逻辑关系的过程。在这一过程中,满足明确的需求之外,核心目标是保持简单性,而面向对象分析设计、结构化分析设计等,都是达成这一目标的手段。次要目标则是保证设计编码的高效,即不做无用功,不浪费时间。

之所以这么认为,是因为软件所涉及的几乎所有其他质量特性,如避免僵化性(Rigidity)、脆弱性(Fragility)、牢固性(Immobility)、增加可维护性等都是在使软件变得更复杂,如果没有一种反向的力量与之对冲,那么软件就一定只能变得越来越复杂。而可以与这种复杂化趋势相对立的力量也就必然是保持简单性——这是软件开发中的主要矛盾。

可以认为简单性大致等价于容易懂这样一种感受。而一件东西是否容易懂,则受制于人的一些基本特质:

●人在同一时间内,可以把握的概念和逻辑是有限的。如果理解一件事情要求人同时记

住9个以上的状态,那无疑是很困难的。

根据某些心理学家的研究,人一次能够掌握的信息块数大致为7,这个数字可以多至9也可少至5。

—Grady Booch,《面向对象分析与设计》(www.xing528.com)

●人对清晰的东西的理解要比对模糊的东西理解得更好。比如,如果你说这是圆的或者这是方的,都比较好理解,但你如果说这既是圆的又是方的,那就不太好理解了。

●人对简单时序下的动作理解得比较好。先做1,再做2,再做3和4,这样的时序比较容易理解;但对先做1,接下来做100,再做2,接下来做101,再做3和4,这样的时序理解就困难了。

●人是通过名字来认识事物的。(有名万物之始。)

总结来看,前三项强调的是概念和逻辑上不增加不必要的复杂度——完成既有要求的前提下尽可能简单,最后一项强调的则是名实相符。

针对如何确保简单性和高效率,我们分别提出如表7-1所列的逻辑链。

表7-1 设计编码相关的逻辑链

978-7-111-42626-4-Chapter07-3.jpg

实际设计时,一个疯狂的趋向就是为可能发生也可能不发生的事情考虑得很多,这与我们这里强调的简单性原则冲突。我们这里强调的是,在实现可见需求时,应追求极致的简单性,而未来发生的问题,在发生之后再应对。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈