Effective Java Item36:請用 EnumSet 取代位元欄位

整理Effective Java書中Item 36: Use EnumSet instead of bit fields心得筆記

主旨

在 Java 裡,用 intlong 表示多種布林選項的做法已經過時了,這種設計方式可讀性差又容易出錯。現在有更好的選擇 —— EnumSet。它不但語意清楚、效能高,而且更安全、好維護。

Read more

Effective Java Item35:請用實例欄位而非 ordinal()

整理Effective Java書中Item 35: Use instance fields instead of ordinals心得筆記

主旨

雖然 enum.ordinal() 這個方法看起來很方便,可以讓你直接取得列舉常數的順序編號,但實際上使用它來表示邏輯意義是非常危險的作法。這一則要點告訴我們:如果你需要用 enum 來代表某種數值或邏輯資訊,應該用實例欄位來明確定義,而不要依賴 ordinal() 的數字順序。

Read more

Effective Java Item34:用 enum 取代 int 常數

整理Effective Java書中Item 34: Use enum instead of int constant心得筆記

主旨

很多 Java 初學者一開始會用 int 常數(例如 1=小、2=中、3=大)來表示一組固定的狀態。但這種做法其實會讓程式容易出錯、不易維護,也看不出意思。Java 後來加入了 enum(列舉型別),提供更安全、清楚、有彈性的方式來處理這類需求。這篇文章會說明為什麼你應該用 enum 取代 int 常數。

Read more

Effective Java Item25:將原始碼檔案限制為單一top-level的類別

整理 Effective Java 書中 Item 25:Limit source files to a single top-level class 心得筆記

主旨:保持一檔一類別,避免隱藏的地雷

Java 技術上允許你在一個 .java 檔案中定義多個 top-level 類別(也就是非巢狀的 public 或 package-private 類別),但這麼做其實是一個踩雷設計。這會讓你的程式行為變得難以預測,尤其當你在不同檔案中定義了相同名稱的類別,編譯結果會依照檔案的編譯順序而不同,產生極大的風險。

Read more

Effective Java Item24:比起非靜態成員類型,更偏好靜態成員類型

整理 Effective Java 書中 Item 24: Prefer static member classes to non-static member classes 心得筆記

主旨

在 Java 中,巢狀類別(Nested Class)是一種將類別定義在另一個類別內部的設計方式。根據是否需要外部類別的實例,有四種巢狀類別:static member classnon-static member classlocal classanonymous class。本篇聚焦在:當巢狀類別不需要外部類別實例時,應優先使用 static member class,這樣可以節省記憶體、提升效能、避免記憶體洩漏,也對設計更有彈性。

Read more