| EAA 目錄 P |

特殊情況

提供特定情況特殊行為的子類別。

完整說明請參閱 EAA 的 P496

Null 是物件導向程式中令人尷尬的東西,因為它們會破壞多型性。通常,您可以在給定類型的變數參考上自由呼叫 foo,而不用擔心該項目是確切的類型還是子類別。使用強類型語言,您甚至可以讓編譯器檢查呼叫是否正確。但是,由於變數可以包含 null,因此您可能會因為對 null 呼叫訊息而遇到執行時期錯誤,這將為您提供一個友善的堆疊追蹤。

如果變數有可能為 null,您必須記得用 null 測試程式碼將其包圍起來,這樣如果存在 null,您就可以執行正確的操作。通常,在許多情況下,正確的操作都是相同的,因此您最終會在許多地方撰寫類似的程式碼,這會造成程式碼重複的罪過。

Null 是此類問題的常見範例,其他問題也經常出現。在數字系統中,您必須處理無限大,它對加法等事項有特殊規則,會打破實數的通常不變式。我在商業軟體中最早的經驗之一是與一位不完全認識的公用事業客戶,稱為「住戶」。所有這些都意味著要改變類型的通常行為。

不要傳回 null 或某些奇怪的值,請傳回一個特殊情況,其介面與呼叫者預期的相同。