我为什么讨厌框架

发表于:2007-04-22来源:作者:点击数: 标签:框架讨厌为什么
Author:BenjiSmith Translator:EvanWang OriginalLink:WhyIHateFrameworks 我正处于建造一个基于 Java 的Web应用的规划阶段(是的,必须基于Java,不过我现在还不想讨论其中的原因)。在这个过程中,我评估了一系列CMS应用容器框架,它们大多拥有J2EE门户

Author:Benji Smith
Translator:Evan Wang
Original Link:Why I Hate Frameworks
 
我正处于建造一个基于JavaWeb应用的规划阶段(是的,必须基于Java,不过我现在还不想讨论其中的原因)。在这个过程中,我评估了一系列CMS应用容器框架,它们大多拥有J2EE门户、采用与JSR相兼容的MVC架构、基于角色等。

然而在花了几十个小时阅读功能列表和文档后,我几乎想戳瞎我的双眼。

首先假设我决定做一个调味品架子。

我以前做过一些小的木工活,因此我知道自己需要以下东西:一些木头和基本工具,包括卷尺、锯子、水平仪和锤子。

如果我想造一栋房子,而不仅仅是一个调味品架,我还是需要卷尺、锯齿、水平仪和锤子(以及其它东西)。

所以,我跑到一家五金店,问一个销售员,哪里能找到一把锤子。

“锤子?”他说:“现在几乎没人要买锤子了。这个已经过时了。”

我很惊讶这样一种发展,于是问他为什么。

“嗯,问题在于有太多种类的锤子。大锤啦,拔钉锤啦,球头锤等等。你买了其中一种,后来发现你还需要另外一种怎么办呢?你下次还得单独买一把。因此,大多数人实际上需要一把能够处理他们一生中可能碰到的所有敲敲打打的活的锤子。”

“嗯,这个听起来挺不错。那么我在哪里能够找到这样一把通用锤子呢?”

“不,我们不再销售了。他们已经废弃了。”

“真的吗?我想你刚才不是说通用锤子是将来的趋势嘛。”

“事实上,如果生产出一种能够处理所有事情的锤子,反倒不能很有效率地处理其中的任何一件。用一把大锤去拔个钉子很费劲吧。并且,你要杀死你前任女友的话,没有什么会比一把球头锤更适合的了。”

“这倒是真的。如果没有人会买这种通用锤子,而你们又不再销售老式的各种锤子,那么你们卖什么样的锤子呢?”

“事实上,我们不卖锤子。”

“那么…”

“根据我们的研究,人们需要的根本不是通用锤子。最好还是用不同的锤子做不同的工作。所以,我们现在销售锤子工厂,它能够生成任何你需要的锤子。你所需要的只是为锤子工厂招聘员工,开动机器,购买原材料,付公用事业费,诸如此类的…这样你就可以随时得到你需要的锤子。”

“但我真的不想买一个锤子工厂…”

“对头。我们其实也不再销售锤子工厂了。”

“但你刚刚还说…”

“我们发现大多数人实际上不需要一整个锤子工厂。比如说,一些人,就不可能用到球头锤。(也许他们就没有前女友。或者他们用冰锥来解决她们。)所以对一些人来说一个能生产各种锤子的工厂是没有什么意义的。”

“耶,这个实际得多。”

“所以,我们开始销售锤子工厂的示意图,以便我们的客户能够建造他们自己的锤子工厂,自行设计只生成他们实际需要的那些锤子。”

“让我猜猜看。你们现在也不再销售这些了。”

“对,真的是这样。实际上,人们不会为了几把锤子去建一个工厂。就像我经常说的,让建造工厂的专家去建造工厂吧。”

“这一点我赞成。”

“对的。所以我们停止销售这些示意图,转而销售建造锤子工厂的工厂。每个建造锤子工厂的工厂都由这方面的顶尖专家建造,所以,你根本不需要操心建造工厂的任何细节。你依然拥有自定义锤子工厂的好处,根据你自己特定的锤子设计做出你自己的锤子。”

“嗯,这个实际上并不…”

“我知道你想说什么!…我们也不再销售这些东西了。因为某些原因,也没有多少人买建造锤子工厂的工厂,所以我们又有了新的解决方法。”

“哇哈。”

“当我们回过头来审查这个统一工具的基础时,发现人们被必须管理和运作一个制造锤子的工厂以及它所生成的锤子工厂给困住了。当你需要处理类似的建造卷尺工厂的工厂,水平仪工厂的工厂,锯子工厂的工厂的时候,这很快就会变得相当棘手。更别提木材生产集团公司了。当我们审查这种状况的时候,我们意识到这对于仅仅想做个调味品架子的人来说过于复杂了。”

“是啊,这可不是开玩笑。”

“所以,这个星期,我们正在推广一种通用的建造工厂,用来建造生产工具工厂的工厂,这样你所有的用来建造不同种类工具的工厂的工厂就可以由一个单一的、统一的工厂来建造了。这种工厂将仅仅生产你所需要的工具工厂的建造工厂,而这些建造工厂将生成一个仅生产你自定义的工具的工厂来。你将得到你要的那种锤子,你要的卷尺,所有这一切仅仅需要按一下按钮(当然,也许你要发布一些配置文件以便它能根据你的期望来工作)。”

“所以,你们根本就没有什么锤子?不是吗?”

“是的。如果你需要一个高质量的,工业标准的调味料架子,你绝对需要这些高级玩意,而不是从那些破破烂烂的五金店里就买得到的锤子。”

“现在所有的人都在这么做吗?当他们需要一把锤子的时候,所有的人都在使用一个通用的能够生产工具工厂的建造工厂的工厂吗?”

“是的。”

“那…好吧。我想这就是我必须要做的。如果这是处理事情的既定方法,我想我最好还是学学怎么来用吧。”

“祝你好运!”

“这些都有文档的,对吧?”

现在我已经自豪地拥有了自己的通用的工具工厂的建造工厂的建造工厂,我很高兴地知道它与GPTBFF 0.97 RC2标准草案兼容,这是“通用的工具工厂的建造工厂的建造工厂”的标准。

很幸运地,面向工具的元工厂联盟里的工人都通过了这个版本的标准的验证。

然而标准之争即将开始:一种名为UXCTBFFF(Universal Trans-Continental Tool Building FFF)很有竞争力的原工厂技术承诺将统一建造工厂的工厂的建造行业,以使之符合那些同时使用公制和当地度量单位的国家的标准。

我的理解是只需要创建一个贯穿用户界面的抽象层的补丁包,就可以使GPTBFF 0.97 RC2与UXCTBFF标准达到95%左右的兼容。

真是太好了!

想必这种新的发展能够提升我的调料架的质量(一旦我搭建好我的工具工厂的建造工厂的建造工厂并使之运行,培训好工人,从柬埔寨进口来原木,在最近的某天,我就要开始做那个调料架了)。



译后记:
首先,洋人这种以调侃方式写的技术文章在国内很少见,国内的“技术专家”都过于严肃了,抑或其实并不了解这些技术的本质而没办法联想,只好照本宣科了。其次,当Java开发领域充斥了这么多的框架之后,你还能把持得住自己吗?在实际的软件企业中,怎样搭建自己的开发环境和平台并不断改进之,而不是盲目地引进最新框架和技术,是所有的技术领导人所要正视的头等大事。不过,在国内,往往重技术而轻管理,当然,这不是这篇文章所要讨论的问题。

原文转自:http://www.ltesting.net