[C 的那些眉角] switch 記得加 default — 防禦未來的自己

有一種 bug,不是今天的你造成的,
是三個月後的你造成的。

你現在寫了一個 switch
處理三種狀態,邏輯完全正確,
測試也都過了。

三個月後,需求改了,
新增了第四種狀態。
你在 enum 裡加了一個值,
但忘記去更新那個 switch

編譯過了,沒有警告,
程式跑起來,遇到第四種狀態的時候,
switch 什麼都不做,
靜靜地繼續往下執行。

症狀可能是某個功能沒有反應,
可能是某個變數沒有被更新,
可能要跑很久才會觸發那個狀態,
然後你花了半天才找到原因。

default 加一行,可以讓這種問題立刻現形。

閱讀全文