java行業(yè)的圣經(jīng) 四本最重要的個(gè)人藏書,他們的書名都不含java
作者 thomas e. davis
譯者
摘要
thomas davis 推薦了四本書,它們可以讓你在java開發(fā)中受益非淺。這些書擴(kuò)展了java的基本語法和語義,使你能更全面地理解面向?qū)ο蟮某绦蛟O(shè)計(jì)。
正文
《design patterns》
《refactoring: improving the design of existing code》
《antipatterns: refactoring software, architectures, and projects in crisis》
《extreme programming explained: embrace change》
在這篇文章中,我提出了新手和專家在使用java進(jìn)行開發(fā)的區(qū)別,而且也給出了一個(gè)參考書目,幫助新手超越這個(gè)界限。這不是一個(gè)書目回顧,而是你通往職業(yè)發(fā)展中下一步的車票。
java是一個(gè)程序設(shè)計(jì)語言。它也是一個(gè)工具,如果錯(cuò)誤地使用,它就是無用的,某些時(shí)候甚至是危險(xiǎn)的。僅僅知道它的語法和語義不是一個(gè)程序員要做的。一個(gè)程序員也必須密切地關(guān)注和理解環(huán)境模式,也就是說在java環(huán)境中,什么是面向?qū)ο笤O(shè)計(jì)。知道對(duì)象是什么、接口是什么、多少對(duì)象實(shí)現(xiàn)了一個(gè)接口等等無聊的東西是遠(yuǎn)遠(yuǎn)不夠的。一個(gè)程序員必須知道這種使那些規(guī)則和關(guān)系融合成一個(gè)靈活的、可重用的、可擴(kuò)展的系統(tǒng)的神秘方法。我在這里討論的這些書將給你那些經(jīng)驗(yàn),提高你作為一名java程序員的職業(yè)素質(zhì)。令人奇怪的是,沒有一本書在他們的書名中包括java一詞。
注:本文所討論的所有書目的url地址可以在本文后面的資源中找到。
《design patterns》
這本書的作者是erich gamma, richard helm, ralph johnson, john vlissides, 和grady boocha——the gang of four是他們著名的呢稱,由 addison-wesley出版社在1995年出版。模式一詞描述了一類重復(fù)的問題而且提供了一個(gè)可重用的解決方案。設(shè)計(jì)模式至少可以通過對(duì)象共享來幫助你避免內(nèi)存限制的缺陷以簡化你的工作,設(shè)計(jì)模式也可以創(chuàng)造一個(gè)類似于接口的、可以靈活地同第三方庫進(jìn)行綜合的集成方式來簡化你的工作。《design patterns》仔細(xì)描述了這兩種設(shè)計(jì)模式,給出了評(píng)價(jià),而且提供了代碼例子和易于理解的相關(guān)圖表。雖然代碼例子都是c++的,但是語法十分類似于java,因此大多數(shù)程序員將毫無問題地掌握這些概念。有一本本書的仿制品,它采用java作為例子,書名是《java design patterns: a tutorial》,作者是james william cooper,由addison-wesley出版社在 2000年出版;但是沒有the gang of four在《design patterns》中所闡述的透徹和深度。
一旦你熟悉了《design patterns》中所列出的設(shè)計(jì)模式,將認(rèn)識(shí)到他們中的一些是如何發(fā)展的。在addison-wesley出版社1998年出版的《design patterns applied(software patterns series)》中,john vlissides 敘述了在某些最流行模式上的爭論和討論,而且介紹了一些新的在《design patterns》中刪去的模式。
《refactoring: improving the design of existing code》
會(huì)犯錯(cuò)誤就是人。如果這是真理的話,我看到了數(shù)以百計(jì)比我更象人的程序。項(xiàng)目出問題了。錯(cuò)誤出現(xiàn)了。進(jìn)度延期了,質(zhì)量犧牲了。這些都是對(duì)我們所從事的職業(yè)的警告。但是當(dāng)事情逐漸變得最糟時(shí),你需要在什么地方改變方向呢?我的非常多的同事采用"throw-away-and-start-over"的方法:從零開始,希望自己已經(jīng)可以避免錯(cuò)誤了。那是最極端的解決辦法,它一定激怒了你的老板。但是不要絕望,因?yàn)橛刑娲霓k法。
《refactoring: improving the design of existing code》是addison-wesley出版社面向?qū)ο蠹夹g(shù)系列叢書中的一本,作者是martin fowler, kent beck, john brant, william opdyke, 和don roberts ,出版日期是1999年,這本書給開發(fā)者提供了重新開始的不同選擇。refactoring就是通過重構(gòu)一個(gè)程序的內(nèi)部結(jié)構(gòu)但是不改變它的外部行為來提高它的性能的處理過程。refactoring能讓一個(gè)方法執(zhí)行得更快或者提供更精確的執(zhí)行結(jié)果,但是不改變這個(gè)方法的名字。這些改變對(duì)調(diào)用該方法的程序而言是不可見的,因此沒有代碼需要修改。
這本書教讀者如何通過一個(gè)特殊的意識(shí)來識(shí)別問題代碼,而且將每一個(gè)放到一個(gè)程序目錄中以便修改。例如,一個(gè)意識(shí)或許是一個(gè)不適當(dāng)?shù)挠H密關(guān)系——描述了兩個(gè)或更多個(gè)類的關(guān)系太緊密了以致對(duì)一個(gè)類的改變要求另一個(gè)類也要改變。這本書所建議的眾多的解決方法的一個(gè)是將這個(gè)存在問題的方法移到一個(gè)更適當(dāng)?shù)念愔小?
《antipatterns: refactoring software, architectures, and projects in crisis》
軟件開發(fā)不是易于出錯(cuò)和疏忽的唯一地方。管理同樣易于出現(xiàn)缺陷,這是由于混亂的開發(fā)過程和不現(xiàn)實(shí)的開發(fā)進(jìn)度。大多數(shù)因特網(wǎng)公司在他們的開發(fā)部門有一個(gè)令人擔(dān)憂的人員流動(dòng)速度。隨著程序員的加入和退出,職責(zé)的層次結(jié)構(gòu)就想代碼結(jié)構(gòu)一樣變得令人費(fèi)解。《antipatterns: refactoring software, architectures, and projects in crisis》的作者是william j. brown, raphael c. malveau, william h. brown, hays w. mccormick iii, 和 thomas j. mowbray ,由john wiley & sons出版社 在1998年出版,這本書將把上述加入到你整個(gè)的事業(yè)目標(biāo)中。它對(duì)計(jì)劃、錯(cuò)誤管理、基本方法中的常見錯(cuò)誤進(jìn)行分類,使你跳出深淵。
你的方案是否正遭受委員會(huì)的挑剔?就象有非常多的廚師在調(diào)一鍋湯一樣。或者你的代碼基礎(chǔ)是違反模式的賣方代碼,導(dǎo)致你依賴一個(gè)不可靠的第三方產(chǎn)品。《antipatterns》將這些問題分為12大類和大約24個(gè)小類,指導(dǎo)你避免這些問題或者跳離你偶然進(jìn)去的陷阱。
《extreme programming explained: embrace change》
xp是一種新鮮的、有些爭議的新的開發(fā)過程,kent beck是它的先行者。xp力爭按時(shí)提供好的軟件,沒有官僚作風(fēng),不重視傳統(tǒng)的開發(fā)周期。在因特網(wǎng)啟動(dòng)的發(fā)燒期,每個(gè)人的目光都聚焦在趕上市場(chǎng)。在現(xiàn)實(shí)世界中,項(xiàng)目超過了預(yù)算或者過了最后期限,就會(huì)被取消,這最終導(dǎo)致某些公司徹底失敗。項(xiàng)目開始的文檔和圖表很少能夠反映最終的產(chǎn)品。因此,開發(fā)團(tuán)隊(duì)需要適應(yīng)項(xiàng)目需求的頻繁變化并作出反映。那正是xp要發(fā)光的地方。
“溝通、簡潔、反饋、勇氣”是xp愛好者的秘訣。溝通有很多種途徑,例如在成雙成對(duì)的程序設(shè)計(jì)中完成。也就是一個(gè)人編碼,伙伴們進(jìn)行對(duì)等的實(shí)時(shí)檢查。
簡潔意味著當(dāng)你需要它的時(shí)候就僅僅建造那些你需要的。不浪費(fèi)時(shí)間執(zhí)行那些解決將來或許會(huì)發(fā)生的問題的奢侈方案。
反饋意味著“早發(fā)布,常發(fā)布”,這些為那些開放源代碼的狂熱者所喜愛。通過在開發(fā)的早期將產(chǎn)品呈現(xiàn)在用戶的面前,你能盡量避免出現(xiàn)在開發(fā)周期后期的劇烈變動(dòng)要求。
最后,勇氣促使xp弟子抓住機(jī)會(huì)并從結(jié)果中吸取經(jīng)驗(yàn)。只有在極少見的場(chǎng)合,你才必須求助于"throw-away-and-start-over"技術(shù)。《extreme programming explained: embrace change》中描述了那些秘訣和它們是如何幫助你的。這本書的作者是kent beck,由addison-wesley出版社在1999年出版。
結(jié)論
最近我有機(jī)會(huì)從零開始一個(gè)公司項(xiàng)目。我的開發(fā)隊(duì)伍靠這些書的教導(dǎo)生活和呼吸,成果是顯著的。我們按照進(jìn)度、沒有延期建造了一個(gè)特別健壯和可擴(kuò)展的系統(tǒng)。這些書改善了我的職業(yè)生涯,我相信他們也將改善你的職業(yè)生涯。
關(guān)于作者
thomas e. davis是一個(gè)具有sun認(rèn)證資質(zhì)的java軟件工程師,也是他的第二個(gè)成功的internet計(jì)劃的首席技術(shù)官。目前thomas居住在陽關(guān)充足的南佛羅里達(dá),遺憾的是大部分時(shí)間他都呆在室內(nèi)的一臺(tái)計(jì)算機(jī)前面