Chinaunix首页 | 论坛 | 博客
  • 博客访问: 960125
  • 博文数量: 134
  • 博客积分: 7443
  • 博客等级: 少将
  • 技术积分: 1411
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-10 20:18
文章分类

全部博文(134)

文章存档

2012年(7)

2011年(29)

2010年(16)

2009年(6)

2008年(18)

2007年(58)

分类:

2007-03-24 10:41:29

今天翻看我以前写的文档。一个设计文档的总结中,当时对设计过度的问题进行过总结。今天有必要再反思一下。这些都是实实在在的经验。

软件开发中,设计不足是很糟糕的,设计过度也同样糟糕。过多的设计可能导致下面的问题:

无论面向对象的方法,还是结构化设计的方法,基本原理都是对复杂问题“分割并征服”。但是,当你把一个问题分解成两个子问题,虽然每个子问题的规模小,复杂度低,但多了处理两个子问题之间关系的复杂性。如果分割过度,分割的程度超过了某个临界点,会导致复杂度快速增加。

有经验的开发人员,注意软件结构的层次清晰。使用抽象的方法,实现层次化的软件结构,高层使用低层提供的服务,实现更多的功能时不必关注底层实现的细节。但过多的层次也是复杂的,且违背透明原则,在调试程序的时候,如果要在不同层次间跳跃,发现问题是困难的。《The Element of Networking Style》的作者Padipsky说:如果你知道自己在做什么,三层就足够了,如果你不知道,七层也没有用。(这句话,是我在 The Art of Unix Programing中看到的,我觉得很有道理,但严格的三层的限定不完全对)

设计过度,对细节考虑的过多,真正重要的东西反而被掩盖。软件设计,一定要抓住最重要的方面,解决主要矛盾,抓住对最终结果有最大影响的因素。不然的话,你即使有效率,有创意,却最终没有效果。 工作很努力,结果很糟糕,人世间最痛苦的事莫过于此。

不要把简单的问题搞复杂,要把复杂的问题搞简单。--是我的重要哲学。我眼中,精密的M-16不如简单可靠的AK-47。 AK-47才是永远的经典。“天之道,损有余而补不足”。

什么方法论都要结合实际环境的情况,不要过分地追求完美。完美的程序是不存在的。一定要注意,质量也是软件需求的一部分,你应该知道“什么时候应该停止?”。



阅读(2471) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~