C 程式設計規範101讀書筆記(2)設計風格

2021-06-20 21:45:15 字數 1196 閱讀 8640

這部分主要涉及設計的風格的事宜:基本觀點還是那句話,高內聚,低耦合,擴充套件性強,簡單

第5條 乙個實體應該只用乙個緊湊的職責

一次只解決乙個問題。乙個實體只負責一件事。

乙個實體職責過多,導致實體多重性格,難控制

典型反例:

realloc() 函式

c++ basic_string 類

第6條 正確,簡單和清晰第一

kiss(keep it ****** oftware)

典型反例:

不必要的c++ 操作符號過載

使用臨時變數作為建構函式的引數

第7條 程式設計中應知道何時和如何考慮可伸縮性

(1)使用靈活的,動態分配的資料,不要使用固定大小的陣列

(2)了解演算法的實際複雜性

(3)優先使用線性演算法或者盡可能快的演算法

(4)盡可能避免劣於線性複雜度的演算法

(5)永遠不要使用指數負載型的演算法,除非你已經山窮水盡了。

測試資料表明優化是非常必要的且重要。

第8條 不要進行不成熟的優化

第9條 不要進行不成熟的劣化

第10條 儘量減少全域性和共享資料

共享會導致衝突:避免共享資料,尤其是全域性資料。共享資料會增加耦合度,提高維護成本,降低效能

全域性名字空間中的物件名稱會無緣全域性名字空間

共享資料對單元測試不利

共享資料和全域性資料會減少多執行緒和多處理器環境的並行性

盡量降低類間的耦合性,儘量減少互動

第11條 隱藏資訊

第12條  懂得何時和如何進行併發性程式設計

儘量減少共享資料,安全地共享必須共享資料

安全法則:

(1)參考目標平台的文件,了解該平台的同步化原語(原子整數,記憶體障珊,互斥體)

(2)把平台原語用自己設計的抽象類封裝

(3)確保正在使用的型別在多執行緒中使用是安全的 

外部加鎖

內部加鎖(是否為共享物件類,控制加鎖的粒度)

不加鎖(唯讀物件)

第13條 確保資源為物件所擁有。使用顯式的raii和智慧型指標

不要在一條語句中分配乙個以上的資源。raii(resource acquiresition is intialization)

每當處理需要配對的獲取、釋放函式呼叫的資源時,應該把該資源封裝在乙個物件中。

確保所有資源都為物件所有,用智慧型指標來儲存動態分配的資源,同樣應該顯式地執行資源分配。

C 程式設計規範101讀書筆記(5)類的設計與繼承

這部分主要討論物件導向的設計的一些陷阱 主要涉及建構函式,析構函式,繼承,組合,成員可見度 第32條 弄清所要編寫的是哪種類 第33條 用小類代替巨類 第34條 用組合代替繼承 在不影響呼叫 的情況下具有更大的靈活性 更好的編譯時隔離,更短的編譯時間 例外情況 1 如果需要改寫虛函式 2 如果需要訪...

C 程式設計規範101讀書筆記(1)組織和策略問題

這部分主要涉及 質量控制 第0條 不要拘泥小節 風格一致 1 縮排體現 結構 2 行長度不要影響閱讀 3 使用一致的命名規範 4 編寫有用的注釋 第1條 在高告警級別乾淨利落地編譯 1 第三方標頭檔案 pragma warning push pragma warning disable 4516 p...

C專家程式設計讀書筆記(2)

c專家程式設計讀書筆記 2 2005.12.19 1 早用lint,勤用lint,不要等到最後才用lint。lint是軟體的道德標準 2 關於typedef。先看乙個宣告 void signal int sig,void func int int 對於它,可以簡化為 typedef void ptr...