Over-Engineering:
无论是遇到一个多么小的问题,总是一开始就考虑一个非常灵活、复杂的解决方案。有些设计师认为自己对用户需求已经非常了解并且能够预
料到以后会有一些什么样的改变,所以在设计结构时就考虑很多非常灵活的方式来适应以后的变化。但是有时候用户的要求并不是他们所想的
那样,这些灵活的设计因此也就派不上用场,这样反而白白浪费的时间与人力,同时这些设计也无谓的增加了软件的复杂度。这种情况在设计
模式开始流行之后尤为突出,很多人总是一开始就考虑要采用什么样的设计模式,也不管将要解决的问题是多么简单。
Under-Engineering:
这是比Over-Engineering更糟的情况,通常会出现这种情况的原因是:
1. 没有时间
2. 不知道怎么做出好的设计
3. 总是盼望能以最快的速度为现有系统加入新功能
这样导致的结果就是:刚开始实现功能非常快速,很短的时间内就会发出一个版本,但是这个版本中会伴随一些垃圾代码;接着更新新版本的
时候效率就会因为垃圾代码而降低,同时产生更多垃圾代码;第三的版本的时候,效率已经非常低了,用户和程序员在这时基本上已经失去了
信心;到第四个版本,就开始寻求完全重写系统。
这样的结果只能导致公司成本的增大,竞争力的减小。