原本不覺得這則有什麼特別的, 翻 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() ) 等操作。
沒有留言:
張貼留言