Design&Pattern团队《设计模式在软件开发的应用》讨论会议记录

 

Design&Pattern团队《设计模式在软件开发的应用》讨论会议记录

时间:200412182000-2100

地点:博客园聊天室

主持:DuduWayfarer

参与:Design&Pattern(以下简称D&P)团队成员及对Design&Pattern感兴趣的博客园成员

主题:设计模式在软件开发的应用

 

昨天晚上,D&P团队成功举办了D&P团队的第一次集本活动,本次活动是在博客园的聊天室举行的,是一次讨论活动,是一次头脑风暴,主要讨论了设计模式在软件开发中的应用。

设计模式是面向对象的软件设计的经验总结,是解决某个特定的面向对象软件问题的特定方法。它的目标是使人们更加简单的、方便地复用成功的设计和体系结构。更好得完成系统设计。可见设计模式在软件开发中的重要性。

此次讨论会本着博客园的促进知识的共享,共同进步精神。讨论了模式的来源、模式的好处、如何在工作中自然而然的运用模式、过度的模式设计导致的问题、模式与面象对象开发(OOD),敏捷开发(XP),测试驱动开发(TDD)的关系,还有我们经然用到的模式有哪些等相关知识点。Duduwayfarer的精采发言给我们留下是深刻的印想,此次讨论活动气氛活跃,大家积极发言,毫无保留的交流使得本次活动圆满结束。通过此次讨论活动我们都明白了模式的重要性和OO思想的重要性,以及在设计中就加入模式考虑和运用模式来重构我们工作中的代码是重要的。时刻保持我们的代码简单,健壮和伸缩性最大化是软件开发中的极致,是取得商业竞争成功的保障。由于知识相关性,我们还谈到了一些其它问题,这些问题会在我们以后的讨论会中逐项讨论。应该说此次讨论会非常成功,大家应该学习到了不少东西(至少我是对设计模式有了新的认识),在这里希望以后多举办此类讨论会。另外D&P团队活跃成员吕震宇此次由于时间关系没能来参与此次讨论,实在是此次讨论会中的美中不足。我们能在博客园看到他对各种模式善述的精彩文章。

最后希望能更多的人关注博客园,关注D&P团队。

以下是此次讨论会中的摘要内容。经过本人的重构,但保持其接口不变原则。如需要原码(原始记录),请回复我。由于时间有限,加入水平一般,如整理有误之处,还请各位指正,谢谢!注:粗体字是人名,每行靠左边粗体文字表名是某人的发言。

 

自我介绍

小新05741983年的,现大三。目前在海口,家在浙江

idior82   

wayfarer1976年生,98年毕业,工作六年了,不过一事无成 76  ,现在在重庆中兴研究所。  

vcfly.net,我叫vcfly,81年的,现在在北京直博,喜欢软件开发,     

wayfarer MSN和邮件地址大家都知道了  还有一个重要的一条,至今未婚  

Zealot     我叫Zealot, 现在太原一家软件公司,  

小新0574,我暂时还没加入这个Team,是来凑热闹的,呵呵  

蝈蝈       我叫蝈蝈,在深圳金蝶  

Zealot     准备辞职,过了年起深圳    

umlchina       77年的2000年毕业,在北京混呢   

RoyDeng       我叫RoyDeng,廣州的  

idior       我南京在校研一23      

Samuel       26 ,  北京,软件开发  

dudu       我在扬州,77    

vcfly.net Samuel:我也在北京上学,有空常联系  

 

<BEGIN>

wayfarer 我想先问一下,大家对设计模式的认识是怎样的?   

vcfly.net 我了解的不多,但我对它很喜欢,因为我平时写程序多了,就必须会有这个问题  

蝈蝈       我是今年开始接触的,以前有人问我,但我没有听说过。。。。。真不好意思    

idior       来源于建筑,解决常见问题的优秀方案   

Zealot      vcfly.netDesign Pattern的感受一样   

wayfarer 是啊,今年我在面试应聘者的时候,就有很多人不知道设计模式  

蝈蝈       其它人也谈谈对设计模式的认识呀  

vcfly.net 有些东西,是在一定的积累之后的必须产物     

umlchina       我感觉其实模式体现的就是一种思想,一种思维方式  

wayfarer 我感觉其实模式体现的就是一种思想,一种思维方式 ,对,我赞同!  

vcfly.net 我同意,设计模式就是一种思想,但思想的基础是要有一定的实践经验,我感觉 是这样的  

RoyDeng       設計模式應用挺廣的,我感覺到設計框架時特別有用  

umlchina       应该把设计模式和软件重构联系起来  

wayfarer 从设计模式最基础的,它首先还有一个方法问题  

vcfly.net 单纯的讲模式是没有什么太大的意义的,  

