设计模式有何不妥,所谓的荼毒体现在哪?

在@庄表伟老师的回答 什么是 Agile Methodology(敏捷软件开发)? 里看到这么一句话“设计模式的流毒真的不少”。不知设计模式的荼毒体现…
关注者
1,758
被浏览
475,140

133 个回答

设计模式本身没有什么不妥,不妥的是滥用设计模式的人

成文的设计模式本身是前人发现的在某种情况下非常自然的设计,但是问题是,能理解这个某种情况的人根本不需要去学什么设计模式,反过来,不能理解的人学了就有滥用的倾向。

成文的设计模式在几个dalao带着一帮菜鸡开发的时候非常有用。但是都是dalao的话就不需要,而都是菜鸡的话估计会让复杂度成倍增加。

好吧,专注黑设计模式十余年的我来凑个热闹。

设计模式而言,其本身没有任何问题。

所有的设计模式,都是广泛运用于OO软件开发中的常见的一些Pattern(个人认为应当翻译成手法,而非模式)。

这些Pattern我都用了好多年了,并且也将一直用下去。



真正流毒甚广的,就是GoF的这本书《设计模式》,或者说中文版流毒最甚

设计模式这本书的英文全称是:Design Patterns - Element of Resuable Object-Oriented software design

从英文原文来说,问题不大,因为大概意思是:一些设计手法的集锦,进行可复用的面向对象软件设计的基础


中文版翻译成计模式:可复用面向对象软件的基础。一下子就高大上了有木有?甚至于很多人根本都不知道这个小标题,只知道:《设计模式》,卧槽,又是设计又是模式的。这一定是葵花宝典一样的不传之秘,不学会这个,你好意思说你会做软件设计?


结果就是一帮子像我这样的把设计模式用了几年的人,因为没听说过神马装饰模式,神马享元模式,一下子就low爆了好不




设计模式你妹啊!

就是一大堆有几年经验的程序员都知道的手法集锦而已啊,说白了就是写给第一次去西餐厅吃牛排的二货的一本入门手册而已

软件开发中的Pattern何止20余种,成百上千好不?像PHP里面的$conn || $conn = mysql_connect( $server );这也是一种Pattern啊,反复出现啊。


《设计模式》的流毒在于,一本讲Element的书被抬高到了银弹的程度,没有银弹啊你们这群low逼二货老板,回去把《没有银弹》再反复读十遍。

《设计模式》的流毒还在于,他给low逼们一条快速提升逼格的途径,那就是把所有设计模式的名字都!背!下!来!

君不见多少二货整天乐此不疲的背诵设计模式的名字,而连一行像样的代码都写不出来。



顺便说一下,还有很多人说,设计模式建立了一套话语体系,让我们这些有逼格的程序员可以用一个名词来指代一个三两句话说不清的Pattern,提高了沟通的效率。

不得不说我曾经被这种说法唬住过,

但事实的真相是,程序员其实是这样沟通的:

这个类负责创建这个对象,对。然后这边包装一下,对的。
嗯,你这个类就是针对他的Interface做的一个Adapter,是的。
你这个只创建一次,提高性能。对。

和那些高大上的名词有个屁的关系。两个程序员在一个层次的时候,根本不需要任何装逼的名词都能很顺畅的沟通




最后送所有程序员两句话:

通向二逼之路,常由逼格铺就。

没有银弹。


共勉之。