C++ 特性極其豐富(泛型、模板、OOP、異常等),且編譯器「自作聰明」地進行隱式轉換、重載解析、模板推導,導致行為難以預測。Google 風格指南的核心思想是「預防勝於治療」:透過禁用易誤用特性、強制顯式化,從源頭避免錯誤。
理由:C++ 標準未定義跨編譯單元的初始化順序。若 A 依賴 B,行為不可預期。
替代:使用指針,在 main() 統一初始化。
Init()main(),可能違反隱含假設(如 gflags 未初始化)編譯器自動生成的預設建構子對成員初始化行為不確定,增加除錯難度。
explicit防止非預期的隱式轉換。
DISALLOW_COPY_AND_ASSIGN 禁用避免隱式拷貝;若需拷貝語義,提供具名函數 Copy() 更清晰。
改用具名函數如 Equal()、Add(),避免隱式調用驚喜。
僅當「不同型別表達相同意義」時允許;禁止用重載模擬預設參數。建議用 AppendString()/AppendInt() 替代重載 Append()。
Google 風格指南本質上是「受限子集」策略:捨棄 C++ 部分強大但危險的特性,換取程式碼的可預測性、可維護性與團隊協作效率。這反映了大規模工程對「可控」優於「精巧」的務實取向。