vcfly.net 是,重构是很重要的,  

wayfarer 我认为在应用设计模式上,有两种方式  

蝈蝈       大家平时用的最多的是什么模式呢?我经常用的也就是single例和工厂模式多一点  

vcfly.net 我写程序时,考虑的不光是功能的实现,扩展性和伸缩性,是一定要考虑的  

Samuel   .不知道上班的几位,真正能用到重构的时候多不多,有没有时间给你重构  

RoyDeng       .NET類庫裏到處都用到模式,Java的也一樣    

wayfarer 从传统的软件开发出发,对体系结构设计的时候,如果熟悉设计模式,那么设计的软件在扩展性和健壮性,都比较好  

umlchina       to Samuel 其实设计框架类库经常需要软件重构  

vcfly.net wayfarer  

vcfly.net 是的,我也觉的重构本身就是一个模式  

蝈蝈       要重构是需要tdd支持的,对吗  

wayfarer 但如果从TDD的角度出发,设计模式主要还是在重构中体现  

dudu       模式我觉得可以理解为软件设计的一个理论,学好理论很重要,但更重要的是如何运用理论,就像懂得了孙子兵法,不一定你就能打胜仗  

umlchina       因为经常做功能和代码的修订和改进  

vcfly.net 理论加实践经验了  

Zealot     设计模式是为了更好解决对象设计、对象通信、重用, 建筑学、逻辑学中都有这样的概念。这是我的理解。  

蝈蝈       能讲讲理论学好了,怎么样来应用吗  

Samuel   to umlchina: 怎么说,事实上很难有时间给你重构  

RoyDeng       dudu說的是啊  

wayfarer 是啊。如果单独学习设计模式的理论,却无法应用到实践上就没用了  

umlchina       不是啊,就我理解因为一些基础的类库框架经常要在多个项目中使用  

vcfly.net 同意,实践是很重要的,就好比人在某些认识上的直觉一样  

wayfarer 设计模式和OOP之间是相辅相成的  

umlchina       经常需要改进  

蝈蝈       请大家讲一讲怎么样在code中加入模式呢,  

idior       对啊,那么工作中有机会吗?比如在zte   

wayfarer ZTE根本就没什么用  

vcfly.net 我觉的不是在代码中加入模式,而是在设计功能实现的时候考虑设计模式  

wayfarer 因为zte的开发很少用到OOP  

dudu       我觉得模式的最高境界就是你在编程中不知不觉地使用模式去解决问题  

Zealot     我在工作中更提倡二进制重用,而不只是代码重用。  

vcfly.net Great!  

Samuel   从小养成好习惯  

wayfarer dudu,这个很难做到阿  

umlchina       蝈蝈 其实应该是在设计模型的时候考虑模式,具体的模式有了,代码也就出来了  

蝈蝈       而不拿到模式去套代码对吗  

RoyDeng       覺得掌握好很純的OO分析設計才是最重要的,模式其實是很精簡的對象的思想  

wayfarer 当然,我也遇见过  

大坏蛋   同意dudu,我觉得模式应该成为解决问题的习惯  

Samuel       RoyDeng, bingo  

wayfarer 我以前就在设计中不知不觉用到了templete模式,后来看了设计模式,才知道这个就是templete  

蝈蝈       架构模式也属于这里面的  

umlchina       我感觉我学模式最大的收获是深入的对面向对象的理解  

wayfarer 当然template比较简单  

idior       对,oo理解透了,再去看模式  

vcfly.net 其实我们在写程序的时候,总是会不自觉的考虑如何实现更优,我觉的这本身就是在应用设计模式了,设计模式实际上是人们长期程序设计的总结  

Samuel    现有的模式实际是建立在oo的发展之上的  

wayfarer idior:学模式是必须有OOP的思想,但学模式能促进对OO的理解  

蝈蝈       之前不知道mvc后来才知道codebehind也是一种模式    

Samuel   to 蝈蝈  

Samuel   MFCDocView就是codebehind  

vcfly.net 同意,    

umlchina       可是有时候经常是在过度的使用模式,因为模式代码编写数量有时候要多很多,可是实际所起的却作用不大   

wayfarer 其实,要在项目中应用模式要用好,还是很难的  

vcfly.net 事实上,我觉的大部分模式是被发现而不是被设计出来的,我们大家在平时写代码时就在不自觉的应用某些模式  

RoyDeng       所以模式覺得應更多用在框架的層次  

Zealot     其实好多人在工作中都用到了设计模式,但未必知晓或刻意去用它,我就是这样。后来看到有关模式的知识后才知道自己已经用到了。  

vcfly.net 凡事有个度,这很正常  

wayfarer 对。   

