第一部分(基本規則)

1、內部鏈接,外部鏈接

內部鏈接:只在本編譯單元(.obj)能訪問和使用的,反之,其它obj文件能訪問到該變量或則該接口,那麼就是外部鏈接了

比如

a.cpp中

void Test(){}

在b.cpp中看似訪問不到Test,我們只需要在b.h中定義一個

void Test();

然後在b.cpp中就能夠訪問到了,鏈接的時候編譯器會鏈接到a.cpp的Test函數的

能夠申明爲內部鏈接是最好的了

內部鏈接有哪些呢:全局靜態變量,靜態函數(上面的Test如果加上static在b.cpp中就訪問不到了),枚舉,union,內聯函數

外部鏈接:類內部靜態變量,類成員函數,全局變量,全局函數

extern 一個變量就表示從其它地方引入一個外部鏈接的符號了


2、邏輯設計

弱包含:B的接口中使用A,但是A不屬於B的私有成員變量

強包含:B成員變量中包含了A。強包含又有hold和has。A的類型是指針,就是holds,是類型就是has了


3、設計的一些基本規則

3.1 類最小化,不要爲了滿足所有用戶的需求去設計類。要滿足大部分用戶的重要接口

3.2 保持數據成員私有,這個沒什麼好說的了

防止全局名字衝突(3.3~3.4)

3.3 避免在文件作用域內包含帶有外部鏈接的數據。包括全局變量,全局函數。

     全局變量通過封裝在struct中,提供接口,單件去改變

     全局函數通過將各個函數放在class中,static的方式去訪問

3.4 避免在h文件的文件作用域內使用枚舉,typedef和常量數據

    通過將枚舉定義在struct或class內解決,常量數據通過定義在該struct的static變量解決

    如果能定義在cpp中是更好了

3.5 頭文件中的宏定義衛哨。另外冗餘的包含衛哨可以減少頭文件打開次數

3.5 命名規範,需要區分如下類型即可

使用一個一致的方法突出類數據成員

使用一個一致的方法區分類型名字(class,struct)

使用一個一致的方法區分枚舉,常量和預處理器等不變的值



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章