大規模C 程式設計(元件)

2021-05-18 07:51:04 字數 796 閱讀 7638

乙個元件就是物理設計的最小單位。元件是乙個不可分割的物理單位。嚴格地有乙個標頭檔案和乙個實現檔案構成。

乙個元件的物理介面就是它的標頭檔案中的所有東西。

如果在乙個元件的任何地方通過名稱引用了乙個型別,則稱在這個元件的實現中使用了這個型別。

我們必須考慮在物理介面上需要暴露多少實現細節,而且必須決定元件會依賴於哪些其他的元件,在這些元件中有哪些

變化會對我們自己的元件及其客戶程式產生影響。

物理設計規則:

一,在乙個元件內部宣告的邏輯實體不應該在該元件之外定義。

二,組成乙個元件的實現檔案和標頭檔案的根名稱應該嚴格匹配。

三,每個元件的實現檔案都應該將包含它自己的標頭檔案的語句作為第一行有效語句。

四,客戶程式應該包含直接提供了所需型別定義的標頭檔案,除了非私有繼承,應避免依賴乙個標頭檔案去包含另外乙個標頭檔案。

五,在乙個元件的實現檔案中,避免使用有外部連線並且沒有在相應的標頭檔案中明確宣告的定義。

六, 避免通過乙個區域性宣告來訪問另乙個元件中帶有外部鏈結的定義,而是要包含那個元件的標頭檔案。

依賴關係:

乙個編譯時依賴總是隱含乙個連線時依賴。

只有當元件x直接實質地使用了定義在y中的乙個類或自由運算子函式時,x才應包含y.h.

避免把(遠距離)友元關係授權給定義在另乙個元件中的乙個邏輯實體。

具備友元關係定義在乙個元件中不影響封裝。

友元關係影響訪問特權但不影響依賴。

《大規模C 程式設計》讀書筆記19

原則59 只保留乙個不透明指標 指向包含乙個類的所有私有成員的結構 會使乙個具體的類能夠將其客戶程式與其實現絕緣。定義35 乙個具體類如果滿足下列條件,就是完全絕緣的 只包含乙個資料成員,它表面上是不透明指標,指向乙個定義具體類的實現的non const struct 定義在.c檔案中 不包含任何其...

《大規模C 程式設計》讀書筆記23

technorati 標籤 c 大規模c 程式設計,讀書筆記 原則83 乙個類是乙個adt的具體規範,乙個元件是乙個抽象的具體規範。原則84 原則85 在任何可行的地方,延緩不必要功能的實現可以降低開發和維護成本,並且可以避免過早地進行精確的介面和行為設計。定義46 如果有效實現定義在乙個物件上的操...

《大規模C 程式設計》讀書筆記24

technorati 標籤 c 大規模c 程式設計,讀書筆記 原則92 可讀性 不僅僅是易用性 應該是使用運算子過載的主要原因。指導方針11 乙個過載運算子的語義對客戶應該是自然的 明顯的和直觀的。指導方針12 使用者自定義型別的過載運算子的語法屬性,應該反映已經為基本型別定義了的屬性。原則93 讓...