[导入]时刻提防过度设计
在整个软件的开发过程中,从需求到设计再到编码,随时都可能会陷入过度设计的陷阱。因为过度设计所造成的损失绝对不仅仅只是多写几段代码,增加了缺陷发生率,提高了维护成本这么简单。过度设计最可怕的是它会分散你的思维,让你有限的精力浪费在不应该或暂时不应该思考的问题上,而那些真正应该在现阶段得到重视和解决的问题却被你忽略了。你以后会为清理因为过度设计造成的垃圾和弥补本来应该思考的问题付出双重代价。
虽然我一再的提醒自己不要过度设计,但是却仍然不断的过度设计,实在是防不胜防。你也许会说,哪有那么多的过度设计?我举个前两天发生的例子:我们在讨论中间层对象实体类应该如何设计的时候,考虑了实体类会如何被XML序列化的问题。这就是一个典型的过度设计,别看这个问题简单,它带来的坏处就有:
- 因为需要考虑到如何对XML的序列化,限制了我们对实体类的设计形式,因而无法达到最佳的设计(这会对以后编写程序造成许多许多本来不必要的麻烦)。
- 限制了实体类的持久化形式,万一以后我们不用XML进行持久化,那这个XML序列化就是白考虑了。
- 浪费了我们的思考时间。
正确的方式应该是完全按照自顶向下的设计原则,在考虑中间层对象的设计的时候,就不要考虑数据层会如何持久化这个对象。真正应该考虑的是这个对象应该如何适应中间层的业务逻辑。至于如何持久化,到设计数据层的时候再去考虑吧。
不要担心到数据层的时候发现对象设计不合理要重新设计。要知道数据持久化是为中间层业务逻辑服务的,而不是反过来。假如后来发现数据层无法方便的对中间层对象持久化,那么你应该做的是修改数据层,即使比较麻烦,而不是去修改中间层。
总结:
软件开发一定要把握好什么是重要的,什么是不重要的;什么应该现在做,什么可以以后做。
文章来源:http://www.agilelabs.cn/blogs/linkin/archive/2006/01/13/534.aspx