苏林

一程序, 一世界

苏林ID:Slin000
83058次访问,排名1134好友59人,关注者68
仔细思考,踏实做事
MSN:hotsoo@hotmail.com

按关键字聊天的小程序,欢迎试用:
http://6t6t.xicp.net
Slin000的文章
原创 31 篇
翻译 0 篇
转载 0 篇
评论 530 篇
苏林的公告

诚邀朋友们试用
10楼聊天室
按关键字聊天,找到有共同话题的人!

欢迎给我留言,谢谢

最近评论
Microsoft_China_Vip:


推荐给Web程序员,

学习网络赚钱 [ www.888RMB.com.cn ] 为中国赚钱网站,

提供赚钱教程、赚钱经验、赚钱 秘籍、赚钱项目、赚钱产品, 为想赚钱的人群提供一个赚钱的网络平台



kfd7ffg:md3hfai
kfd7ffg
wow gold
wow gold
wow gold
Ctrl + W 就可以关掉标签页,IE,firefox和chrome都是这样的。记得改变习惯哦
sufang1:看不完了,明天接着看,可可
sufang1:支持正版,但买不起,呵呵
文章分类
    收藏
      相册
      友情链接
      爱生活,爱读书--杨福川 图灵
      存档
      订阅我的博客
      XML聚合  FeedSky
      订阅到鲜果
      订阅到Google
      订阅到抓虾
      订阅到BlogLines
      订阅到Yahoo
      订阅到GouGou
      订阅到飞鸽
      订阅到Rojo
      订阅到newsgator
      订阅到netvibes

      原创 设计其实是一种病收藏

      新一篇: 又见程序员精神——有感于谷歌一天一夜开发春运交通图 | 旧一篇: “IPv9十进制网络”的忽悠策略

       
              软件设计的学问很深,学一点可以开拓思路,学透了可以成为专家,而学得半透不透的时候,感觉就会像一种病,一种“设计病”。
       
      得了“设计病”的程序员干活很慢。你看那些刚毕业的年轻同志,拿到任务后立刻打开开发工具,又是点又是敲的,一会儿就能看到界面,程序功能一个一个地不断被实现,速度快的很。得了“设计病”的程序员就不能这样。拿到任务后左思右想,总觉得这样也行,那样也不错,一个小程序他能想出几百种方法来,光权衡就得半天。写程序通常也不从界面开始做,闷着头在键盘上狂按了好久,程序还是不能运行,搞得项目经理直冒汗。
       
      “设计病”的程序员写的程序,写着费劲,看起来劳神。通常别人写一个函数的,“设计病”人非要写成好几个。使用面向对象开发语言的更是如此。“设计病”人写的程序里,类特别多。人家用两三个类就可以实现的功能,“设计病”人要用五六个类,甚至更多。还弄一些个类,一堆虚函数,一个成员变量也没有。稍大一点的程序就有几十上百的类挤在一起,关系也很复杂,一般人还真看不懂。
       
      和“设计病”人讨论问题也不容易。通常大家都在谈这是个什么功能,某个功能怎么样才能实现,而“设计病”人常常不讨论这个,嘴上总挂着什么“复用”、“耦合”、“模式”等一类莫名其妙的词汇。就算“设计病”人在讨论功能的时候,听起来也和程序的实际功能相差很远。比如当大家在讨论使用多线程实现的时候,他就讨论线程管理类的接口;当大家讨论发送数据要缓冲的时候,“设计病”人却在研究如何实现一个快速的数据队列。
       
      事实上“设计病”人自己也很痛苦。他们对现有的方案总是不满意,甚至昨天他自己写的方案,今天再看时也觉得不满。自己费尽心机设计出来的可复用的类,却从来都没有被复用过。自己好不容易设计出的松耦合的模块结构,在增加新功能时,却不得不在很多层次的类上做修改。
       
      “设计病”也很难治好。“设计病”人总是不由自主地做设计,不愿意用直接的方式实现程序,总想把程序一点点剥开、分解。怎么劝都不会有用。他们相信迟早有一天自己的设计会发挥作用。
       
      “设计病”人写出过很多烂程序。要么设计失败,考虑不周,程序结构有问题,要么过度设计,简单的功能,大堆的类,还不如不做设计。
       
      不由自主地去设计,努力去写出烂程序,不是一种病又是什么?
       
      如果您觉得也得了“设计病”了,也别太着急,办法有一个,就是继续“病”下去,努力做设计。直到有一天,能平衡完美和实用了,这病也就好了。
      作者:苏林
       

      发表于 @ 2008年02月25日 15:49:00|评论(loading...)|编辑

      新一篇: 又见程序员精神——有感于谷歌一天一夜开发春运交通图 | 旧一篇: “IPv9十进制网络”的忽悠策略

      评论

      #linuxpgy 发表于2008-02-25 17:11:22  IP: 218.108.8.*
      最终成败还是看产品的实际效果怎么样
      #keel 发表于2008-02-26 10:59:02  IP: 202.102.127.*
      这种感触深入骨髓~~原来就是设计病……
      非常有同感!
      #jhonguy 发表于2008-02-26 12:31:08  IP: 125.119.10.*
      nod!
      #noOnlyCode 发表于2008-02-26 12:51:40  IP: 220.160.159.*
      呵呵,所谓远看成岭侧成峰,远近高低各不同。

      “跳出来”,再跳进去。不至于病得慌……
      #updatedb 发表于2008-02-26 14:42:36  IP: 219.232.61.*
      最后一段有意思
      #bitpolar 发表于2008-02-26 15:59:44  IP: 124.207.144.*
      如果系统整体要求并不是很高的话,用非常复杂的接口,N多的类实现一个简单功能,我是觉得得不偿失
      #wantal 发表于2008-02-26 17:06:59  IP: 203.187.191.*
      符合实际最重要。
      如果只是个人写一个无关紧要的小程序,可以不去“病”。
      如果参与一个团队要做一个中长期的项目,你若不先“病”,以后就可以直接等死了。
      如果一个人能到看到一个项目,就可以把握到一种合适的“病情”,这个人就是“病”出境界了。我们现在去“病病”,就是为了追求这种境界呀。
      #cabbagewar 发表于2008-02-26 17:25:59  IP: 219.146.254.*
      这不就是在说我嘛!!!
      #vividboy 发表于2008-02-26 17:26:58  IP: 219.142.42.*
      正在痛苦中...

      估计最后还是要回归 be simple is good。
      #allen1981813 发表于2008-02-26 18:33:42  IP: 77.25.179.*
      LZ说的一点没有错!
      我已经想开了。
      #linkerlin 发表于2008-02-26 18:53:44  IP: 61.172.241.*
      同感啊.
      尤其是OO设计.
      其实,静态OO不过做了一个虚表消息分派机制.
      本身对并发的世界就不是很适配.
      在这样的基础上,怎么设计都是不可能完美的.
      软件设计并不是优先考虑适应变化,而应该首先考虑适应需求.
      简单就是美.
      #hacker47 发表于2008-02-26 18:57:27  IP: 60.172.253.*
      看你关注的是什么样的程序了,如果是一些ERP什么的,
      简单的设计就可以了,但是如果是一个生命周期非常长的商业软件,架构设计的稳固一点也没有什么害处。
      #gbb21 发表于2008-02-26 19:10:29  IP: 222.205.42.*
      强烈Re
      看来我病得不轻啊~
      #ThinkX 发表于2008-02-26 20:22:25  IP: 221.219.240.*
      很赞同,有同感,也经历过。
      任何东西适当就好。
      #shuiyinyuan 发表于2008-02-26 22:02:58  IP: 123.117.168.*
      同感.
      #fangz 发表于2008-02-26 22:34:30  IP: 61.149.156.*
      没有设计的软件 只是在敲一大堆API
      数据结构,算法,设计 才是软件的精髓

      自己不懂模式 不要说别人有病

      我以前一直不理解TDD, 现在用起来真叫一个爽
      #xuanyuanhaobo 发表于2008-02-27 10:17:49  IP: 61.172.247.*
      hahaha

      太棒了......说得太好了......

      是啊.....看见那些新手写东西那么快....有时候都总在怀疑自己是不是该回到以前那种只管应用...不管复用....不管可扩展的简单思想去.....
      #LifeForCode 发表于2008-02-27 12:31:50  IP: 58.240.178.*
      正努力病着呢
      确实,大病过才能免疫,才能找到平衡点
      #vividboy 发表于2008-02-27 12:35:18  IP: 219.142.42.*
      久病成良医,呵呵
      #fancylea 发表于2008-02-27 12:41:21  IP: 207.46.92.*
      同感阿!
      继续病下去!
      希望有一天找到平衡点.
      #jimzhao 发表于2008-02-27 13:00:21  IP: 123.116.134.*
      确实是这种感觉!!
      #平衡木 发表于2008-02-27 13:45:16  IP: 222.125.128.*
      好文章,我最讨厌过度设计了。
      刚看到一篇登山的程序员
      http://www.cnblogs.com/leadzen/archive/2008/02/12/1067471.html
      这两篇对比起来很有意思啊
      平衡体操不好练哦~~~~~~~~~~~~~~~~~:)
      #gohappy_1999 发表于2008-02-27 13:45:45  IP: 125.88.6.*
      不设计会使逻辑变得混乱.过度设计会使设计变得不必的得复杂.
      现实中完全追求高内聚低藕合,接口和实现分离这些原则是太理想主义了。
      #r_mosaic 发表于2008-02-27 14:07:33  IP: 211.167.129.*
      平衡就好,我有时候也会过度抽象,一般过一阵子意识到了就会好。
      #antany 发表于2008-02-27 15:24:51  IP: 128.221.197.*
      哈哈,说得很形象,这个阶段还真的是一个关卡。
      #cnc 发表于2008-02-27 17:11:36  IP: 221.0.148.*
      我看你才有病,以为自己是谁?
      #asukamk2 发表于2008-02-27 19:01:46  IP: 125.91.182.*
      一矢中的 恍然大悟
      #r_swordsman 发表于2008-02-28 08:50:09  IP: 121.33.243.*
      常常生病是好事...免得最后一病致死....
      #stoneyrh 发表于2008-02-28 09:20:09  IP: 59.37.5.*
      厚积才能薄发
      #sandheart 发表于2008-02-29 12:09:37  IP: 221.221.123.*
      深有感触
      #yhy0611 发表于2008-02-29 14:48:31  IP: 219.235.67.*
      云开见日
      #winds2005 发表于2008-02-29 18:27:47  IP: 59.41.250.*
      深有同感,我现在就是这样。。痛苦啊`
      #hcg219 发表于2008-03-01 13:46:24  IP: 61.186.154.*
      这种思想有点是好的。多了反而会浪费时间精力。
      #xwenchu 发表于2008-03-03 19:33:26  IP: 220.175.28.*
      看来专家是“病”过来的,只有经过一场阵痛才能升华。
      #易学 发表于2008-03-03 21:48:33  IP: 220.194.46.*
      我在浙大的BBS上看到有人转,特过来看看,深有同感!我觉得懒也是个原因!老想一了百了,老想着以后不要费事。还有呢,就是一个完美主义,天下最怕认真二字嘛。
      #phcis 发表于2008-03-04 10:48:16  IP: 221.220.149.*
      是不是有点置之死地而后生的感觉?
      #frockee 发表于2008-03-04 12:39:10  IP: 124.78.101.*
      过度设计其实就是对要处理问题的不确定,就是对自己和团队能力的不自信。
      设计的终极目的应该是帮助自己或团队对问题形成清晰的认知,就问题的解决方案达成确定的共识。
      过度设计说明程序员没有抓住问题的主要矛盾,没有足够的经验和能力支持他给出良好的解决方案。
      过度设计看似是在解决问题,其实是在逃避问题。
      #msallen 发表于2008-03-06 10:50:41  IP: 207.46.55.*
      垃圾
      #lingzi726 发表于2008-03-06 11:19:28  IP: 59.61.163.*
      原来偶得病了哈~
      但是如果拿到东西不思考,就动手,好像反而更盲目~
      #ProjectDD 发表于2008-03-08 03:09:21  IP: 218.88.95.*
      面象对象,主要是能复用代码,其它的无所谓,设计是个相当主观的东西...过度设计相当有害,因为你还没做(没测试)在不知情的情况下,就盲目的做规划结果可能是大部分的你费了很多精力想到的东西,被一些你事先忽略或未知的对于你而言的"小"问题给阻塞了,直接导致原先的设计作废.
      #I_Iverson 发表于2008-05-30 10:50:13  IP: 125.40.79.*
      靠,谁说的面向对象的主要作用是复用代码,它的主要作用是复杂度的分解,去看看那本最根本的面向对象分析与设计。
      #I_Iverson 发表于2008-05-30 10:56:43  IP: 125.40.79.*
      靠,谁说的面向对象的主要作用是复用代码,它的主要作用是复杂度的分解,去看看那本最根本的面向对象分析与设计。
      发表评论  


      登录
      Csdn Blog version 3.1a
      Copyright © 苏林