`

关于设计的度的一点小认识

阅读更多

  

关于设计的度的一点小认识

 

引言

  最近读了《设计之道》这本pdf书,是园子的老师傅总结的,感谢他的分享。

  前几天葡萄城控件团队也发表了一篇《设计做到什么程度? 》,写的不错,有一定的指导意义,不愧是大厂出来的。

  正好自己今年也开始进入真正的设计领域,虽然设计的问题出来不少, 也是改来改去的,也是由于中间学习了好几关于设计本书,同时参考了好几个框架和代码示例。发现大家在这方面还是各有认识,没有绝对的标准,而且都有自己的道理。

  总之,感觉还是成长了不少。不过,同时也发现自己知道的太少了。学习的路还很长。

正文

      关于设计的“度”的问题,我想也是一个颇有争议的问题。主要有两个论点:

      1.       要不要预先设计
      2.       设计的“度”如何把握

      说一点题外话,最近也准备开始学习TDD和Agile了,看来一点这方面的资料,说的不准确的地方,还请各位指出。

      这两个问题看似是两个,其实它们有着千丝万缕的联系。

      关于第一点,在我初步接触的Agile理论中,还有就是一些人士写的文章中,都说不要预先设计,因为会搞成过度设计。我不这么认为。我个人还是比较推崇和赞成预先设计的,原因如下:

      •       不需要预先设计,那还要架构师做什么呢?大家开工就好了,然后在后面需求变化的时候再来refactoring就好了。当然了,这时候可能需要架构师做好一点的重构,但是他们(agile)好像说,重构也不要过度,满足当前需求就好,那不就是说还是不需要架构师吗?难道架构师在agile要失业,或者说要转型了吗?还是我理解的方向有问题呢?
      •       不错预先设计,会给后面的重构带来很大的麻烦。甚至于没有办法重构,只能推倒重来,因为可能是结构性的变化。这个我是深有体会的,相信大家也是深有体会的。
      • 不预先设计,就代表着将风险推后,会给后面的修正带来严重的后果。造成后期的维护异常困难,成本急剧升高。
      • 不要被眼前的快速开发蒙蔽了双眼,眼前的快速,将造成后期的速度成倍的减慢。

      当然了,做预先设计,就会涉及度的问题,也就是第二个问题,度如何来把握?

      我想大家也不是不赞成预先设计,只是由于害怕过度,所以放弃,我觉得不好。不能因为怕过度,就找个理由,找个什么“重构”的理由不进行丝毫的设计,我不相信这样的代码在后面还能重构,就算重构,所花的代价,完全可以在编码之前进行一点设计,就可以避免大量的浪费。

      我个人完全不赞成“事先不设计”的观点,还完全鄙视那些没有搞懂agile,拿refactoring来推脱设计的人士。

      我也没有其他意思,就是觉得设计完全必要的,但是要把握度,尽量不要过,但是也不要太草率,草率开工,后患无穷,今年的我是十分有感触的。

      如果设计的度可以划分为1,2,3,4,5等级的话,我觉得至少需要进行到3级,至少也要及格吧。往后面可能是过度了,但是往前的话,肯定是不充分,编写的代码在后面会被大量的抛弃。这还好,主要是浪费的时间和精力无法找回了,最重要的人的斗志,斗志减退了,就真的很难找回来了。

      我见过很多最终作总结的时候,说设计不充分,所以修改很痛苦,越到后面越修改的慢。但是,让他做设计的时候,他又说什么agile,不要过度,不要进行预先设计,我觉得这不就是矛盾吗?我也不针对某些人,但是这就是很明显的矛盾。只是觉得这样会浪费大家的时间,为什么不预先设计一点点呢?预先思考一点点,也许后面就不会那么痛苦了。

     

 

结论

      总之,个人觉得预先设计是非常必要的,是必不可少的。但是度需要把握,不要过深,否则会陷入其中很难自拔,设计过度了,加大了开发的难度,影响后续开发工作。但是也反对那些因为怕过度,就不进行设计,还拿agile来搪塞的tx。

      agile我最近会开始学习,我需要自己好好的理解一下,是不是他们口中说的思想,我觉得应该不是,肯定是很多人曲解里面的意思。不过也难免,毕竟是国外的思想,国外的环境和我们不一样,国外人的思考方式也和我们不一样,到了我们这里被一些人在曲解了,这样就会发生误会了。

      国外可以成功的理念,在国内不一样可以成功,甚至会失败。至少需要修正,根据国情来修正。

      本文没有其他意图,只是想听听各位经验丰富的老兵的一些经验之谈。感谢大家耐心的看完我的这篇唠叨。

分享到:
评论

相关推荐

    认识计算机教学设计(2).doc

    本节课第一课时主要了 解计算机的发展史以及硬件知识等,由于同学对计算机的硬件知识可以说是一点都不了 解,在本节课中会运用flash小动画让同学们有个感性的了解,并运用实物让同学们有个 更加直观的认识。...

    认识计算机的各个部件-教学设计.doc

    前者由于缺少实物展示,导致 学生感受度不高,学习兴趣不大。后者虽然弥补了前者不足,但受实物携带太多不便, 实物展示空间范围受限,计算机的拆解与组装化费时间过长等因素影响,教学效果仍不 理想。 有没有办法,...

    结构设计大赛软件指导.doc

    作为比赛的参与者,我现将结合自己第二届结构设计大赛中的参赛作品,对在 比赛中如何正确使用软件来指导设计这一点的相关认识和经验略作总结,供各位参考。 一、结构设计大赛的特点 在实际桥梁设计中,应遵循安全、...

    数据库设计思想.docx

    ( 汗~~ 好象超级白痴与低级白痴的区别,超级白痴应该拽一点~) 冗余是为了换去效率,如果在你的数据库项目中冗余并不能提高效率那就保持现有标准! E--R图没有标准答案 E--R图没有标准答案,但总得结构清晰、关联简洁、...

    二十三种设计模式【PDF版】

    关于本站“设计模式” Java 提供了丰富的 API,同时又有强大的数据库系统作底层支持,那么我们的编程似乎变成了类似积木的简单"拼凑"和调用, 甚至有人提倡"蓝领程序员",这些都是对现代编程技术的不了解所至. 在...

    毕业设计:基于BS产品销售管理系统(源代码)

    认识到这一点,公司就更要抓住机会,组建公司自己的网站,不但可以扩大公司的知名度,方便了用户,从而给公司本身也带来了新的发展生机。 杭州荣利布业、大西纺织有限公司根据上述情况及其他一些相关情况,结合公司...

    窗帘销售网站平台设计-asp

    认识到这一点,公司就更要抓住机会,组建公司自己的网站,不但可以扩大公司的知名度,方便了用户,从而给公司本身也带来了新的发展生机。 杭州荣利布业、大西纺织有限公司根据上述情况及其他一些相关情况,结合公司...

    毕业设计:ASP窗帘销售网站平台设计(源代码)

    首页介绍了整个网站的内容,包括的内容有: ... 相关搜索:输入的内容将会为你搜索有关的...认识到这一点,公司就更要抓住机会,组建公司自己的网站,不但可以扩大公司的知名度,方便了用户,从而给公司本身也带来了新的发

    基于J2EE框架的个人博客系统项目毕业设计论...

    我们掌握了数据库及其应用技术、数据库原理、计算机网络技术等课程,对数据库的设计、应用、维护及局域网的组成有了深刻的认识与一定的动手实践能力,考取了信息处理、程序设计、数据库技术等国家IT认证。...

    基于J2EE框架的个人博客系统项目毕业设计论文(源码和论文)

    我们掌握了数据库及其应用技术、数据库原理、计算机网络技术等课程,对数据库的设计、应用、维护及局域网的组成有了深刻的认识与一定的动手实践能力,考取了信息处理、程序设计、数据库技术等国家IT认证。...

    并行计算机体系结构-硬件-软件方法.pdf

    另一些人专注于特定的项目,但没有认识到可用于替代方法的原则。 该领域的研究报告提供了大量的经验数据,但还没有提炼成一个连贯的画面。 我们希望通过集中注意技术融合背景下的突出问题,而不是使我们走到这...

    布线规则.txt

    3 1. 一般规则 1.1 PCB板上预划分数字、模拟、DAA信号布线区域。...例如对6- 10 层的内存模块PCB 设计来说,选用10/20mil(钻孔/焊盘)的过孔较好,对于一些高密度的小尺寸的板子,也可以尝试使用8/18Mil 的...

    基于ASP的窗帘销售网站系统(源代码+说明报告)

    认识到这一点,公司就更要抓住机会,组建公司自己的网站,不但可以扩大公司的知名度,方便了用户,从而给公司本身也带来了新的发展生机。 杭州荣利布业、大西纺织有限公司根据上述情况及其他一些相关情况,结合公司...

    《计算机基础》网络课程教学网站【文献综述】.doc

    文中相关 概念的阐述,特别是网络课程评价本质内涵的阐释,澄清了学术界当前关于网络课程评 价的一些模糊或错误的认识:提出的网络课程评价模式为我们评价网络课程提供了理论基 础和具体操作步骤,具有一定的现实意义...

    三种服务器的结构.doc

    看完上面的简单介绍,相信各位对这3种服务器已经有个基本的认识了,下面我们就来 一一细说,为大家做更详细的讲解: 什么是塔式服务器: 塔式服务器应该是大家见得最多,也最容易理解的一种服务器结构类型,因为它的...

    基于BS产品销售管理系统

    认识到这一点,公司就更要抓住机会,组建公司自己的网站,不但可以扩大公司的知名度,方便了用户,从而给公司本身也带来了新的发展生机。 杭州荣利布业、大西纺织有限公司根据上述情况及其他一些相关情况,结合公司...

    侃侃单片机的裸奔程序框架

    然而这只是嵌入式开发中的一点皮毛而已,在接触过多种MCU,接触过复杂设计要求,跑过操作系统等等后,我们在回到单片机的裸机开发时,就不知不觉的就会考虑到整个程序设计的架构问题;一个好的程序架构,是一个有...

    空间直角坐标系.doc

    本节课的内容是非常抽象的,试图通过教师的讲解而让学生听懂、记住、会用是徒劳的,必须突出学生的主体地位,通过学生的自主学习与和同学的合作探究,让学生亲手实践,这样学生才能获得感性认识,从而为后续的学习并上升...

    ETL-SSIS培训教程.pptx

    SSIS初步认识 3、页面介绍 菜单栏、工具箱、设计区、连接管理器、解决方案资源管理器等 菜单栏:所有的菜单选项 工具箱:所有的组件 设计区:开发组件区域 连接管理器:当前SSIS包所用到的数据源 解决方案资源管理...

    打冰雹游戏源程序

    本次课程设计利用《软件设计基础-VB》课程中所学到的编程知识和编程技巧,完成具有一定难度和工作量的程序设计题目,帮助学生掌握编程、调试的基本技能,独立完成所布置的任务。 要求: 1、对系统进行功能需求分析 2...

Global site tag (gtag.js) - Google Analytics