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

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

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

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