天天看點

《Agile Java》學習指南001

書籍詳細資訊如下:

Agile Java Crafting Code with Test-Driven Development
By Jeff Langr
...............................................
Publisher: Prentice Hall PTR
Pub Date: February 14, 2005
ISBN: 0-13-148239-4
Pages: 792

簡單書評:

       總體而言,《Agile Java》并不适合作為Java程式設計的入門書。但是,如果你曾經學習過Java基本文法,又因為許久未用而淡忘,這本書确實有助你重新撿起Java,并讓你有所提高。之是以有此觀點是因為,這本書的結構很新穎,不是傳統的以“Hello World”起頭的方式。對于曾經學過而又遺忘的人來說,重新學習時最大的痛苦就是,一方面覺得自己已經掌握了,一方面又生怕自己漏過了重要的知識點。反映在看書上,就會出現“節奏快了怕遺漏,節奏慢了又犯困”的現象。相信我,用這本書做功力恢複是再合适不過的了。

       《Agile Java》的一大特點就是,在一開頭就引入了測試的概念。甚至可以說,它已經将“測試驅動開發(TDD)”這一理念滲透到骨髓裡了,是以看這本書時,很長時間你都找不到main函數!你會發現,作者在寫一個新類前會先寫出一個測試類,測試類本身甚至就是新類的功能說明。這種思路上的轉變将會成為你的收獲之一。

       此外,此書的用例是基于Java 5.0寫成的,作者充分注意到了5.0帶來的新特性,并在書中有所展現。同時,對于之前版本,作者也用了“7. Legacy Element”一章,做了充分的說明。

       此書的中文版已發行,但卅三先生用的是上述的英文版。不得不說,作者的英文文字水準并不高,卅三先生甚至一度懷疑他是不是Native English Speaker(同時也懷疑,拿到的這個版本是不是從德文版轉譯過來的,笑!)。雖然覺得作者的表達很生硬,但是總體來說并不難了解。不過,還是感覺作者在有些細節上說明得不夠充分,有些朋友在閱讀和實踐時可能會産生困擾。這也正是卅三先生決定寫一些學習指南的動因。

學習指南

一、在使用這本書時,建議不要使用IDE,或者僅使用IDE的編輯功能,編譯和運作還是用指令行的方式來執行。

       理由:上面也說了這本書的新穎之處就在于,它強調的是“通過測試推動開發進行”,它弱化了Project的概念,它甚至很長時間都不寫main函數。是以IDE起不了作用。同時,卅三先生也認為,多用于指令行可以讓你透過IDE絢麗的界面看到程式的本質,讓你在了解Make、Ant等時更有優勢。

二、本書的用例雖然沒有通過Project來組織,但是還是需要一定的規則來架構的。卅三先生的建議是:建立classes, src, testversion 三個檔案夾。最初以testversion為核心,在testversion下也建立class和src兩個檔案夾。如圖所示:

《Agile Java》學習指南001

在TestVersion/src下按照package規定的路徑建立相應檔案夾。所有的類的java檔案以及對應測試類的java檔案都放置于此。此外,在此src下還應放置junit.jar、compileAll、testRun這三個檔案。junit.jar将在(三)中詳述。compileAll和testRun都是卅三先生自編的批處理檔案,供大家參考。

compileAll.bat

<span style="font-size:18px;">::用于編譯src下所有子目錄的java檔案
::實際使用時應根據實際檔案夾情況作調整
javac -d ..\classes .\sis\studentinfo\*.java
javac -d ..\classes .\sis\report\*.java
javac -d ..\classes .\sis\summer\*.java</span>
           

testRun.bat

<span style="font-size:18px;">:: 用于編譯一個新類和其對應測試類,并運作測試程式
::進一步優化建議,可以做一個輸入輸出界面,由使用者填寫具體類名
javac -d ..\classes .\sis\studentinfo\Scorer.java
javac -d ..\classes -cp .;.\junit.jar .\sis\studentinfo\ScorerTest.java
java -cp ..\classes;.\junit.jar junit.awtui.TestRunner sis.studentinfo.ScorerTest</span>
           

三、本書的所有測試都依賴JUnit類,建議下載下傳Junit3.8.1,因為awtui.TestRunner 到了4.x版本就沒有了。下載下傳之後,可以按照上面的建議,把junit.jar放到TestVersion/src,并使用testRun中那句java指令來運作。

junit3.8.1 可以再此處下載下傳: http://download.csdn.net/download/sasanxiansheng/8202039