vcfly.net 非常同意Zealot,我就是这个意思  

Samuel   最重要的是实践,当你在每次开发中都有思考,不是同一个项目的重构,而是在下一次的项目中重构上一个项目  

蝈蝈       抽象过后就很容易找到模板模式和工厂模式,单例模式的  

wayfarer 刻意的追求使用模式,并不好   

Samuel   我一开始问大家工作上重构的机会多不多就是这个意思    

RoyDeng       wayfarer 說的對,不應該可以用模式  

wayfarer 还有大坏蛋  

蝈蝈       我在工作中的重构机会不多,但是有的  

idior       我也很关心工作中用不用   

wayfarer 我在工作中还是经常要重构的  

umlchina       其实可以总结一下,什么样的环境下,应该使用什么样的模式  

小陆       对于重构,我有这样的一些理解:  

dudu       我想我们使用模块是为了解决重复代码的问题,我们在编码时应该更多地考虑如何避免重复代码,而不是采用哪种模式  

idior       难道你每次都tdd   

蝈蝈       但每次重构后都会觉得代码改善了不少  

RoyDeng       我覺得應該在框架層次的設計中用模式  

vcfly.net 可是你重构也花费了时间  

Samuel   在于什么环境用什么模式,应该是已经有很普遍的说法  

wayfarer 那倒没有,只是在一个阶段后,我会重新清理一下我的代码,去除坏味道  

蝈蝈       看了TDD的书,说有重复代码就需要重构,真的很可怕,我们的系统中确实有很多copy的代码  

vcfly.net 这个比喻很形象,我很喜欢  

idior       没有tdd,重构是很危险和麻烦的   

大坏蛋   copy的代码是应该重构的  

vcfly.net 这也是一种重用吧:)  

umlchina       同意dudu的,我写代码的第一原则就是避免重复代码  

大坏蛋   否则不利于维护  

Samuel   为什么会有copy的代码?  

蝈蝈       有测试代码保障重构吗  

wayfarer 其实,为什么我说设计模式很重要呢?因为有很多设计,如果应用了设计模式的话,可以很容易实现。如果你不知道这个模式,也许会令你的设计走向死胡同  

Zealot     我自己的原则是如果copy code三次以上,我就会重构它  

vcfly.net 或者说我们的具有某种特定功能的代码一定要通用性好一些,  

大坏蛋       vs2005对重构支持不错  

umlchina       copy代码是因为类的层次结构没有设计好,或关系没有做好  

Samuel   从来不copy代码  

wayfarer 我在前一个项目中,还没用到TDD。现在我正在学习TDD,希望能在以后的项目中用到  

小陆       开始设计的时候,用最简单的方式实现。随着需求的复杂,或者发觉出更多的需求,这时候就不可避免的重构,首先整理现有的功能,这时候可能就要应用各种复杂的模式,等到重构就绪,再添加新的功能。  

vcfly.net 所以就像学武功一样,要掌握一些招式,然后在实践中去领悟  

大坏蛋   我的代码copy一次就重构  

Allen Lee       不好意思,网络问题,我是路过的,来凑热闹。  

wayfarer 同意小路和vcfly  

Zealot     如果copy代码一次就重构,我认为不够经济  

wayfarer 欢迎Allen  

蝈蝈       因为不一定每个系统都是新做的,我做的是人家做了二年的系统还在做,  

Samuel   实际项目中的代码另当别论  

蝈蝈       这种重构的风险很大,你们不觉得吗,  

wayfarer 呵呵,看来我们今天这个主题有点大了,毕竟设计模式包含的东西很多  

Zealot     同意蝈蝈的观点  

vcfly.net 一个很突出的问题是,系统的功能越来越复杂,这就需要考重用和重构  

dudu        小陆,这是典型的XP思想,  

wayfarer 在重构过程中,做测试是免不了的  

umlchina       我感觉开始设计的时候,不应该用最简单的方式实现,应该充分考虑未定的变动因素  

蝈蝈       且没有测试代码,敢重构吗,除非有非常大的把握  

wayfarer       umlchina,这其实就是两种开发思想的问题  

Samuel   一般来说,修改旧有系统,不如重新开发新的  

vcfly.net 但你一开始很难想的很全面的,所以你需要有一些基本的招式,  

小陆       同意蝈蝈的观点,没有测试程序,重构一个现成的系统是不可能的  

umlchina       但是想总比不想要好点  

Samuel   当你不能考虑的很全面的时候就不要做没有考虑的部分  

umlchina       以后重构也方便  

Zealot     但是想回花费时间,商业开发,成本很重要  

Samuel   但是至少你的框架是易伸缩的  

蝈蝈       那是不是就不重构呢,肯定不是的,能重构肯定能运用模式的  

