您的位置: 新闻频道 软件新闻

原创新闻 评价你的项目中过度设计的指标

2008-06-23 by 副主编 QQbyte
评论(15) 有1703人浏览
Adam Bien说道:

评价你的项目中过度设计的指标:

1。你整天使用类似“潜在的”,“在未来”,“准备扩展”之类的词。

2。你开始花越来越多的时间思考“封装”,“抽象”和“解耦”,而不是实际问题。

3。你开始相信,随着框架,库,支持语言的增加,软件质量会得到提升。

4。你能够替换每一个单一的概念,类和层,但是这并不是客户的需求。

5。只看代码,你不能理解发生了什么,你需要附件的工具,软件和顾问来理解它。

6。你恨整体结构,一切都是配置化的,可替换的,当然在运行期间。如果太复杂,看第5条。

7。你开始运行一个发生器来解决复杂性。

8。你的配置文件越来越大,比你的代码还大。

9。你设计的界面只有该领域的专家才能理解。

设计模式,最佳实践和原则被过度使用了,在项目分析设计时候,过度的抽象,过多分离解耦,太多颗粒单位,过度模块化,太多插件是造成项目失败的重要原因。你的项目有没有过度设计呢?

来自:adam-bien.com

评论 共 15 条 发表评论

guitarpoet 2008-06-25 11:34 引用
部分赞同,部分不赞同

4。你能够替换每一个单一的概念,类和层,但是这并不是客户的需求。
事实上,这正是重构的价值。用户不会要求你重构,他只会要求好的产品,重构是你提供好的产品的一种受到。

7。你开始运行一个发生器来解决复杂性。
这恰是DSL的精华所在。目的是为了简化而不是复杂。

9。你设计的界面只有该领域的专家才能理解。
这要看你的客户,Linux的用户和Windows用户的要求是不一样的。
模拟一下。
Windows用户:你说什么?编译?哦,我的天。
Linux用户:你的该死的安装文件,都对我亲爱的机器做了什么?!

认清你的用户,40岁的高级技术人员和18岁的无知少女,要求是完全不同的。
afacd 2008-06-24 20:51 引用
设计还是要的,但避免杀鸡用到牛刀
选择适合的方法去解决掉客户的需求就好了

我看到同事的代码,也看到快吐血
一堆介面、继承、实作
真的造了好大的一把刀
用其中一小块,还要实作他一些我用不到的方法

但让我选择,我还是宁愿要人设计的
修改另外一位同事的code,更是吐血
没有设计跟布局得代价,等於重新开发过,相当浪费时间

起码设计过的,有些布局概念
日後维护的人也好上手
cm4ever 2008-06-24 16:53 引用
非常赞同Allen的分析。
ltian 2008-06-24 16:45 引用
完全赞同Allen 的精辟论点。补充以下,就是所谓“过渡设计”不过是“错误设计”的一种形式,其根本是“设计错误”,原因是设计能力不行或者需求不明确。楼主提出的现象总结的比较好,对于“过渡设计”这种错误进行了归纳和分析,值得我们借鉴。凡是在项目设计过程中发现你的要解决的问题月来越复杂,那么设计者就应当考虑自己的出发点是否有问题,是否偏离需求太远了。
hantsy 2008-06-24 14:39 引用
在国内,很多时候设计成了一形式,在我刚离开这个公司这个项目组便是如此。项目经理应付公司领导,公司领导应付上面领导。把活生生的简简单单的项目,包装一个成五脏俱全死气沉沉的样板工程。公司领导就开始在员工大会上,高度表扬XX项目的按自己的XXX狗屁理论取得了重大成果,自己给自己戴高帽子。我非常奇怪的是,设计人员了自己设计出来自己却实现不了,开发人员和设计人员讨论开发过程的设计问题,他称这是需求的问题,称自己也不懂,那么设计是如何出来的?
AllenZhang 2008-06-24 12:47 引用
你必须承认,设计必须前瞻于客户的需求。
一开始就写出超级解偶的复杂代码的话,说明已经是大师级的人物了。一般都是逐步优化解偶的。所以感觉至少国内的设计,一般很难过度。
tuti 2008-06-24 12:39 引用
对于大多数项目来说,这些提示,类似提醒饥饿中的人要注意营养均衡。
caixicai 2008-06-24 11:26 引用
底层就是要这么设计! 又不是业务逻辑。
QQbyte 2008-06-24 11:22 引用
过尤不及
EricLiang 2008-06-24 11:17 引用
不要误导大家,第一条和第二条是要考虑的,这是软件开发的基本原则问题
苏飞 2008-06-24 10:49 引用
引用
在中国大部分的中小软件公司中,现状基本是“匮乏甚至是没有设计”,而此文中提及的“过度设计”的情况却不是很容易遇到。

我认为:
1. 错误的设计就是“错误”的,但是不是“过度”的。如果因为能力、经验方面的缺乏,导致软件结构不理想,质量无法控制,就归结为“过度设计”的话,那我想这几乎等同于推卸责任。

2. 之所以能够“敏捷”,正是因为它基于了优良的设计和成功过的经验、模式,而绝不是可以放弃设计和前期规划。

3. (我所见过的)大多数认为“随着框架,库,支持语言的增加,软件质量会得到提升”的开发者,其实是由于其能力不足,所以就幻想着使用较新版本的类库(框架?)就可以解决自己软件中的各种问题和缺陷。这种情况我认为应该归类为“过度依赖”,而不是“过度设计”。


同意,大多数软件公司,特别是中国的软件公司及至中小软件公司,普遍的缺乏工程概念。但反过来,所谓的工程概念,无法有高端的人才支持,是无法产生工程与实践主义的平衡的。
xqstation 2008-06-24 10:34 引用
呃。。。设计是啥?
Allen 2008-06-24 09:50 引用
在中国大部分的中小软件公司中,现状基本是“匮乏甚至是没有设计”,而此文中提及的“过度设计”的情况却不是很容易遇到。

我认为:
1. 错误的设计就是“错误”的,但是不是“过度”的。如果因为能力、经验方面的缺乏,导致软件结构不理想,质量无法控制,就归结为“过度设计”的话,那我想这几乎等同于推卸责任。

2. 之所以能够“敏捷”,正是因为它基于了优良的设计和成功过的经验、模式,而绝不是可以放弃设计和前期规划。

3. (我所见过的)大多数认为“随着框架,库,支持语言的增加,软件质量会得到提升”的开发者,其实是由于其能力不足,所以就幻想着使用较新版本的类库(框架?)就可以解决自己软件中的各种问题和缺陷。这种情况我认为应该归类为“过度依赖”,而不是“过度设计”。
hantsy 2008-06-24 00:31 引用
过渡设计比没有设计好,没有设计比我刚离开的公司的可有可无的甚至看了更加迷惑的设计好。。。
wangjinpeng 2008-06-23 16:17 引用
深受其害,我一直支持简化接口,我一直很喜欢系统结构采用面向对象设计,对象内部采用结构化设计。team里面部分人员太爱玩弄无谓的技巧,导致每次performance测试以后都要对很多模块进行大改。

发表评论

您还没有登录,请登录后发表评论