
上回介紹了一本敏捷發展製程(Agile)的書《Agile and Iterative Development – A Manager’s Guide》,它著重在高階觀念的融會貫通。這回介紹如何利用一些開放源碼的工具,來協助Java軟體開發人員體現敏捷製程的精神,透過開發人員的角度來 介紹敏捷製程,讓你覺得它不只是理論,也能落實在軟體開發的實務中。
Java瘦身非夢事
近來Java軟體的發展也逐漸走向「健怡」風,從軟體製程的改良(OOAD及Iterative法,以測試為中心的發展方式),到軟體框架的減重 (像是Spring Framework的興起,POJO重新受到推祟),慢慢地大家認同為了加速整個軟體專案的時程,有效提高軟體品質,並以目標導向為主,不一昧追求複雜技 術。
就因為是以目標導向為開發基本方針,本書作者Jeff Langr有鑑於此,便以TDD(Test-Driven Development)為中心思想,結合Java 5本身的OO特性,將TDD的觀念以程式撰寫的方式落實在Java開發人員身上,說明落實敏捷製程時需要重視的細節。所以本書中採用Java 5為主要程式語言,以目前最熱門的JUnit為軟體單元測試之主要框架,而透過Apache Ant工具達到自動化測試及編譯工作。由於是實務導向的內容,書中詳細提到這些工具的運用方式及程式的撰寫細節。
本書適合Java新手,或沒用過JUnit測試框架,甚至對兩者都十分陌生的開發人員。不論是拿來當成Java的自學教材,或是用來當成研究 JUnit的書籍都相當合適。本書內容以十分平實的方式來介紹,透過案例研究的方式,讓入門者也能一步一步體驗Java及TDD的樂趣。
全書共分十五個課程外加三章補充章節。第一章開始以簡單的程式碼說明如何利用JUnit測試框架來進行測試,從建立單元測試之物件(TestCase)開始,然後設計測試用的方法,最後並評斷(Assertion)測試結果是否正確。
第二章起便以五個章節的篇幅介紹Java語言的基本觀念,將物件導向的概念簡單化,從類別(Class)的定義開始,如何設計屬性及方法,如何實 體化物件,字串(String)物件的運用,如何規畫Package,介面的設計(interfaces)及多型(polymorphism)的觀念,物 件的繼承(inheritance)等。
接下來的章節便介紹例外處理(Exception)及記錄(Logging)機制,對不同資料結構(Collections)的操作,數值運算, 輸出輸入(IO)機制,反射機制(Reflection),多執行緒機制,泛型(Generics)的運用,Assertions及 Annotations等。
介紹完畢邏輯層面後,補充章節則透過設計學生資訊系統的操作介面,介紹如何使用Swing套件。在這裡提到了MVC的觀念,說明Swing套件中 對應元件的相互關係。最後一章則一併說明在Java開發過程中所會遇到的其他課題,像是JAR檔的製作、JDBC的使用、多國語系的設計等等。
以實例及TDD為主
單從這些章節的規畫看來,就像是一般介紹Java程式語言的書籍一樣,分別針對Java本身的特性進行介紹,但不同的是,所有搭配說明的程式碼都 與撰寫JUnit TestCase內容有關。從本書中可以得到作者對測試作業的建議,同時習得Java程式撰寫方式,以及測試元件的設計要領,有效地來進行敏捷製程開發。
另外,本書與其他介紹Java語言書籍的差異在於,作者不會一直鑽研Java核心理論及原理之中,而是以實例研究的方式(本書以學生資訊系統為主要案例),讓讀者可以將Java的精神與實際的系統設計相結合,閱讀起來更有感覺。
在每個章節均提供習題讓讀者練習,這些習題則是以一個西洋棋程式為主要目標,你可以用相同的觀念,嘗試落實在不同的案例上,解決其中的問題,以確保習得的觀念正確無誤,對Java及TDD也能有更紮實的理解。
當然,若你已是Java老鳥,本書也是讓你溫故知新的好書,除了重新整理Java 5的特性外,談論每個觀念時,都會提到如何將程式改良的作法(Refactoring),幫助你在程式撰寫上能有更佳的設計思維,進行提高開發的生產力。

