惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

阮一峰的网络日志
阮一峰的网络日志
D
Darknet – Hacking Tools, Hacker News & Cyber Security
S
Schneier on Security
The Last Watchdog
The Last Watchdog
Cyberwarzone
Cyberwarzone
S
Securelist
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
C
Cyber Attacks, Cyber Crime and Cyber Security
L
Lohrmann on Cybersecurity
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 司徒正美
The Cloudflare Blog
V
V2EX
博客园_首页
博客园 - 聂微东
Vercel News
Vercel News
人人都是产品经理
人人都是产品经理
G
GRAHAM CLULEY
T
Tenable Blog
Last Week in AI
Last Week in AI
Y
Y Combinator Blog
L
LINUX DO - 最新话题
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
SecWiki News
SecWiki News
博客园 - 三生石上(FineUI控件)
S
Secure Thoughts
N
News | PayPal Newsroom
T
The Blog of Author Tim Ferriss
The GitHub Blog
The GitHub Blog
T
Troy Hunt's Blog
博客园 - 【当耐特】
Forbes - Security
Forbes - Security
H
Hacker News: Front Page
A
About on SuperTechFans
B
Blog RSS Feed
Engineering at Meta
Engineering at Meta
MongoDB | Blog
MongoDB | Blog
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
罗磊的独立博客
D
DataBreaches.Net
P
Privacy & Cybersecurity Law Blog
Schneier on Security
Schneier on Security
Application and Cybersecurity Blog
Application and Cybersecurity Blog
Google DeepMind News
Google DeepMind News
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Jina AI
Jina AI
D
Docker
P
Proofpoint News Feed

博客园 - zsi

在线程中调用SaveFileDialog DSOFramer 之一:在 64 位系统注册 DSOFramer GridView 绑定数据不满一页时填充空行的方法 GridView 始终显示 Pager 分页行的一种方法 Chrome: Google加入浏览器大战之兼容性 调用unrar.dll时SEHException外部组件异常的处理 ASP.NET 2.0无法打开到 SQL Server 的连接 扯扯OpenFileDialog和.NET的缺省目录 给ASP.NET程序换换地儿 对象序列化:经验小结 对象序列化:使用XmlSerializer走完最后一步 对象序列化:使用System.Xml.Serialization命名空间 在.NET中实现对象序列化 了解HTTP协议一些有用资料 Yahoo!十岁! 在VB.NET中处理构造函数时值得注意的两个陈述 微软新发布的共享设计模式的WIKI 另人费解的IsNot关键字 也说金山词霸2005内存泄露的问题
还不快进入Design Pattern的世界?
zsi · 2004-12-23 · via 博客园 - zsi

      上周,Design&Pattern团队举行了主题为“设计模式在软件开发的应用”的讨论会。我是通过蝈蝈Design&Pattern团队《设计模式在软件开发的应用》讨论会议记录idiorDesign&Pattern团队《设计模式在软件开发的应用》精华版才知道的。讨论的内容非常精彩,可惜我给错过了。 

      不过没关系,我还可以做些亡羊补牢式的温习和思考,千万要记得,下次不要错过了。

1. 什么是设计模式


     《设计模式》中引用Christopher Alexander的话说:“每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心。这样,你就能一次又一次地使用该方案而不必做重复劳动”。 
      它们帮助设计者将新的设计建立在以往工作的基础上,复用以往成功的设计方案。 
      目的是将面向对象的设计经验作为设计模式记录下来。 
      设计模式使人们更加简单方便地复用成功的设计和体系结构。将已证实的技术表述成设计模式也会使新系统开发者更加容易理解其设计思路。 
      大师们的解释已经足够明了了。

      我觉得设计模式属于方法学的范畴。它的目的非常简单:帮助人们通过复用成功的解决方案或经验来解决实际问题。学习设计模式的有效途径之一就是在在实践中学习,在实践中理解,在实践中总结。我很认同dudu的观点,即:在编程中不知不觉地使用模式解决问题。这里的不知不觉有两种可能,一种是从未学习或接触过设计模式,但是在实际工作中却在不知不觉的使用它解决问题;另一种是对设计模式有深刻的了解,在思考和解决问题的时下意识的使用设计模式。我想最高境界里的“不知不觉”更倾向于后者,前者虽然在做着设计模式的事情,但还没有抽象到模式的层次,处于认识的混沌阶段。

3. 在程序中使用设计模式

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

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

 我觉得项目与产品开发真的不一样。
 项目最重要的是进度,质量可以放后考虑。 
                                                         --jeseeqing

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

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

      首先,我必须申明:我认为,在程序使用设计模式并不会降低开发效率,相反,很多情况下,这恰恰是提高开发效率的有效途径之一。因此,我的观点是不管是做项目,还是做产品,也不管公司是否要求使用设计模式,自己在写代码的时候都应该有意识的使用设计模式。 

      对于旧系统的升级,也应该考虑设计模式的使用。当然没有必要把旧的系统全部推倒,只要从需要修改的地方重构就可 以了。这样一步步的来,就像滴在水杯中的墨水一样,最终墨水会扩散到整个杯子。

4. 使用设计模式需要重构代码,而没有TDD的重构又是危险和麻烦的,那么是不是所有的模块都要TDD呢?

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

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

    没有tdd,重构是很危险和麻烦的。
一些基础模块很需要tdd。 
                                                         -- idior

      wayfarer和idior的想法和我是一致的,那就是:不需要在所有的模块中都使用TDD,而是在某些模块,如基础类、业务类、数据访问类等模块使用TDD就可以了。

5. 设计模式在项目开发中对你们的帮助是怎样的?(wayfarer)

 好的维护性和可扩展性。 
                                                         --jeseeqing

 我觉得最大的好处就是省写很多代码。
 维护很容易,扩展容易。 

                                                        --蝈蝈

 提高我的生产力啊。
 还有那种写很少代码就能实现功能的虚荣感。 

                                                        --Zealot

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

                                                        --idior

 提高了开发效率。 

                                                        --dudu