眾所周知 C++ 高效,但若僅為效率,C 語言同樣高效甚至更勝一籌。選擇 C++ 的真正原因在於:**在需要高效的領域中,同時提供良好的抽象機制**。
即使在高層應用中不直接使用類別/模板,C++ 標準庫(STL、TR1/TR2)極大提升開發效率:
// C 風格:手動管理資源、字串處理繁瑣
DIR* dir = opendir(".");
if (dir) { struct dirent* de; for (; (de=readdir(dir)); ) { ... } closedir(dir); }
// C++ 風格:一行完成同樣功能
readdir_sequence entries(".", readdir_sequence::files);
std::for_each(entries.begin(), entries.end(), ::remove);
// C++09 更簡潔
std::for_each(readdir_sequence(".", readdir_sequence::files), ::remove);
KISS 原則不代表「粗糙」,而是**選用最直接表達意圖的工具**。良好的抽象讓代碼更簡潔、可讀、可維護。
人天生被稀有資源吸引,掌握冷門技巧易獲成就感,但這分散了解決實際問題的精力。C++0x 目標正是消除附屬複雜性,將技巧內化為語言特性(如 variadic templates、auto、rvalue reference、concepts 等)。
Boost 元程式技巧支撐 boost::function/bind/tuple 等組件,最終惠及終端開發者。聰明的選擇:用技巧實現真正有用的功能,而非為技巧而技巧。
保持簡單(KISS)——但這種簡單可以透過高層類庫達成;必要時(且盡量少用)使用抽象,遵循良好設計原則與習慣。