阅读更多

13顶
1踩

非技术

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

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

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

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

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

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

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

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

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

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

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

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

设计模式,最佳实践和原则被过度使用了,在项目分析设计时候,过度的抽象,过多分离解耦,太多颗粒单位,过度模块化,太多插件是造成项目失败的重要原因。你的项目有没有过度设计呢?
来自: adam-bien.com
13
1
评论 共 15 条 请登录后发表评论
15 楼 fuwang 2010-02-11 15:19
AllenZhang 写道
你必须承认,设计必须前瞻于客户的需求。
一开始就写出超级解偶的复杂代码的话,说明已经是大师级的人物了。一般都是逐步优化解偶的。所以感觉至少国内的设计,一般很难过度。

赞同,国内的大多不是设计过度,而是没有设计或设计得太垃圾
14 楼 guitarpoet 2008-06-25 11:34
部分赞同,部分不赞同

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

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

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

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

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

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

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

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

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

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


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

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

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

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

发表评论

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

相关推荐

  • 更换服务器后域名解析,解决云服务器Nginx环境更换域名且老域名301跳转

    昨天接到任务需要给客户的一个企业网站...如果是使用的SSL证书就比较麻烦,需要将数据拷贝一份单独网站存储,因为一个站点不可以有2个域名且使用SSL证书,毕竟客户的老域名需要能访问一段时间过渡,直接替换掉万一...

  • nginx域名重定向 实现新旧域名过渡

    假设www.alex.com为旧的域名,而www.jessica.com为新的域名,要实现通过www.jessica.com域名访问url都自动转向www.alex.com对应的url路径下。第一种方法如下:在对应的server里server {server_name www.jessica.com;...

  • html页面自动跳转

    eg旧页面离开时,过渡时间1秒,过渡效果3圆形放射: 和新页面进入时,过渡时间3秒,混合效果。 过渡效果参数0-23的说明: 0: 盒状收缩: 1: 盒状展开 2: 圆形收缩: 3:圆形放射 4:向上擦除 5: ...

  • 二级域名跳转

    公司里一个项目的网站已经运转了一段时间了,期间换过几次域名,现在想平稳的过渡到新的域名,这里就涉及到域名的自动跳转问题。 假设以前用过的域名是www.old.com,现在要用的新域名是www.new.com,那么现在的...

  • html中meta跳转,Meta网页跳转奇效

    Meta网页跳转特效META标签的使用摘录Meta 标签放在每个网页的...中,我们大家比较熟悉的如:说明编辑工具;说明关键词;说明主页描述;和说明所用语言及文字...可见META有两种,name和http-equiv。name主要用于描述...

  • 重定向跳转页面

    重定向跳转页面 开发工具与关键技术:Visual Studio 2015 作者:徐晶旗 撰写时间:2019年4月5日 首先简单的做一下重定向的介绍: 重定向(Redirect)就是通过各种方法将各种网络请求重新定个方向转到其他位置(如:...

  • python新旧特性过渡_网站改版时的一种新旧版过渡方案

    网站改版时,需要考虑一个周全的过渡方案,其中不容忽视的一点就是对旧版的处理问题。即使借助完美的数据迁移方案可以使新版从内容上完全取代旧版,但我们仍然不应该立即彻底废除掉旧版,因为:1.网民有可能通过...

  • 微信小程序页面与web-view页面之间的跳转

    文章目录前言一、web-view组件的使用二、web-view页面跳转回小程序页面1、在H5页面引入JSSDK2、为需要跳转至小程序页面的元素绑定事件总结关于作者 前言 微信小程序允许将外部的H5页面在整个小程序页面中展示出来,...

  • 微信跳转手机外部浏览器打开指定下载页面的方案

    其实这个问题不难解决,只要在产品的php代码中进行相关的处理,并加上跳转接口,即能预防域名被拦截的同时,也能让用户直接在微信内打开或自动跳转手机默认浏览器打开。 下面就给大家讲解一下这个功能的实现方式...

  • Vue-Router的使用 (内涵vue过渡和动画)

    //创建好路由之后,使用路由其实就是跳转和展示对应的页面,分别用路由自带的组件来实现, //router-link 组件实现跳转, //router-view 实现展示,会根据页面地址i耳环不容页面的展示,就是用页面给地址和对象的...

  • 建站知识:域名/ 空间/ IP/ 端口之间的关系

    隐藏路径的域名转发: 访问域名,自动跳转到指定的网络路径后,浏览器的地址栏里显示的地址显示的地址保持不变,但实际访问到的是跳转后的内容。 配置nginx,网站只有在域名或IP后添加端口才能顺利访问 ...

  • js常用功能的实现

    js功能的实现1、列表的自动滚动 1、列表的自动滚动

  • wordpress的两种外链跳转方法,可避免权重流失

    前2天,在修改互推联盟自适应页面时,考虑到原先的跳转机制可能会对博友造成困扰,所以想修改成直接跳转模式,彻底抛弃之前强行重写 title 即 iframe 框架的不友好机制。下面的内容是在研究外链跳转时发现的,感觉还...

  • 网站多用户二级域名配制

    前两天为了让Sylvan的用户能够更方便的记忆自己的个人空间的地址,研究了一下Apache的URL Rewrite功能,实现了每个用户可以把自己的用户名作为二级域名的虚拟主机的设定。其实,之前也用过URL...

  • 从 0 开始实现一个 SpringBoot + Vue 项目

    从 0 开始实现一个 SpringBoot + Vue 项目

  • 域名指向

    分别处于不同的注册商或代理机构,而您又不想在每个域名下面都开空间,此时采用url转发将没有空间的域名直接指到有空间的域名上就可以了,缺点是当您在地址栏敲入a地址时,将会自动跳转到b(真正有空间的域名)上面...

  • 开箱体验: Web研发从石器时代过渡青铜时代&复盘心得

    下文介绍详细经历 如果拿到一个同样的项目需求, 身在石器时代的后端开发状态… 石器时代 石器时代的第一周 产品经理加班熬夜弄出来原型图&UI图zip包, 发给项目经理过边需求看看能不能实现, 并要求根据经验评估工时....

  • Service与Android系统实现(1)-- 应用程序里的Service

    讲述Android Service(JAVA Service、Native Service等)背后的实现原理,透析基于Binder的RPC以及Linux Binder驱动。 Service与Android

  • 基于springboot大学生就业信息管理系统源码数据库文档.zip

    基于springboot大学生就业信息管理系统源码数据库文档.zip

  • 基于java的驾校收支管理可视化平台的开题报告.docx

    基于java的驾校收支管理可视化平台的开题报告

Global site tag (gtag.js) - Google Analytics