🎯 什麼情境該想到我
當你有一個命令式迴圈「一邊篩選、一邊轉換、一邊累加」,讀起來要在腦中模擬執行才懂資料怎麼變化的時候,想讓資料的流動一眼看清。
⚙️ 怎麼用(步驟 / 公式)
意圖:用集合管道(map / filter / reduce 等)取代迴圈,讓「資料從哪來、經過哪些處理、變成什麼」像一條由上而下的流水線一樣清楚,消除中途的暫存變數。
小步安全進行:
- 建立一個變數指向迴圈要走訪的集合(管道的起點)。
- 從迴圈頂端開始,把每一段行為逐一搬成一個管道操作:篩選 →
filter、轉換 →map、彙整 →reduce(或 slice、flatMap 等)。 - 每搬一段就把它從原迴圈移除,並執行一次測試。
- 全部搬完後移除整個迴圈。
🧪 我實際套用的紀錄
- (待填)
⚠️ 注意 / 什麼時候不適用
- 管道太長、巢狀太深時反而更難讀,適度即可,不要為了無迴圈而硬串。
- 效能敏感的熱點迴圈,管道可能產生額外中間集合,需要時再權衡。
- 反向而言,若團隊不熟悉函式式風格,過度使用會增加閱讀門檻。
🔗 相關工具
- 拆分迴圈 Split Loop(先把一個迴圈拆成各做一件事,較容易改成管道)
- 提煉函式 Extract Function(把整條管道包成一個有名字的查詢)
- 重構