wayfarer 我在读fowler的重构时,就觉得他写的步骤太繁琐,但后来觉得,这种小心谨慎是值得的  

vcfly.net 伸缩是一个度的,我们应该让他在一定的范围内  

umlchina       你可以尽量做到容易修改  

Samuel   小而简单的系统是最具有扩展性的  

vcfly.net 要知道通用性和专用性永远是矛盾的  

Samuel   度是肯定的    

idior       对啊,他是再没有测试代码得情况下做得  

蝈蝈       XP强调只作目前需要的  

wayfarer 我的想法有点中庸  

Samuel   XP还强调测试优先  

idior       有个问题哪个公司有用pairwork  

蝈蝈       其实TDD也是这样的,先写测试后来代码,保证所以的代码是因为有测试才出的  

vcfly.net 我以前改过一个5000行的程序,代码我给降到了1800行,伸缩性扩展性全上去了,而且功能也多了很多,但是执行速度却降成了50%  

wayfarer 当我们接到一个项目的时候,需要做好需求的调研,然后做好设计  

Samuel   不相信中国的公司会用pairwork  

vcfly.net 测试确实很重要  

春鱼       pairwork 是什么  

idior       呵呵,向往pairwork  

wayfarer 但在设计过程中,我会在某些模块中应用TDD的方式  

蝈蝈       也就是有需求才会有测试代码,这样就没有过度了,所以做的都是现在最需要的  

Samuel   设计很重要,但是千万不要过度!  

wayfarer  就是结对编程  

umlchina       从最开始应该有个大概的方向,哪些是可变的,哪些是不太可能变的,对于可变的部分怎么处理,等等  

idior       一些基础模块很需要tdd  

wayfarer 国内的客户水平还达不到XP的要求  

Samuel   to idior: pairwork也不一定是很好的  

vcfly.net 我在测试的时间近乎苛刻,有时一个只有不到万分之一的片差,我也会考虑的  

大坏蛋   大家支持结对编程吗?  

Zealot     设计好的框架,重构,代码复用的最终目的是为了降低开发成本、维护成本等,也不应该为了重构而重构  

Samuel   非常反对wayfarer  

Samuel   客户的水平  

wayfarer 呵呵,为什么?  

Samuel   这句话  

蝈蝈       我很喜欢结对编程  

Samuel   客户永远是对的  

Samuel   客户不懂的  

vcfly.net 反对Samuel  

Samuel   需要你去引导  

wayfarer 是啊,客户的水平目前是达不到阿  

dudu       支持结对编程  

Samuel   国外的客户  

idior       我也对国内客户没信心  

RoyDeng       赫赫,客戶就是米飯班主阿  

vcfly.net 如果客户提出一个理论上无法实现的要求,你会觉的他是对的吗  

Samuel   拿光驱当茶杯座  

idior       尤其是看了 DDD  

Samuel   也是有的  

umlchina       没有试过结队编程,听起来很有意思  

Samuel   是的,他为什么会提出?  

蝈蝈       虽然不是做XP,但经常会和同事坐在一起写代码,之前不知道那叫结对编程,后来有了这个概念,觉得这种感觉  

Zealot     不要抱怨或期待客户的水平如何如何,客户要完成自己的需求,又不想多花钱,这是很自然的。  

蝈蝈       很好  

vcfly.net 是因为他不清楚技术的细节  

wayfarer 呵呵,我们有点扯远了。先回到主题上来吧  

Zealot     他没有必要清除  

RoyDeng       XP能應付大型的項目嗎?  

vcfly.net 好,我们还是来谈设计模式吧  

Samuel   你需要去理解它,如果确实是做不了,要想办法去说服  

idior       主题  

Zealot     他没有必要清楚技术细节。  

wayfarer 欢迎jaseeqing  

jeseeqing       大家好,我是jeseeqing,刚从东莞回来,不好意思,迟到了  

vcfly.net 呵呵,这不又回来了吗:)  

umlchina       来了就好,呵呵  

wayfarer 各位,还是围绕主题谈吧。  

idior       Zealot : 看过domain driven 没有   

Samuel   客户并没有off topic 呵呵  

vcfly.net 所以客户有时会提一些无法实现的要求  

Zealot     to idior :没有  

wayfarer 希望关于结对编程和客户交流等问题,留到下一个主题来  

umlchina       对于客户的变态需要,坚决抵制  

蝈蝈       大家经常用到的模式有哪些呢  

vcfly.net 呵呵,好的  

vcfly.net 对,这个话题好  

大坏蛋   好,期待  

jeseeqing       对于TDD,我喜欢  

umlchina       factory  

idior       呵呵,那种设计对客户要求就很高  

Samuel   to umlchina, 抵制不是好的办法,引导才是正道  

