Effective Java Item 51:設計方法簽名要謹慎

整理 Effective Java 書中 Item 51: Design method signatures 心得筆記

主旨

方法簽名(method signature)是一個方法能否「好用」的第一印象。這篇文章彙整幾個 API 設計小技巧,讓你的方法名稱與參數設計更加清晰、簡潔、可維護,避免常見的地雷與誤用風險。

Read more

Effective Java Item 48:使用 parallel streams 要非常小心

整理 Effective Java 書中 Item 48: Use streams judiciously 心得筆記

主旨:parallel stream 用錯,效能與正確性可能雙雙出問題

Java 8 的 stream API 帶來了非常方便的資料處理方式,加上 .parallel() 方法,更是讓你只用一行就能平行運算聽起來很香。

但實際上呢?用錯地方,不僅效能沒提升,甚至會程式掛掉。平行化是進階優化技巧,不是萬靈丹。

Read more

Effective Java Item 47:回傳元素序列時優先使用 Collection 而非 Stream

整理 Effective Java 書中 Item 47: Prefer Collection to Stream 心得筆記

主旨:回傳元素序列時,應優先使用 Collection

Java 8 推出 streams 之後,我們在設計方法時有了新的回傳型別選擇。不過,若你要回傳一串元素,Collection 或其子型別通常仍是最合適的選擇,因為這樣使用者不論是想用 for-each 迴圈還是用 stream pipeline,都能方便操作。除非真的有特殊理由,否則不要只回傳 Stream。

Read more

Effective Java Item 46:偏好無副作用的函式

整理 Effective Java 書中 Item 46: Prefer side-effect-free functions in streams 心得筆記

主旨:Streams 核心原則就是「無副作用」

Java 的 streams API 雖然語法簡潔、功能強大,但若沒有掌握其「函數式編程」的核心精神,寫出來的程式碼可能又臭又長、難讀又難維護。本篇要講的,就是 streams 最重要的設計原則:偏好無副作用的函式(side-effect-free functions)

簡單來說,「副作用」是指函式除了回傳值之外,還會修改外部狀態。例如把某個值加進 map 或 list,就是副作用。真正的函數式風格應該避免這種做法,讓每個階段的處理都只是資料的轉換,不牽涉修改其他東西。

Read more