(1)软件的首要技术使命:管理复杂度
本质性困难的原因:必须去面对复杂、无序的现实世界;精确而完整地识别出各种依赖关系与例外情况;设计出完全正确而不是大致正确的解决方案等。想清楚的认清现实世界到底如何运作仍有很多挑战,当软件要解决更大规模的现实问题的时候,现实的实体之间的交互行为就变得更为复杂,这些转而又增加软件解决方案的本质性困难。
作为软件开发人员,我们不应该试着在同一时间把整个程序都塞进自己的大脑,而应该试着以某种方式去组织程序,以便能够在一个时刻可以专注于一个特定的部分。这么做的目的是尽量减少在任一时间所要考虑的程序量。
在软件架构的层次上,可以通过把整个系统分解为多个子系统来降低问题的复杂度。所有软件设计技术的目标都是把复杂问题分解为简单的部分。子系统之间的相互依赖越少,你就越容易在同一时间里关注问题的一小部分。
(2)理想的设计特征
最小复杂度
易于维护:意味着在设计时为做维护工作的程序员着想。
松散耦合:意味着在设计时为让程序的各个组成部分之间关联最小。
可扩展性:能增强系统的功能而无须破坏其底层结构。
可重用性:设计的系统的组成部分能在其他系统中复用。
高扇入:大量的类试用某个特定的类。
低扇出:让一个类少量或者始终的使用其他的类。
可移植性:可以很方便的移植到其他环境中。
精简性:设计出的系统没有多余的部分。伏尔泰曾说:一本书的完成,不在他不能再加入任何内容的时候,而在不能再删去任何内容的时候。
层次性:尽量保持系统各个分阶层的层次性,使你可以在任何层面上观察系统,并得到某种具有一致的看法。设计出来的系统应该能在任意层次上观察而不需要进入其他层次。
标准技术:尽量使用标准化的、常用的方法,让整个系统给人一种熟悉的感觉。
(3)设计的层次
posted on 2007-09-20 09:36
探丫头 阅读(797)
评论(0) 编辑 收藏 引用 所属分类:
《代码大全》读书笔记