wayfarer 好,请大家回答蝈蝈的问题  

小陆       从来没有尝试过真正的xp,试过一次结对编程,发现效果很不好,就停止了。有人有成功的经验吗?失败的教训也行啊  

Samuel       singleton  

Samuel   fatory  

idior       factory  

Samuel       factory  

wayfarer 工厂模式自然是最多的了  

jeseeqing       我尝试过,可是只尝试过几个实践  

RoyDeng       Composit  

蝈蝈       就这些简单的吗  

vcfly.net 是的,我也这样认为,工厂模式  

Zealot     你得考虑客户为什么有这么变态的需求,他不管你如何实现,他要结果,如果你用变通的方法实现的他原始的需求,他一样高兴  

vcfly.net 复杂的模式,我平时用的很少  

idior       observer  

wayfarer 不要盲目追求复杂的模式,往往会造成过度设计  

vcfly.net 好了,Zealot,我们暂不讨论这人了  

Yok       factory,composite,stratergy...  

Samuel   说实话,有些模式实际上是用了,但是并不是和书上一样  

蝈蝈       singletonfactory,模板,这些都是模式中经典的,但是相对比较容易的  

umlchina       state  

wayfarer 不过Adapter模式还是很有用  

idior       templatebridge其实应该最多  

Samuel   to Zealot: nod  

蝈蝈       wayfarer说的  

vcfly.net 那也很好啊,为什么要一样的,要活学活用  

蝈蝈         

wayfarer 尤其是C#不支持类的多继承  

RoyDeng       Composit 在有樹狀結構的場合應用。非常普遍  

umlchina       外观模式  

Samuel   不是学的  

wayfarer       Command模式用的也比较多  

umlchina       proxy  

Samuel   是用了才知道  

Samuel   proxy  

wayfarer  对,还有facade模式  

Yok 其实很多是写完后...  

Samuel       command之类  

idior       facade还真没怎么用过,估计公司会用  

Yok 才知道原来这是xxx模式!  

wayfarer 其实Template模式,我相信很多人都用过  

umlchina       facade比较好用尤其是对付一大堆杂乱的代码的时候  

Zealot     to Yok : 我也有同感啊  

蝈蝈       其实如果拿模式到一个系统中去套,我相信所有模式都用的上的  

vcfly.net 关键是要用的合适   

wayfarer 蝈蝈,这要掌握度的问题  

Samuel   to 蝈蝈,夸张了  

春鱼       大家真的对模式这么在意吗?有没有人谈谈“架构”  

wayfarer 设计模式不是所有的都好  

jeseeqing       我觉得架构是建立在模式这上的  

dudu       我现在在编程中也不刻意去考虑采用哪种模式  

umlchina       你可是变通啊  

蝈蝈       所以我们不会有了代码再有模式,而是在设计时就加入了模式  

wayfarer 春鱼:架构当然重要了。这是我们一个主题谈不了这么多  

RoyDeng       春鱼,同意阿  

Zealot     让模式去适合系统,而不是反之  

vcfly.net 凡事皆如此  

umlchina       呵呵,我有时候用的都是四不象模式  

春鱼       明白  

蝈蝈       还有就是重构中运用模式  

wayfarer 我也希望通过这次交流,集中几个大家比较关注的话题,留到下一次谈  

Samuel   to 春鱼:架构需要悟,和patten不是一个层面,模式接近语言层面  

Samuel   pattern  

春鱼       Sam哥,很对啊  

wayfarer 恩,对架构要谈起来,就没有那么容易了  

idior       强烈推荐bridge strategic state 他们是   Favor composition over inheritance的体现  

蝈蝈       XPTDD,下次谈好吗  

umlchina       架够要高一个层次  

RoyDeng       架构?我倒覺得是用模式最多的地方  

wayfarer 我会在公告上征求大家意见,关于下次交流的问题  

春鱼       我觉得很多模式,我们已经在潜移默化的使用了  

idior       同意roy  

Zealot     to RoyDeng : NOD  

Samuel   to RoyDeng: 实际上在设计架构时,并不会考虑模式     

idior       具体编程可以不用,但架构一定要用好模式  

wayfarer 我还有一个想法,就是目前在大学的计算机教育中,感觉理论总是与实际脱节  

春鱼       大家还是有共识的. 这个团队不错啊. 我喜欢我们的团队  

RoyDeng       你看看.NETFrameWork  

Samuel   设计架构或者平台,主要的是通用性、延展性和功能  

dudu       我在当听众  

Zealot     to wayfarer : 跑题了  

vcfly.net 是理论在平时的实践中并没有有处  

idior       Samuel怎么会这么说?  

大坏蛋   提前大学,我觉得不错  

