Skip to content

Guard Clause

防衛子句/提早返回

01你是不是遇到這個 / THE SYMPTOM

我的函式裡 if 包 if 包 if 巢狀好幾層、縮排深到看不懂,主要邏輯被埋在最裡面。我想先把「不符合條件就直接擋掉返回」的狀況寫在開頭,讓正常流程攤平、不要那麼多層巢狀。

↑ 如果你點頭了,你要的關鍵字就是 Guard Clause

02這是什麼 / DEFINITION

在函式開頭就先檢查不合法或例外的情況,一旦不符合就立刻 return(或 throw),用「提早返回」取代深層巢狀的 if-else,讓主要邏輯保持在最外層、扁平好讀。

03什麼時候用 / WHEN TO USE

當函式有多個前置條件要檢查(參數為空、權限不足、資料不存在…)導致巢狀很深時;想降低圈複雜度、讓程式碼「先處理例外、再走正常路徑」時。

04怎麼跟 AI 說 / HOW TO ASK

直接複製這句、貼進 Claude Code / Cursor / Copilot / ChatGPT:

幫我把這個函式改用 guard clause(提早返回)重構,把前置檢查移到開頭、不符合就直接 return,減少巢狀 if-else。
05常見坑 / WATCH OUT

別跟 early return 過頭混淆:適度的提早返回讓程式更清楚,但同一函式散落十幾個 return 也會難追。重點是「擋例外用 guard、跑正常邏輯用主流程」,不是把每個 if 都拆成 return。

06相關的詞 / RELATED