<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Streams on [Lou's lab]</title><link>/tags/streams/</link><description>Recent content in Streams on [Lou's lab]</description><generator>Hugo -- gohugo.io</generator><language>zh-tw</language><copyright>Copyright ©2020 Lou</copyright><lastBuildDate>Sun, 06 Jul 2025 10:13:51 +0800</lastBuildDate><atom:link href="/tags/streams/index.xml" rel="self" type="application/rss+xml"/><item><title>Effective Java Item 46：偏好無副作用的函式</title><link>/posts/book/effective-java-item46/</link><pubDate>Sun, 06 Jul 2025 10:13:51 +0800</pubDate><guid>/posts/book/effective-java-item46/</guid><description>&lt;p>整理 &lt;strong>Effective Java&lt;/strong> 書中 Item 46: Prefer side-effect-free functions in streams 心得筆記&lt;/p>
&lt;h2 id="主旨streams-核心原則就是無副作用">主旨：Streams 核心原則就是「無副作用」&lt;/h2>
&lt;p>Java 的 streams API 雖然語法簡潔、功能強大，但若沒有掌握其「函數式編程」的核心精神，寫出來的程式碼可能又臭又長、難讀又難維護。本篇要講的，就是 streams 最重要的設計原則：&lt;strong>偏好無副作用的函式（side-effect-free functions）&lt;/strong>。&lt;/p>
&lt;p>簡單來說，「副作用」是指函式除了回傳值之外，還會修改外部狀態。例如把某個值加進 map 或 list，就是副作用。真正的函數式風格應該避免這種做法，讓每個階段的處理都只是資料的轉換，不牽涉修改其他東西。&lt;/p></description></item></channel></rss>