網頁

2014年1月12日 星期日

Effective Java實作Comparator

如果集合或陣列內的物件,有1個以上不同的排序邏輯時,那該如何處理呢?尤其是當已經實現了Comparable,又不能變動原本的邏輯時,Mix會採用Comparator來處理。


2014年1月11日 星期六

Effective Java實作Comparable

當集合或陣列內的物件需要排序時,會利用Collections.sort或Arrays.sort來進行排序,通常會implement Comparable,來實現自定義排序,透過回傳值來表示排序的大小。


2014年1月10日 星期五

Effective Java實作toString()

Object class中,也定義了toString()這個方法,因此所有的class也都繼承這個方法。預設是傳回這個物件完整類別名稱,後面接一個"@",及一個不帶正副號的十六進制hash碼。


2014年1月9日 星期四

Effective Java提升Code Coverage代碼涵蓋率

雖然我們已經有了測試程式,但是如何得知是否已完整測試了主程式?,透過Code Coverage代碼涵蓋率,我們可以快速地得知,目前系統中,有多少程式中被測試過,不考量成本跟投資效益比,涵蓋率越高,代表系統如預期正常運作的面向也越廣泛。


雖然Effective Java並沒有明確指出Code Coverage代碼涵蓋率的比率,不過因為Mix採用單元測試的方式進行測試,所以還是有必要了解,測試代碼是否能夠涵蓋比較多的主代碼。

2014年1月8日 星期三

Effective Java實作hashCode()

hashCode()這個方法,也是定義在Object class中,這個是所有class的base class,因此所有的class也都繼承這個方法,預設是傳回這個物件儲存的記憶體位址編號,因為Mix覆寫了equals(),所以也應該一併覆寫hashCode(),Effective Java中推薦的實現方式如下:


2014年1月7日 星期二

Effective Java實作equals()

equals()這個方法,定義在Object class中,這個是所有class的base class,因此所有的class都繼承這個方法,預設是比較內存位址,不過Mix需要的是商務邏輯上的比較,所以會覆寫equals()。


2014年1月6日 星期一

Effective Java單元測試TestNG

TestNG是另一種單元測試的framework,與JUnit的類似,這次Mix將使用它來撰寫測試程式,大部分所引用的class package都一樣,只差在JUnit與TestNG的字樣,可以直接用搜尋取代字串,快速替代掉,或是用IDE plugin直接轉換成測試程式碼。


2014年1月5日 星期日

Effective Java單元測試JUnit

實作了RoleImpl class,現在要開始單元測試了,或許你會覺得奇怪,才剛做好一個class而已,它並沒有商務邏輯,只有getter/setter與clone(),那是要測試什麼呢?沒錯,傳統上而言,是會等到有功能後才進行測試,甚至沒有單元測試,而是直接交付給測試人員或使用者,進行整合測試。


2014年1月3日 星期五

Effective Java實作類別

定義好了Interface之後,現在我們開始來實作類別:Role,建立一個class,implements Role,將3個屬性及clone()實作出來,單純的getter與setter,可以利用IDE工具,自動產生代碼。


2014年1月2日 星期四

Effective Java設定遊戲

首先,我們先設定遊戲,一個網頁遊戲的基本場景,主角擁有各種能力,但一開始數值都只有系統初始,隨著故事的發展,會接觸到各種不同的場景,獲得提升角色的道具與裝備,來參與更高難度的任務。


2014年1月1日 星期三

Effective Java從零開始

或許你已經開始寫Java了,或許只是想要一窺這個的世界,無論是抱著何種心情來看Java從零開始,會一種沒有負擔,沒有包袱的事,你會發現寫程式不再是枯燥乏味,孤單寂寞的一個人,而是生活中最快樂的學習之一。