祝賀Guice拿了Jolt Award

梧桐雨—168發表於2008-03-26

  我對計算機界的八卦一向都不太敏感,也對很多所謂的“名人”不感興趣。你說那章子儀,Britney好歹還能拿臉蛋,衣服,和衣服裡面的東西來娛樂大眾,一幫不知道哪來的猥瑣男就寫了點誰都能寫的程式,又不是證明了歌德拔河,也不是火箭科學,有什麼好追星的?

  所以對Guice拿了Jolt也是後知後覺。不過在知道Guice是打敗了Spring拿到的獎的,還是頗覺得欣慰了一下。

  要說Guice也不是多完美,很多功能的缺失還是對使用造成了些障礙的。所謂的“EDSL”,或者馬丁嚼了嚼前人吃剩的東西再吐出來給大眾繼續啃的“fluent interface”,給測試,擴充套件和閱讀穩當都造成了很大的麻煩。(我的jparsec, rparsec系列也可以自稱是fluent interface,比如你可以說foo.many.map {...}之類的,但是它的每一步本身都具有完整的語義,而且都統一地是一個Parser物件,而不是額外引入亂七八糟古里古怪的中間型別。)

  不過,你看跟什麼比吧。這Spring,號稱open-source,但是奉勸你還是閉著眼睛用,千萬別好奇心起,往裡面看什麼程式碼。那設計,那程式碼,叫一個亂,真是讓人不忍心看下去。

  作者也是一根筋,遇著要客戶擴充套件功能的,必然是弄個什麼MyChitterlingAware介面,然後instanceof到處用,然後跑到文擋裡一絲不苟孜孜不倦地加上一章“如果實現了MyChitterlingAware介面,那麼你就會自動得到我的原始的帶著消化系統鮮活氣息的大腸一段”;然後整個系統中誰也不知道到底有多少XYZAware的special case。

  遇著不同的目標場景,必然是弄一個子類,什麼"ChitterlingApplicationContext extends ClassPathApplicationContext", "SpicyChitterlingApplicationContext extends ChitterlingApplicationContext",而且如果某個MyChitterlingAware物件需要從appcontext得到東西,必然是要實現一個BeanFactoryAware,然後再判斷"instanceof ChitterlingApplicationContext"。最後弄了一個非常sophisticated的類繼承圖,顯得好專業呀;

  遇著邏輯分支,比如singleton與否,必然是一個"if (isSingleton()) {...}";

  就算眼饞人家用java寫配製可以重構,也還是腦子不帶轉彎地拿xml那套寫JavaConfig,程式碼看上去還是xmlish,一點也不pojo;

  所有OO初學者能幹的蠢事,似乎都一五一十一板一眼地幹了一遍。

  那個,你要說了,那為什麼人家那麼成功?“一站式”啊,不管啥玩藝兒,一股腦都給你塞進來,這個主意還是很有市場的;“vendor lock-in”啊。這麼多應用,這麼多框架,都依賴於ChitterlingAware,你說你能想不幹就不幹了?“競爭對手實在不爭氣”啊,那個什麼ejb,嚇跑了多少“我其實就想寫點程式呀”的程式設計師?

  現在好了,終於有一個decent的DI framework並且能夠不被劣幣給驅逐了。無疑這個成功相當程度上得力於Google這個名字,謝謝,crazybob,謝謝,Google。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/13270562/viewspace-217877/,如需轉載,請註明出處,否則將追究法律責任。

相關文章