首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> 關於C++

C++ 類與接口設計原則:兼容性、封裝與演化的工業級準則

     編輯:關於C++

面向對象三大特性(封裝、繼承、多態)在 C++ 中由 class 承載。類設計質量決定系統質量。工業級要求:**二進制兼容**(無需重編譯換庫)與**源碼兼容**(重編譯即可)。

整體功能三原則

  • 單一功能原則:一類一責任,過則拆、散則合。
  • 開放/封閉原則:對擴展開放、對修改封閉;擴展靠新類(繼承/組合)而非改舊碼。
  • 最小驚訝原理:重載/覆寫保持原語義(如 Dog::Talk() 咬人即違反)。

接口與實現隔離具體準則

  • 接口最小完整:精簡函數數量、覆蓋職能、保留舊函數(加註釋)、只增不減。
  • 成員變量全私有:public 破壞封裝,protected 導致派生類依賴實現細節。
  • 避免返回成員指針/引用:同樣暴露實現。
  • 審慎禁用默認拷貝/賦值:若不定義自定義版本,應聲明私有禁用,改提供 clone()。

兼容性硬性規範

  • 不變類大小、成員順序:不增減成員、不改類型、不改聲明順序、不改虛函數有無(影響 vptr 存在與佈局)。
  • 不用 inline 函數:內聯編譯進客戶碼,訪問私有成員且佈局變則二進制不兼容。
  • 接口函數非虛:虛函數調用靠 vtable 偏移,順序變則不兼容。改用 NVI 模式:public void Draw() { DoDraw(); } private virtual void DoDraw();
  • 不改接口函數順序:嵌入式系統常用導出函數表索引調用。
  • 避免默認參數:默認值隨頭文件,修改即破壞兼容。

遵循上述,可最大程度保障庫升級不傷客戶代碼,踐行 Intel/Microsoft 式長期兼容承諾。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved