Linus Torvalds 曾言:「關鍵在於設計」。這句話深刻揭示了系統級開發的核心矛盾:C++ 強大的抽象機制 (模板、繼承、多態) 雖然理論優美,卻常讓程式設計師陷入「過度設計」的泥沼——花費大量時間在模板參數、智慧型指標所有權、鎖粒度等語言細節上,而非解決領域問題。這就是所謂的「心智包袱」。
在系統級開發 (OS、驅動程式、嵌入式、高效能伺服器) 中,效率與可預測性至上。C 語言迫使設計者直面硬體與資料結構,設計出來的方案精簡 (Lean)、直接、無隱藏成本。而 C++ 則提供了 STL、RAII、封裝等現代工具,能大幅提升編碼效率與安全性。
策略如下:
std::vector 替代動態陣列、std::sort 替代 qsort、RAII 管理資源),大方使用 C++,但嚴禁為了使用語言特性而扭曲設計。早期 C++ 正是將 C 中常見模式 (如虛函數表實現多態) 內建到語言中誕生的。COM 設計初期基於 C,後發現與 C++ 虛函數機制完美契合,才轉用 C++ 實現——這是「設計先行,語言服從設計」的典範。反觀後來許多 C++ 專案,卻讓設計迁就語言特性,本末倒置。
具體建議:
accumulate, transform, lower_bound 等),它們支援原生陣列,零成本抽象。class 僅用於資源封裝 (RAII) 或介面多態,禁用深層繼承樹。「用 C 設計,用 C++ 編碼」不是妥協,而是回歸工程本質:用最簡單有效的工具解決問題。C++ 的價值在於提供「更好的 C」,而非強迫你成為語言律師。