RoyDeng       FrameWork 到處都有模式  

蝈蝈       理论我现在也觉得很重要了,  

wayfarer 我和震宇对于这方面也有交流。  

Samuel   确实如此  

idior       不同意Samuel  

蝈蝈       之前不会理解这些,可是出来了才知道软件工程的重要  

大坏蛋   什么也学不到,所以我学化学的可以补上  

wayfarer 我发现很多所谓的计算机培训和教育,都没有提高到软件工程的高度来  

jeseeqing       有一些OOP原则也和模式有关呀  

Samuel   当决定了你需要的东西,用模式只是水到渠成  

umlchina       理论也重要,可大学里好多理论都没用  

Samuel   不用亦可  

idior       跑题了吧  

dudu       大家还是讨论会议主题吧  

Samuel   off topic again  

蝈蝈       不过主要是没有思想的认识  

vcfly.net 软件工程,我觉的是需要一定的编程积累和感悟的,那些培训都是短期效应,当然提不上来了  

wayfarer 呵呵:)看来是我跑调了  

RoyDeng       我覺得越是面向商業,我們所說的模式就用的越少  

Zealot     同意vcfly  

Samuel   to RoyDeng: nod  

Samuel   但是  

vcfly.net 是的,因为他要考虑商业风险和代价  

dudu       “设计模式在项目开发中的应用”  

wayfarer 其实我也是大学教师啊,所以比较关心教育的问题  

idior       我覺得越是面向商業,我們所說的模式就用的越少 对阿  

idior       很郁闷a  

蝈蝈       framework中封装了些什么模式呢  

Samuel   如果设计这的水平高,是可以充分使用的  

wayfarer 关键是,我们是做项目,还是做产品  

春鱼       RoyDeng: 如何理解?  

RoyDeng       商業就是現實  

vcfly.net 我给一些公司写过软件,他们只考虑功能的实现,基本就不考虑后期的维护,只要拿到钱了,他们就不管了,所以你和他们说模式,全是废话  

Samuel   to wayfarer: nod and nod and nod again!   

jeseeqing       framework中除了GOF模式外,还有很多其它的模式吧,比如Dispose模式  

Samuel   project or product  

idior       那怎么办呢  

Zealot     我也遇到过这样的客户  

RoyDeng       模式是比較主觀的東西  

wayfarer vcfly,你当然不能给客户说模式了  

umlchina       只要你接触设计模式,你就会迷上它 ,我感觉模式的意义是创作出尽量“完美”的代码  

Zealot     这样的客户大多作软件是为了政绩  

vcfly.net 总之他们是只看钱的,  

jeseeqing       ,程序员都是完美的  

wayfarer 你只能说你的产品性能、功能,所需的时间,价格,  

春鱼       umlchina: 很深入啊  

Samuel   呵呵,umlchina,这就是我们programer的毛病  

vcfly.net 呵呵,有人说我是越完美主义者  

大坏蛋   模式便于理解代码和维护,对一个需要维护的系统,不应用模式,吃亏的是程序员  

蝈蝈       模式的引入没有阻碍我们公司的发展,其实用好了才是关键  

Yok 大家会把性能放在第一位么  

wayfarer 模式是帮助你,在设计中提高产品的性能,功能和未来的扩展性  

idior       有公司面试要求模式的吗?不是说面试者个人  

Samuel   事实上是没有完美的  

jeseeqing       ,我以前的公司就面试过  

wayfarer 我以前公司就要求  

vcfly.net 所以我总是在尽量去完美,就像找BUG 一样  

Zealot     性能在现在一般的项目中,很次要  

大坏蛋   性能我从不放第一位,不管客户如何强调  

RoyDeng       我的觀點:商業就是現實,模式是比較主觀的東西 ,我們所說的模式就用的越  

idior       什么公司?  

umlchina       我感觉实际应用中,模式对性能的影响可以忽略  

Samuel   商业和研发是不同的  

jeseeqing       一家港资公司,GIS行业开发  

vcfly.net 所以,有时我就很矛盾  

蝈蝈       这是做产品的项目的不同,做产品一定要考虑性能的  

wayfarer 成都的一家小公司,凯威斯特  

Yok 有些公司做webformservercontrol都不用的  

idior       zte应该很看重性能吧  

RoyDeng        :    

jeseeqing       我觉得项目与产品开发真的不一样  

umlchina       理论上来说会使性能降低  

vcfly.net 有时我想好好的设计一段代码,可他们只要实现,根本就不考虑一些问题,哎  

, 其实我也做过些WebForm的应用,但我很怕用服务器端控件,尽量用Html控件,所以你刚刚说的也是一个问题。。。 为什么怕服务端控件 ,怕慢   

