Author:Benji Smith
Translator:Evan Wang
Original Link:Why I Hate Frameworks
?
我正處于建造一個(gè)基于Java的Web應(yīng)用的規(guī)劃階段(是的,必須基于Java,不過(guò)我現(xiàn)在還不想討論其中的原因)。在這個(gè)過(guò)程中,我評(píng)估了一系列CMS應(yīng)用容器框架,它們大多擁有J2EE門(mén)戶、采用與JSR相兼容的MVC架構(gòu)、基于角色等。
然而在花了幾十個(gè)小時(shí)閱讀功能列表和文檔后,我?guī)缀跸氪料刮业碾p眼。
首先假設(shè)我決定做一個(gè)調(diào)味品架子。
我以前做過(guò)一些小的木工活,因此我知道自己需要以下東西:一些木頭和基本工具,包括卷尺、鋸子、水平儀和錘子。
如果我想造一棟房子,而不僅僅是一個(gè)調(diào)味品架,我還是需要卷尺、鋸齒、水平儀和錘子(以及其它東西)。
所以,我跑到一家五金店,問(wèn)一個(gè)銷(xiāo)售員,哪里能找到一把錘子。
“錘子?”他說(shuō):“現(xiàn)在幾乎沒(méi)人要買(mǎi)錘子了。這個(gè)已經(jīng)過(guò)時(shí)了。”
我很驚訝這樣一種發(fā)展,于是問(wèn)他為什么。
“嗯,問(wèn)題在于有太多種類(lèi)的錘子。大錘啦,拔釘錘啦,球頭錘等等。你買(mǎi)了其中一種,后來(lái)發(fā)現(xiàn)你還需要另外一種怎么辦呢?你下次還得單獨(dú)買(mǎi)一把。因此,大多數(shù)人實(shí)際上需要一把能夠處理他們一生中可能碰到的所有敲敲打打的活的錘子。”
“嗯,這個(gè)聽(tīng)起來(lái)挺不錯(cuò)。那么我在哪里能夠找到這樣一把通用錘子呢?”
“不,我們不再銷(xiāo)售了。他們已經(jīng)廢棄了。”
“真的嗎?我想你剛才不是說(shuō)通用錘子是將來(lái)的趨勢(shì)嘛。”
“事實(shí)上,如果生產(chǎn)出一種能夠處理所有事情的錘子,反倒不能很有效率地處理其中的任何一件。用一把大錘去拔個(gè)釘子很費(fèi)勁吧。并且,你要?dú)⑺滥闱叭闻训脑挘瑳](méi)有什么會(huì)比一把球頭錘更適合的了。”
“這倒是真的。如果沒(méi)有人會(huì)買(mǎi)這種通用錘子,而你們又不再銷(xiāo)售老式的各種錘子,那么你們賣(mài)什么樣的錘子呢?”
“事實(shí)上,我們不賣(mài)錘子。”
“那么…”
“根據(jù)我們的研究,人們需要的根本不是通用錘子。最好還是用不同的錘子做不同的工作。所以,我們現(xiàn)在銷(xiāo)售錘子工廠,它能夠生成任何你需要的錘子。你所需要的只是為錘子工廠招聘員工,開(kāi)動(dòng)機(jī)器,購(gòu)買(mǎi)原材料,付公用事業(yè)費(fèi),諸如此類(lèi)的…這樣你就可以隨時(shí)得到你需要的錘子。”
“但我真的不想買(mǎi)一個(gè)錘子工廠…”
“對(duì)頭。我們其實(shí)也不再銷(xiāo)售錘子工廠了。”
“但你剛剛還說(shuō)…”
“我們發(fā)現(xiàn)大多數(shù)人實(shí)際上不需要一整個(gè)錘子工廠。比如說(shuō),一些人,就不可能用到球頭錘。(也許他們就沒(méi)有前女友。或者他們用冰錐來(lái)解決她們。)所以對(duì)一些人來(lái)說(shuō)一個(gè)能生產(chǎn)各種錘子的工廠是沒(méi)有什么意義的。”
“耶,這個(gè)實(shí)際得多。”
“所以,我們開(kāi)始銷(xiāo)售錘子工廠的示意圖,以便我們的客戶能夠建造他們自己的錘子工廠,自行設(shè)計(jì)只生成他們實(shí)際需要的那些錘子。”
“讓我猜猜看。你們現(xiàn)在也不再銷(xiāo)售這些了。”
“對(duì),真的是這樣。實(shí)際上,人們不會(huì)為了幾把錘子去建一個(gè)工廠。就像我經(jīng)常說(shuō)的,讓建造工廠的專(zhuān)家去建造工廠吧。”
“這一點(diǎn)我贊成。”
“對(duì)的。所以我們停止銷(xiāo)售這些示意圖,轉(zhuǎn)而銷(xiāo)售建造錘子工廠的工廠。每個(gè)建造錘子工廠的工廠都由這方面的頂尖專(zhuān)家建造,所以,你根本不需要操心建造工廠的任何細(xì)節(jié)。你依然擁有自定義錘子工廠的好處,根據(jù)你自己特定的錘子設(shè)計(jì)做出你自己的錘子。”
“嗯,這個(gè)實(shí)際上并不…”
“我知道你想說(shuō)什么!…我們也不再銷(xiāo)售這些東西了。因?yàn)槟承┰颍矝](méi)有多少人買(mǎi)建造錘子工廠的工廠,所以我們又有了新的解決方法。”
“哇哈。”
“當(dāng)我們回過(guò)頭來(lái)審查這個(gè)統(tǒng)一工具的基礎(chǔ)時(shí),發(fā)現(xiàn)人們被必須管理和運(yùn)作一個(gè)制造錘子的工廠以及它所生成的錘子工廠給困住了。當(dāng)你需要處理類(lèi)似的建造卷尺工廠的工廠,水平儀工廠的工廠,鋸子工廠的工廠的時(shí)候,這很快就會(huì)變得相當(dāng)棘手。更別提木材生產(chǎn)集團(tuán)公司了。當(dāng)我們審查這種狀況的時(shí)候,我們意識(shí)到這對(duì)于僅僅想做個(gè)調(diào)味品架子的人來(lái)說(shuō)過(guò)于復(fù)雜了。”
“是啊,這可不是開(kāi)玩笑。”
“所以,這個(gè)星期,我們正在推廣一種通用的建造工廠,用來(lái)建造生產(chǎn)工具工廠的工廠,這樣你所有的用來(lái)建造不同種類(lèi)工具的工廠的工廠就可以由一個(gè)單一的、統(tǒng)一的工廠來(lái)建造了。這種工廠將僅僅生產(chǎn)你所需要的工具工廠的建造工廠,而這些建造工廠將生成一個(gè)僅生產(chǎn)你自定義的工具的工廠來(lái)。你將得到你要的那種錘子,你要的卷尺,所有這一切僅僅需要按一下按鈕(當(dāng)然,也許你要發(fā)布一些配置文件以便它能根據(jù)你的期望來(lái)工作)。”
“所以,你們根本就沒(méi)有什么錘子?不是嗎?”
“是的。如果你需要一個(gè)高質(zhì)量的,工業(yè)標(biāo)準(zhǔn)的調(diào)味料架子,你絕對(duì)需要這些高級(jí)玩意,而不是從那些破破爛爛的五金店里就買(mǎi)得到的錘子。”
“現(xiàn)在所有的人都在這么做嗎?當(dāng)他們需要一把錘子的時(shí)候,所有的人都在使用一個(gè)通用的能夠生產(chǎn)工具工廠的建造工廠的工廠嗎?”
“是的。”
“那…好吧。我想這就是我必須要做的。如果這是處理事情的既定方法,我想我最好還是學(xué)學(xué)怎么來(lái)用吧。”
“祝你好運(yùn)!”
“這些都有文檔的,對(duì)吧?”
現(xiàn)在我已經(jīng)自豪地?fù)碛辛俗约旱耐ㄓ玫墓ぞ吖S的建造工廠的建造工廠,我很高興地知道它與GPTBFF 0.97 RC2標(biāo)準(zhǔn)草案兼容,這是“通用的工具工廠的建造工廠的建造工廠”的標(biāo)準(zhǔn)。
很幸運(yùn)地,面向工具的元工廠聯(lián)盟里的工人都通過(guò)了這個(gè)版本的標(biāo)準(zhǔn)的驗(yàn)證。
然而標(biāo)準(zhǔn)之爭(zhēng)即將開(kāi)始:一種名為UXCTBFFF(Universal Trans-Continental Tool Building FFF)很有競(jìng)爭(zhēng)力的原工廠技術(shù)承諾將統(tǒng)一建造工廠的工廠的建造行業(yè),以使之符合那些同時(shí)使用公制和當(dāng)?shù)囟攘繂挝坏膰?guó)家的標(biāo)準(zhǔn)。
我的理解是只需要?jiǎng)?chuàng)建一個(gè)貫穿用戶界面的抽象層的補(bǔ)丁包,就可以使GPTBFF 0.97 RC2與UXCTBFF標(biāo)準(zhǔn)達(dá)到95%左右的兼容。
真是太好了!
想必這種新的發(fā)展能夠提升我的調(diào)料架的質(zhì)量(一旦我搭建好我的工具工廠的建造工廠的建造工廠并使之運(yùn)行,培訓(xùn)好工人,從柬埔寨進(jìn)口來(lái)原木,在最近的某天,我就要開(kāi)始做那個(gè)調(diào)料架了)。
Benji Smith
的回應(yīng):
Why China Hates Frameworks同時(shí)測(cè)試一下用
Windows Live Writer更新Blog,不過(guò)樣式的下載好象還是有點(diǎn)不盡如人意。(--updated 2006-12-14)