模式痴迷

来源:互联网 发布:sql join顺序 编辑:程序博客网 时间:2024/06/05 09:25

Contributing to Eclipse [Gamma and Beck]一书的封底上,对 Erich Gamma 的简介中这样写到:“Erich Gamma作为经典著作《设计模式》一书的作者之一,与我们分享了他在软件设计的秩序与美上感受到的乐趣。”如果你曾经构思或者遇到过通过使用模式得到的优秀设计,就能够体会其中深意。

同时,如果你曾经构思或者遇到过密布模式但是设计糟糕的代码(因为它不需要模式的灵活或者精巧),你就会懂得模式的可畏。

模式的滥用通常是由对模式的痴迷而造成的。所谓模式痴迷,就是指某人对模式过于痴迷,以至于无法不在代码中使用模式。陷入模式痴迷的程序员可能会费尽心力地在系统中使用模式,仅仅为了得到实现模式的体验,或者也许是想因为编写出的确优秀并且复杂的代码而赢得名声。

程序员Jason Tiscioni曾经在SlashDot网站上发表了一篇文章(参见 http://developers. slashdot.org/comments.pl?sid=33602&cid=3636102),用如下版本的Hello World程序入木三分地对模式痴迷代码讽刺了一番。

你曾经见到过类似于Jason Hello World程序这样的代码吗?我不仅见过,而且已经见过太多次。

模式痴迷症并不仅限于程序员新手,中级和高级程序员也很容易染上,尤其是在阅读了精妙的模式图书或者文章之后。例如,我曾在参与开发的一个系统中发现了一个Closure(闭包)模式的实现。从中可以推测出项目中的一个程序员一定刚刚通过Wiki网站(http://c2.com/cgi/ wiki?UseClosuresNotEnumerations)学会了Closure模式。

在研究这个Closure实现时,我根本找不到使用这个模式的正当理由。这里的Closure模式完全没必要。于是,我重构去除了这段代码的Closure模式,替换以更简单的代码。重构完成后,我问小组中的程序员,他们是否觉得新的代码比含Closure的代码要简单。他们都称是。最后,代码的原作者也承认,重构后的代码要更简单。

在学习模式的道路上,避免模式痴迷也许是不可能的。事实上,我们大多数人都是通过犯错误来学习的。我自己也不止一次地犯过模式痴迷的错误。

真正的模式之乐,来自睿智地使用模式。重构使我们的注意力集中在去除重复、简化代码和使代码清晰表达意图上,从而帮助我们明智地使用模式。当模式通过重构演进到系统之中时,模式过度设计的机会将很小。对重构的了解越深入,你就越有可能体会到模式之乐。


 
这本书确实很经典,读起来让人觉得趣味十足:-)


原创粉丝点击