大坏蛋   我更加看重代码的结构,然后才是性能  

jeseeqing       项目最重要的是进度,质量可以放后考虑  

wayfarer 我想问大家:设计模式在项目开发中对你们的帮助是怎样的  

wayfarer to idior:  

春鱼       開髮成本是一個問題啊  

jeseeqing       wayfarer:好的维护性和可扩展性  

蝈蝈       我觉得最大的好处就是省写很多代码  

Zealot     to wayfarer:提高我的生产力啊  

Yok 还有...偷懒  

idior       维护性和可扩展性 适应未来的变化  

dudu       提高了开发效率  

蝈蝈       维护很容易,扩展容易。  

umlchina       提高生产力,效率  

vcfly.net 同意: IDIOR  

wayfarer 其实,我们的主题要明确的是:设计模式确实很重要,但怎么用好它,什么时候用它,这个才是关键  

Zealot     还有那种写很少代码就能实现功能的虚弱感  

jeseeqing       wayfarer :当然还有程序员本身的特性,没有一个程序员看着自已很难维护的代码  

wayfarer 不能为了模式而模式  

蝈蝈       同意wayfarer  

Zealot     虚荣感  

RoyDeng       同意wayfarer   

Samuel   举个例子,gmail,大量的客户端脚本,但是很好用  

vcfly.net 我也同意war,,,  

jeseeqing       同意:不能为了模式而模式  

umlchina       可是,有时候经常不自觉的陷入“过度的设计”  

idior       呵呵,那种是刚学模式的人常犯的错  

jeseeqing       TDD中不存在过度的设计  

vcfly.net 同意  

wayfarer 过度设计:就是我所说的,什么时候该用它  

Zealot     你知道Gmail没有用server ctr ? 我相信用了  

dudu       首先我们要真正理解模式  

jeseeqing       我觉得现在的场面好像很乱,能不能确定一个明确的主题  

wayfarer 我之所以想成立这个团队,就是希望大家把设计与模式在实际开发或学习中所获得的经验与看法贡献出来,大家共同交流,共同进步!!  

Samuel   不知道用没有,概念应该类似,像它的loading,绝对是client script call server  

idior       理解oo对模式也就理解的差不多了,同样学习模式可以帮助你理解oo  

umlchina       同意idior   

jeseeqing       OO是理解模式的基础呀  

vcfly.net surly  

jeseeqing       没有OO的理论何来的模式,在面对过程中是没有模式可言的,个人认为  

idior       难道理解了00,你学模式还困难吗?  

wayfarer 我始终将模式看作两个层面:一是思想,他能帮助我们理清设计的思想;一个就是工具,他能帮助我们有效地设计  

wayfarer 别把模式看得太高,但也不能低估  

idior       顺便说说模式的好处: 可以重用已有的好的设计,可以提供一套供程序员交流的语言 模式可以让你站在更高的角度去看待问题,看待设计的过程,更加体会OO的思想,而不是过早的卷入编码的细节。   看待问题应该从大处着眼,而不是关注于实现的细节。模式可以提升你看问题的抽象程度。这才是模式最大的益处。   模式是经过考验的思想,比那些突然的想法更可靠,更具有扩展性。通过学习模式将对OO的思想有更深的体会。   

小陆       其实计算机软件、硬件的每一点发展,都有商业利用作为驱动。效率、事务、分布式系统、数据挖掘、实时性。。。都是商业对技术提出的要求,而不是随着技术的提高给商业带来了什么可能。计算机技术不发展,商业也要做,只是做法不同罢了。  

蝈蝈       思想就是有OO的思想  

jeseeqing       模式最早来源于建筑领域  

vcfly.net agree with wayfarer  

Samuel   还有一句话,大家可能不爱听!  

wayfarer   

Samuel   概念就是商业  

Zealot     如何理解?  

Samuel   同样的,开源也是商业  

jeseeqing       概念就是商业,对程序员来说不是太关心这个  

wayfarer 钱才是硬道理!?  

vcfly.net 这话是你说的,还是听别人说的  

蝈蝈       我也觉得是这样的  

Samuel   我说的  

dudu       模式是很多人经验的总结,避免我们少走许多弯路,你可以不用模式,但你必须真正理解模式  

Zealot     但是你的老板比较关心  

idior       everything is commerce   

春鱼       别吓人了  

vcfly.net 理想和现实总是有差距的,真正的程序员往往是理解的  

wayfarer       Samuel的话充满哲理阿,不过好像又跑题了  

vcfly.net 打错了,是理想的  

umlchina       其实,我感觉模式精髓应该是“抽象”  

Zealot     同意dudu  

Samuel   faint  

jeseeqing       同意umlchina  

wayfarer 看来我们团队的技术交流n次都不够啊  

