隨著章節內容逐漸深入,開始要面對更大規模的系統設計。如何在提供穩定 interface 的同時,隱藏內部實現並增加編譯和執行的效能呢?學無止境,讓我們繼續閱讀《Effective C++》的第五節 —— Implementation。
為程式設計時務必考量例外處理,具有 exception-safe 的函式在異常時可以保證:
其提供以下三種承諾之一,函式的 exception-safe 取決於其所呼叫的子函式。
在知識點 11 中提到的「copy and swap」設計模式,能幫助實現「強烈保證」但不適用於所有函數。
在知識點 2時已經介紹過過 inline 函式,將小型且頻繁呼叫的函式設為 inline 能提升性能。
然而在使用 template
函式時需謹慎,inline 可能導致編譯時間激增並增加 bin 執行檔大小。且應避免將大型或複雜的函式設置 inline,否則可能導致 code bloat —— 程式碼變得比解決相同問題耗時更長,且更加複雜難以理解。
如果檔案之間的依賴過多,光是修改 class 就會導致大量重複編譯,降低開發效率。以下方法可用來減少依賴:
include
的 header 數量避免多餘的定義。
Person* Yoyo;
或 Person& Yoyo;
Person Yoyo;
class Widget {
public:
Widget();
~Widget();
void doSomething();
private:
class Impl;
Impl* pImpl;
};