Evan's Blog

          Java, software development and others.

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            28 隨筆 :: 0 文章 :: 73 評論 :: 0 Trackbacks

          Author:Benji Smith
          Translator:Evan Wang
          Original Link:Why I Hate Frameworks
          ?
          我正處于建造一個基于Java的Web應用的規劃階段(是的,必須基于Java,不過我現在還不想討論其中的原因)。在這個過程中,我評估了一系列CMS應用容器框架,它們大多擁有J2EE門戶、采用與JSR相兼容的MVC架構、基于角色等。

          然而在花了幾十個小時閱讀功能列表和文檔后,我幾乎想戳瞎我的雙眼。

          首先假設我決定做一個調味品架子。

          我以前做過一些小的木工活,因此我知道自己需要以下東西:一些木頭和基本工具,包括卷尺、鋸子、水平儀和錘子。

          如果我想造一棟房子,而不僅僅是一個調味品架,我還是需要卷尺、鋸齒、水平儀和錘子(以及其它東西)。

          所以,我跑到一家五金店,問一個銷售員,哪里能找到一把錘子。

          “錘子?”他說:“現在幾乎沒人要買錘子了。這個已經過時了。”

          我很驚訝這樣一種發展,于是問他為什么。

          “嗯,問題在于有太多種類的錘子。大錘啦,拔釘錘啦,球頭錘等等。你買了其中一種,后來發現你還需要另外一種怎么辦呢?你下次還得單獨買一把。因此,大多數人實際上需要一把能夠處理他們一生中可能碰到的所有敲敲打打的活的錘子。”

          “嗯,這個聽起來挺不錯。那么我在哪里能夠找到這樣一把通用錘子呢?”

          “不,我們不再銷售了。他們已經廢棄了。”

          “真的嗎?我想你剛才不是說通用錘子是將來的趨勢嘛。”

          “事實上,如果生產出一種能夠處理所有事情的錘子,反倒不能很有效率地處理其中的任何一件。用一把大錘去拔個釘子很費勁吧。并且,你要殺死你前任女友的話,沒有什么會比一把球頭錘更適合的了。”

          “這倒是真的。如果沒有人會買這種通用錘子,而你們又不再銷售老式的各種錘子,那么你們賣什么樣的錘子呢?”

          “事實上,我們不賣錘子。”

          “那么…”

          “根據我們的研究,人們需要的根本不是通用錘子。最好還是用不同的錘子做不同的工作。所以,我們現在銷售錘子工廠,它能夠生成任何你需要的錘子。你所需要的只是為錘子工廠招聘員工,開動機器,購買原材料,付公用事業費,諸如此類的…這樣你就可以隨時得到你需要的錘子。”

          “但我真的不想買一個錘子工廠…”

          “對頭。我們其實也不再銷售錘子工廠了。”

          “但你剛剛還說…”

          “我們發現大多數人實際上不需要一整個錘子工廠。比如說,一些人,就不可能用到球頭錘。(也許他們就沒有前女友。或者他們用冰錐來解決她們。)所以對一些人來說一個能生產各種錘子的工廠是沒有什么意義的。”

          “耶,這個實際得多。”

          “所以,我們開始銷售錘子工廠的示意圖,以便我們的客戶能夠建造他們自己的錘子工廠,自行設計只生成他們實際需要的那些錘子。”

          “讓我猜猜看。你們現在也不再銷售這些了。”

          “對,真的是這樣。實際上,人們不會為了幾把錘子去建一個工廠。就像我經常說的,讓建造工廠的專家去建造工廠吧。”

          “這一點我贊成。”

          “對的。所以我們停止銷售這些示意圖,轉而銷售建造錘子工廠的工廠。每個建造錘子工廠的工廠都由這方面的頂尖專家建造,所以,你根本不需要操心建造工廠的任何細節。你依然擁有自定義錘子工廠的好處,根據你自己特定的錘子設計做出你自己的錘子。”

          “嗯,這個實際上并不…”

          “我知道你想說什么!…我們也不再銷售這些東西了。因為某些原因,也沒有多少人買建造錘子工廠的工廠,所以我們又有了新的解決方法。”

          “哇哈。”

          “當我們回過頭來審查這個統一工具的基礎時,發現人們被必須管理和運作一個制造錘子的工廠以及它所生成的錘子工廠給困住了。當你需要處理類似的建造卷尺工廠的工廠,水平儀工廠的工廠,鋸子工廠的工廠的時候,這很快就會變得相當棘手。更別提木材生產集團公司了。當我們審查這種狀況的時候,我們意識到這對于僅僅想做個調味品架子的人來說過于復雜了。”

          “是啊,這可不是開玩笑。”

          “所以,這個星期,我們正在推廣一種通用的建造工廠,用來建造生產工具工廠的工廠,這樣你所有的用來建造不同種類工具的工廠的工廠就可以由一個單一的、統一的工廠來建造了。這種工廠將僅僅生產你所需要的工具工廠的建造工廠,而這些建造工廠將生成一個僅生產你自定義的工具的工廠來。你將得到你要的那種錘子,你要的卷尺,所有這一切僅僅需要按一下按鈕(當然,也許你要發布一些配置文件以便它能根據你的期望來工作)。”

          “所以,你們根本就沒有什么錘子?不是嗎?”

          “是的。如果你需要一個高質量的,工業標準的調味料架子,你絕對需要這些高級玩意,而不是從那些破破爛爛的五金店里就買得到的錘子。”

          “現在所有的人都在這么做嗎?當他們需要一把錘子的時候,所有的人都在使用一個通用的能夠生產工具工廠的建造工廠的工廠嗎?”

          “是的。”

          “那…好吧。我想這就是我必須要做的。如果這是處理事情的既定方法,我想我最好還是學學怎么來用吧。”

          “祝你好運!”

          “這些都有文檔的,對吧?”

          現在我已經自豪地擁有了自己的通用的工具工廠的建造工廠的建造工廠,我很高興地知道它與GPTBFF 0.97 RC2標準草案兼容,這是“通用的工具工廠的建造工廠的建造工廠”的標準。

          很幸運地,面向工具的元工廠聯盟里的工人都通過了這個版本的標準的驗證。

          然而標準之爭即將開始:一種名為UXCTBFFF(Universal Trans-Continental Tool Building FFF)很有競爭力的原工廠技術承諾將統一建造工廠的工廠的建造行業,以使之符合那些同時使用公制和當地度量單位的國家的標準。

          我的理解是只需要創建一個貫穿用戶界面的抽象層的補丁包,就可以使GPTBFF 0.97 RC2與UXCTBFF標準達到95%左右的兼容。

          真是太好了!

          想必這種新的發展能夠提升我的調料架的質量(一旦我搭建好我的工具工廠的建造工廠的建造工廠并使之運行,培訓好工人,從柬埔寨進口來原木,在最近的某天,我就要開始做那個調料架了)。


          譯后記:
          首先,洋人這種以調侃方式寫的技術文章在國內很少見,國內的“技術專家”都過于嚴肅了,抑或其實并不了解這些技術的本質而沒辦法聯想,只好照本宣科了。其次,當Java開發領域充斥了這么多的框架之后,你還能把持得住自己嗎?在實際的軟件企業中,怎樣搭建自己的開發環境和平臺并不斷改進之,而不是盲目地引進最新框架和技術,是所有的技術領導人所要正視的頭等大事。不過,在國內,往往重技術而輕管理,當然,這不是這篇文章所要討論的問題。


          Benji Smith 的回應:Why China Hates Frameworks

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

          評論

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

          # re: [翻譯]我為什么討厭框架 2006-03-11 22:54 Evan
          @lzcarl
          這個與通用性和易用性無關啊,主要是要避免過度設計。現在的框架,做著做著就開始發胖。連Spring也不能免俗啊!  回復  更多評論
            

          # re: [翻譯]我為什么討厭框架 2006-03-12 22:32 Jeff_Liu
          很有道理
          現在我負責的項目都反樸歸真了,基本用最簡單的方法
          譬如mvc框架,自己寫了一個簡單的,很容易控制。
          用jdbc代替hibernate,雖然開發效率低了點,運行效率還是比hibernate好的哈哈  回復  更多評論
            

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

          # re: [翻譯]我為什么討厭框架 2006-03-12 23:11 太陽底下
          @Jeff_Liu
          應該說不同的應用應該有不同的做法,避免過度的設計,復雜應用就要復雜設計  回復  更多評論
            

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

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

          # re: [翻譯]我為什么討厭框架 2006-03-21 11:56 無名
          確實比較實在. 前一階段, 我們項目組做了有關java的評估和學習. 基本上, 已經把我們看暈了.  回復  更多評論
            

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

          過度重構,過度設計

          關鍵是夠用,變化發展是沒有一勞永逸的解決辦法的  回復  更多評論
            

          # re: [翻譯]我為什么討厭框架 2006-03-22 11:10
          哈哈,與我心有戚戚焉  回復  更多評論
            

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

          # re: [翻譯]我為什么討厭框架 2006-10-22 20:54 efanstudio
          我開發J2EE從來不用框架,實際上我個人認為現在的J2EE框架絕大多數都已經過了-使用它們并沒有降低開發的復雜性,反而增加了開發的難度!  回復  更多評論
            

          # re: [翻譯]我為什么討厭框架 2006-10-22 20:58 efanstudio
          spring的JdbcTemplate的確寫得非常好,我覺得可以直接調用它來屏蔽掉JDBC中的一些比較繁瑣的細節處理,但我非常反感編寫又臭又長的配置文件,很多時候,我們的應用并沒有真正復雜到要考慮到幾乎所有的細節!而國內的開發習慣是,很少有人能在同一個項目中做好幾個版本,而對于別人開發的前面的版本,是采用完全拋棄的態度,所以你預先設計的再好都沒有多大的實用價值!  回復  更多評論
            

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

          # re: [翻譯]我為什么討厭框架 2006-11-30 09:31 nxliu
          看到你這個文章,還以為是抄襲的 :) 原來是原創的,我也譯過該文:
          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>  回復  更多評論
            

          # re: [翻譯]我為什么討厭框架 2007-10-06 21:06 photon
          框架這種東西,要辯證地看。它是對過去開發經驗地總結,故可以用于學習借鑒,如果方便也可以采用拿來主義直接使用。但我們還要記著,盡信書不如無書,過猶不及。  回復  更多評論
            

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

          以前早已明白的道理,過了幾年又忘了,又得再回來看。  回復  更多評論
            

          # payday loan Canada 2012-08-14 22:18 payday loan Canada
          odwegfm http://paydayloansstg.info/ payday loan Canada  回復  更多評論
            

          # payday loans 2012-09-26 08:39 payday loans
          gvqmfm http://uspaydayloansff.com/ payday loans  回復  更多評論
            


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 张家港市| 屯昌县| 青铜峡市| 河津市| 贵州省| 雅江县| 白朗县| 苍梧县| 朝阳区| 高雄市| 鹤山市| 台山市| 茂名市| 南阳市| 武乡县| 灵寿县| 陆河县| 同江市| 邯郸市| 郧西县| 呼伦贝尔市| 阳信县| 南皮县| 陆丰市| 白银市| 云安县| 乐亭县| 山东省| 小金县| 安塞县| 鄂托克旗| 余干县| 临湘市| 淄博市| 资兴市| 安福县| 闽清县| 星子县| 无为县| 枣强县| 尉犁县|