Samuel   就是抽象了  

蝈蝈       我也觉得抽象也是OO的思想  

jeseeqing       OOP中最关键的应也是Abstract  

vcfly.net 同意Samuel  

wayfarer 我看到大家都在发出思想的火花  

idior       对阿  

春鱼       我觉得模式还有利于沟通  

Samuel   模式何止20几种  

vcfly.net 不抽象出来,还能叫模式吧  

idior       面向抽象啊  

umlchina       怎么精练出模型,合理的结构  

wayfarer 面向抽象,面向接口  

vcfly.net 就是伪代码一样,通用有利于沟通  

Samuel   to jeseeqing: Interface, polymorphism  

Microtoby       除了是经验的总结外,其实模式也是程序人员交流的一种手段  

idior       模式是程序员交流的高级语言   

umlchina       呵呵,是啊 “拆” “装”  

dudu        :  我觉得模式还有利于沟通 Samuel :  模式何止20几种 vcfly.net :  不抽象出来,还能叫模式吧 idior :  面向抽象啊 Design & Pattern团队  17个人在交流

vcfly.net 有趣  

jeseeqing       他们不是同一个级别的Interface, polymorphism Abstract  

umlchina       一而二,二而一  

idior         

jeseeqing       Interface是通过Abstract才产生的呀   

Samuel       polymorphis is import, design to interface    

Samuel       important  

蝈蝈       请大家保持清醒的头脑  

vcfly.net great  

蝈蝈       谈我们最重要,最想要的东西  

vcfly.net design pattern    

wayfarer 其实,通过我对设计模式的学习,确实加深了我对OO的理解  

春鱼       我喜欢你们  

蝈蝈       抓紧时间,离预计的时间不多了    

umlchina       是啊wayfarer说出了我的心理话    

蝈蝈       我以前没有OO的思想,现在想一想,以前写的代码都是垃圾,  

wayfarer 今天的交流非常成功,我也看到了团队的希望  

jeseeqing       RoyDeng,你怎么像我的同事的名字  

春鱼       写垃圾代码的我们不要  

蝈蝈       其实这些类都是工具类,没有对象,没有行为。  

vcfly.net 不能那样想,人都是在发展的  

Samuel   most important, practice and think !  

Zealot     要,一样要,没有垃圾代码何来重构  

vcfly.net 你觉的你以前的代码的是垃圾,就说明你不是垃圾了  

RoyDeng       jeseeqing Jessie?  

Zealot     重构就是为了去处垃圾代码  

wayfarer 但是也有些问题,就是交流太发散了,使我觉得,好像明天也有交流的必要了    

dudu       建议大家床头放一本设计模式的书,没事就看看  

vcfly.net 同意  

春鱼       以前觉得是玩概念  

Samuel   发散好啊  

Microtoby       重构不是去处理垃圾代码,而是让程序更理性化  

idior       有人愿意对别人的代码重构吗?  

umlchina       对垃圾代码重构,难吧  

idior       有人愿意对别人的代码重构吗?  

蝈蝈       对垃圾代码重构应该比较困难,不过成就感也很强  

Samuel   dudu,书不重要吧,我从来没看过任何一本模式的书  

RoyDeng       是啊  

大坏蛋   如果模式用得好,代码写得好,自己会乐于维护自己写得东西,反之,就害怕维护,我离开第一个公司就是感觉自己写得程序太垃圾了  

wayfarer 但我最希望的是:大家通过今天的交流,应该也体会到一些东西。希望大家能够回去好好整理整理,团队期待有更多好的文章出现。  

idior       书很重要啊  

vcfly.net 那要看重要什么样的垃圾了  

Zealot     我也没有看过一本这样的书,但准备看一下,理清盖面  

Microtoby       试问,很多人都在修改那些开源的C#程序,难道这不是重构吗?  

Zealot     概念  

wayfarer 我这是在致闭幕辞了:)  

vcfly.net 好,我在听  

Samuel   趁没结束问一个事  

umlchina       可以研究一些老外的程序  

蝈蝈       通过交流我感觉到了OO和模式是我们生活code中不可少的  

wayfarer 预计的交流时间已经到了,但大家还可以继续交流,我想dudu不会收我们的费的  

蝈蝈       同时过渡的设计也是不可取的  

wayfarer 另外,我希望各位多关注团队  

idior       秘书发言了  

<END>

感谢各位精彩的发言。看完了这些,先放松一下自己吧。回味一下吧,是不是体验到了模式的力量了。请继续关注博客园,关注D&P团队。

                                                                  

                                                                  蝈蝈整理于2004-12-19

posted on 2004-12-19 09:44  蝈蝈  阅读(3465)  评论(17编辑  收藏  举报