2011年7月14日 星期四

Effective Java 讀書筆記: Item 50 - 考慮用更適合的型別替代 String

原本不覺得這則有什麼特別的, 翻 Head First - OOAD 後, 看到裡面第一個例子就是將一堆屬性的型別從 String 盡量換成 enum, 程式瞬間變清楚許多, 而且也可避免大小寫或拼錯字的問題, 字串比對有點囉唆, 而且 enum 的比對效率也比 String 快 (因為 enum 的每一元素都是 singlton, 可用 == 直接比對)。才想到之前也看過類似的小問題, 只是量不大, 只覺得程式並不清楚, 到沒有沒特別嚴重, 結果沒想到要去重構它們。

附上 Head First - OOAD 的例子, 看了比較有感覺。修改之前:

Guitar:
----------------------------
serialNumber: String
price: String
builder String
model: String
type: String
backWood: String
topWood: String

修改之後:

Guitar:
----------------------------
serialNumber: String
price: double
builder Builder
model: String
type: Type
backWood: Wood
topWood: Wood

上面的 Builder、Type、Wood 是 enum。這樣在提供搜尋吉它的介面時, 可以省掉一些前處理 (像是 toLower()、trim() ) 等操作。

沒有留言:

張貼留言

在 Fedora 下裝 id-utils

Fedora 似乎因為執行檔撞名,而沒有提供 id-utils 的套件 ,但這是使用 gj 的必要套件,只好自己編。從官網抓好 tarball ,解開來編譯 (./configure && make)就是了。 但編譯後會遇到錯誤: ./stdio.h:10...