<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Evan's Blog

    Java, software development and others.

      BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      28 隨筆 :: 0 文章 :: 73 評(píng)論 :: 0 Trackbacks

    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)料架了)。


    譯后記:
    首先,洋人這種以調(diào)侃方式寫(xiě)的技術(shù)文章在國(guó)內(nèi)很少見(jiàn),國(guó)內(nèi)的“技術(shù)專(zhuān)家”都過(guò)于嚴(yán)肅了,抑或其實(shí)并不了解這些技術(shù)的本質(zhì)而沒(méi)辦法聯(lián)想,只好照本宣科了。其次,當(dāng)Java開(kāi)發(fā)領(lǐng)域充斥了這么多的框架之后,你還能把持得住自己?jiǎn)幔吭趯?shí)際的軟件企業(yè)中,怎樣搭建自己的開(kāi)發(fā)環(huán)境和平臺(tái)并不斷改進(jìn)之,而不是盲目地引進(jìn)最新框架和技術(shù),是所有的技術(shù)領(lǐng)導(dǎo)人所要正視的頭等大事。不過(guò),在國(guó)內(nèi),往往重技術(shù)而輕管理,當(dāng)然,這不是這篇文章所要討論的問(wèn)題。


    Benji Smith 的回應(yīng):Why China Hates Frameworks

    同時(shí)測(cè)試一下用Windows Live Writer更新Blog,不過(guò)樣式的下載好象還是有點(diǎn)不盡如人意。(--updated 2006-12-14)
    posted on 2006-03-11 17:04 Evan 閱讀(5789) 評(píng)論(23)  編輯  收藏

    評(píng)論

    # re: [翻譯]我為什么討厭框架 2006-03-11 22:13 lzcarl
    不錯(cuò),很深入淺出
    通用性和易用性真是很難兼顧  回復(fù)  更多評(píng)論
      

    # re: [翻譯]我為什么討厭框架 2006-03-11 22:54 Evan
    @lzcarl
    這個(gè)與通用性和易用性無(wú)關(guān)啊,主要是要避免過(guò)度設(shè)計(jì)。現(xiàn)在的框架,做著做著就開(kāi)始發(fā)胖。連Spring也不能免俗啊!  回復(fù)  更多評(píng)論
      

    # re: [翻譯]我為什么討厭框架 2006-03-12 22:32 Jeff_Liu
    很有道理
    現(xiàn)在我負(fù)責(zé)的項(xiàng)目都反樸歸真了,基本用最簡(jiǎn)單的方法
    譬如mvc框架,自己寫(xiě)了一個(gè)簡(jiǎn)單的,很容易控制。
    用jdbc代替hibernate,雖然開(kāi)發(fā)效率低了點(diǎn),運(yùn)行效率還是比hibernate好的哈哈  回復(fù)  更多評(píng)論
      

    # re: [翻譯]我為什么討厭框架 2006-03-12 22:57 Evan
    @Jeff_Liu
    你也真有膽這么說(shuō)啊:)。不過(guò),也用不著走極端啦。很多框架也還是有很多值得借鑒的東西。不過(guò),我倒真不反對(duì)自己公司弄個(gè)小而精致一點(diǎn)的開(kāi)發(fā)平臺(tái),作為每個(gè)項(xiàng)目的基礎(chǔ);否則,現(xiàn)在框架的更新速度如此快,你怎么跟啊。另外,如果你真直接用jdbc的話,一定要看看Spring它自己的JdbcTemplate的實(shí)現(xiàn),是我迄今所知道的最好的一種不用O/R mapping的解決方法。  回復(fù)  更多評(píng)論
      

    # re: [翻譯]我為什么討厭框架 2006-03-12 23:11 太陽(yáng)底下
    @Jeff_Liu
    應(yīng)該說(shuō)不同的應(yīng)用應(yīng)該有不同的做法,避免過(guò)度的設(shè)計(jì),復(fù)雜應(yīng)用就要復(fù)雜設(shè)計(jì)  回復(fù)  更多評(píng)論
      

    # re: [翻譯]我為什么討厭框架 2006-03-16 15:42 CROKY
    框架 把所有的錯(cuò)誤歸納為一個(gè)錯(cuò)誤,讓你感覺(jué)錯(cuò)誤少了,其實(shí)是錯(cuò)誤增加了。
    框架 把一大群有用沒(méi)用的東西加在一起讓你選擇著用,事實(shí)上不管有用沒(méi)有用,它都在運(yùn)行。
    框架 好象為你提供了一個(gè)更簡(jiǎn)單的解決問(wèn)題的思路,其實(shí)等你把他綜合起來(lái)想,發(fā)現(xiàn),除了少寫(xiě)了一些代碼外也額外多了一些代碼,好處是讓你懶惰了一點(diǎn),確讓你的計(jì)算機(jī)更加累了。(繞的彎子太多)而且最噴血的是,你會(huì)發(fā)現(xiàn)它其實(shí)更難了。
    框架 就是來(lái)忽悠你我他的。
    框架 就是毒品,等你用習(xí)慣了就不得不承認(rèn)它的好,哪怕它爛的不行你也要為它爭(zhēng)點(diǎn)面子。
      回復(fù)  更多評(píng)論
      

    # re: [翻譯]我為什么討厭框架 2006-03-21 10:14 云霄
    現(xiàn)在的設(shè)計(jì)通病是不先討論做什么,而先討論怎么做。然后對(duì)別人說(shuō)“我們已經(jīng)可以應(yīng)付你的一些要求了,好,現(xiàn)在說(shuō)說(shuō)你想要什么?”典型的本末倒置,自我主義。  回復(fù)  更多評(píng)論
      

    # re: [翻譯]我為什么討厭框架 2006-03-21 11:56 無(wú)名
    確實(shí)比較實(shí)在. 前一階段, 我們項(xiàng)目組做了有關(guān)java的評(píng)估和學(xué)習(xí). 基本上, 已經(jīng)把我們看暈了.  回復(fù)  更多評(píng)論
      

    # re: [翻譯]我為什么討厭框架 2006-03-21 15:02 henkoo
    太贊了

    過(guò)度重構(gòu),過(guò)度設(shè)計(jì)

    關(guān)鍵是夠用,變化發(fā)展是沒(méi)有一勞永逸的解決辦法的  回復(fù)  更多評(píng)論
      

    # re: [翻譯]我為什么討厭框架 2006-03-22 11:10 魚(yú)
    哈哈,與我心有戚戚焉  回復(fù)  更多評(píng)論
      

    # re: [翻譯]我為什么討厭框架 2006-09-12 19:42 yes
    受教了,謝謝樓主!  回復(fù)  更多評(píng)論
      

    # re: [翻譯]我為什么討厭框架 2006-10-22 20:54 efanstudio
    我開(kāi)發(fā)J2EE從來(lái)不用框架,實(shí)際上我個(gè)人認(rèn)為現(xiàn)在的J2EE框架絕大多數(shù)都已經(jīng)過(guò)了-使用它們并沒(méi)有降低開(kāi)發(fā)的復(fù)雜性,反而增加了開(kāi)發(fā)的難度!  回復(fù)  更多評(píng)論
      

    # re: [翻譯]我為什么討厭框架 2006-10-22 20:58 efanstudio
    spring的JdbcTemplate的確寫(xiě)得非常好,我覺(jué)得可以直接調(diào)用它來(lái)屏蔽掉JDBC中的一些比較繁瑣的細(xì)節(jié)處理,但我非常反感編寫(xiě)又臭又長(zhǎng)的配置文件,很多時(shí)候,我們的應(yīng)用并沒(méi)有真正復(fù)雜到要考慮到幾乎所有的細(xì)節(jié)!而國(guó)內(nèi)的開(kāi)發(fā)習(xí)慣是,很少有人能在同一個(gè)項(xiàng)目中做好幾個(gè)版本,而對(duì)于別人開(kāi)發(fā)的前面的版本,是采用完全拋棄的態(tài)度,所以你預(yù)先設(shè)計(jì)的再好都沒(méi)有多大的實(shí)用價(jià)值!  回復(fù)  更多評(píng)論
      

    # re: [翻譯]我為什么討厭框架 2006-11-28 12:53 pldmusic
    其實(shí)作者的觀點(diǎn)就是這樣:要用錘子的時(shí)候用錘子,要用錘子工廠的時(shí)候用工廠  回復(fù)  更多評(píng)論
      

    # re: [翻譯]我為什么討厭框架 2006-11-30 09:31 nxliu
    看到你這個(gè)文章,還以為是抄襲的 :) 原來(lái)是原創(chuàng)的,我也譯過(guò)該文:
    http://nxliu.spaces.live.com/?_c11_BlogPart_blogpart=blogview&_c=BlogPart&partqs=cat%3d%25e7%25bf%25bb%25e8%25af%2591

    <a href="http://nxliu.spaces.live.com/?_c11_BlogPart_blogpart=blogview&_c=BlogPart&partqs=cat%3d%25e7%25bf%25bb%25e8%25af%2591">我為什么討厭框架</a>  回復(fù)  更多評(píng)論
      

    # re: [翻譯]我為什么討厭框架 2007-10-06 21:06 photon
    框架這種東西,要辯證地看。它是對(duì)過(guò)去開(kāi)發(fā)經(jīng)驗(yàn)地總結(jié),故可以用于學(xué)習(xí)借鑒,如果方便也可以采用拿來(lái)主義直接使用。但我們還要記著,盡信書(shū)不如無(wú)書(shū),過(guò)猶不及。  回復(fù)  更多評(píng)論
      

    # re: [翻譯]我為什么討厭框架 2012-04-19 18:13 CSDN_Softworm
    真不錯(cuò)!

    以前早已明白的道理,過(guò)了幾年又忘了,又得再回來(lái)看。  回復(fù)  更多評(píng)論
      

    # payday loan Canada 2012-08-14 22:18 payday loan Canada
    odwegfm http://paydayloansstg.info/ payday loan Canada  回復(fù)  更多評(píng)論
      

    # payday loans 2012-09-26 08:39 payday loans
    gvqmfm http://uspaydayloansff.com/ payday loans  回復(fù)  更多評(píng)論
      


    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 亚洲av中文无码乱人伦在线咪咕| 国产性生大片免费观看性| 国产成人无码免费看片软件| 亚洲色偷偷av男人的天堂 | 亚洲一卡二卡三卡四卡无卡麻豆| 97国产免费全部免费观看| 亚欧乱色国产精品免费视频| 2020久久精品亚洲热综合一本| 免费黄网在线观看| 中文毛片无遮挡高潮免费| AAA日本高清在线播放免费观看| 久久99国产亚洲精品观看| 成人免费无码大片a毛片| sihu国产精品永久免费| 韩国亚洲伊人久久综合影院| 亚洲精品天堂在线观看| 亚洲男人电影天堂| 日产亚洲一区二区三区| 国产传媒在线观看视频免费观看 | 亚洲国产电影在线观看| 日本xxwwxxww在线视频免费| 成人片黄网站色大片免费观看cn| 性色av极品无码专区亚洲| 成人亚洲国产va天堂| 亚洲国产成人综合| 亚洲欧洲日产韩国在线| 亚洲福利视频一区二区三区| 亚洲人成在线播放网站岛国| 久久亚洲国产视频| 亚洲福利在线视频| 久久亚洲精品中文字幕| 久久精品国产精品亚洲毛片| 亚洲嫩模在线观看| 亚洲视频网站在线观看| 亚洲永久中文字幕在线| 亚洲国产成人精品无码一区二区| 亚洲另类精品xxxx人妖| 精品亚洲国产成人| 亚洲AV无码专区在线观看成人| 色婷婷六月亚洲综合香蕉| 无套内谢孕妇毛片免费看看|