Design&Pattern团队《设计模式在软件开发的应用》讨论会议记录
Design&Pattern团队《设计模式在软件开发的应用》讨论会议记录
时间:2004年12月18日20:00-21:00
地点:博客园聊天室
主持:Dudu、Wayfarer
参与:Design&Pattern(以下简称D&P)团队成员及对Design&Pattern感兴趣的博客园成员
主题:设计模式在软件开发的应用
昨天晚上,D&P团队成功举办了D&P团队的第一次集本活动,本次活动是在博客园的聊天室举行的,是一次讨论活动,是一次头脑风暴,主要讨论了设计模式在软件开发中的应用。
设计模式是面向对象的软件设计的经验总结,是解决某个特定的面向对象软件问题的特定方法。它的目标是使人们更加简单的、方便地复用成功的设计和体系结构。更好得完成系统设计。可见设计模式在软件开发中的重要性。
此次讨论会本着博客园的促进知识的共享,共同进步精神。讨论了模式的来源、模式的好处、如何在工作中自然而然的运用模式、过度的模式设计导致的问题、模式与面象对象开发(OOD),敏捷开发(XP),测试驱动开发(TDD)的关系,还有我们经然用到的模式有哪些等相关知识点。Dudu和wayfarer的精采发言给我们留下是深刻的印想,此次讨论活动气氛活跃,大家积极发言,毫无保留的交流使得本次活动圆满结束。通过此次讨论活动我们都明白了模式的重要性和OO思想的重要性,以及在设计中就加入模式考虑和运用模式来重构我们工作中的代码是重要的。时刻保持我们的代码简单,健壮和伸缩性最大化是软件开发中的极致,是取得商业竞争成功的保障。由于知识相关性,我们还谈到了一些其它问题,这些问题会在我们以后的讨论会中逐项讨论。应该说此次讨论会非常成功,大家应该学习到了不少东西(至少我是对设计模式有了新的认识),在这里希望以后多举办此类讨论会。另外D&P团队活跃成员吕震宇此次由于时间关系没能来参与此次讨论,实在是此次讨论会中的美中不足。我们能在博客园看到他对各种模式善述的精彩文章。
最后希望能更多的人关注博客园,关注D&P团队。
以下是此次讨论会中的摘要内容。经过本人的重构,但保持其接口不变原则。如需要原码(原始记录),请回复我。由于时间有限,加入水平一般,如整理有误之处,还请各位指正,谢谢!注:粗体字是人名,每行靠左边粗体文字表名是某人的发言。
自我介绍 :
小新0574,1983年的,现大三。目前在海口,家在浙江
idior,82
wayfarer,1976年生,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.net对Design 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 MFC的DocView就是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 说实话,有些模式实际上是用了,但是并不是和书上一样
蝈蝈 singleton,factory,模板,这些都是模式中经典的,但是相对比较容易的
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的体现
蝈蝈 XP和TDD,下次谈好吗
umlchina 架够要高一个层次
RoyDeng 架构?我倒覺得是用模式最多的地方
wayfarer 我会在公告上征求大家意见,关于下次交流的问题
春鱼 我觉得很多模式,我们已经在潜移默化的使用了
idior 同意roy
Zealot to RoyDeng : NOD
Samuel to RoyDeng: 实际上在设计架构时,并不会考虑模式
idior 具体编程可以不用,但架构一定要用好模式
wayfarer 我还有一个想法,就是目前在大学的计算机教育中,感觉理论总是与实际脱节
春鱼 大家还是有共识的. 这个团队不错啊. 我喜欢我们的团队
RoyDeng 你看看.NET的FrameWork
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 有些公司做webform连servercontrol都不用的
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