C 高質量程式設計指南筆記(七)

2021-07-25 07:42:37 字數 1612 閱讀 5826

1、用const修飾函式的引數時,const 只能修飾輸入引數。

(1)如果輸入引數採用「指標傳遞」,那麼加const修飾可以防止意外的改動該指標,起到保護作用。

(2)如果採用的是值傳遞,由於函式將自動產生臨時變數用於賦值該函式,該輸入引數本來就無需改動,所以不要加const

例如:不要將void func1(int x)寫成 void func1(const int x),同理也不要將void func2(a a)寫成 void func2(const a a)

(3)對於非內部資料型別的引數而言,像void func(a a)這樣宣告的函式注定效率比較低,因為函式體內將產生a型別的臨時副本物件用於複製引數a, 而臨時物件的構造和複製和析構過程都將消耗時間。為了提高效率,可以將函式宣告為void func(a &a),但存在乙個確定,可能會改變引數a,因此加const即可,void func(const a &a)

(4)對非內部資料型別的輸入引數而言,應該將「值傳遞」的方式改為」const 引用傳遞」,目的是提高效率。

2、用const修飾函式的返回值

(1)如果給以「指標傳遞」方式的函式返回值加const,那麼函式返回值(即指標)的內容不能改變,該返回值只能被賦給加const修飾的同型別指標。

(2)如果函式返回採用」值傳遞」方式,由於函式會把返回值複製到外部臨時的儲存單元,加const沒有任何作用。

(3)函式返回值採用「引用傳遞」的場合並不多,這種方式一般只出現在類的賦值函式中,目的是為了實現鏈式表達。

3、const成員函式

void getname() const;   //不能改變成員變數,和呼叫其他非const成員函式
1、不要一味的追求程式的效率,應當在滿足正確性、可靠性、健壯性、可讀性等質量因素的前提下,設法提高程式的效率。

2、以提高程式的全域性效率為主,提高區域性效率為輔。

3、在優化程式的效率時,應當先找出限制效率的「瓶頸」,不要在無關緊要之處優化。

4、先優化資料結構和演算法,在優化執行**。

5、有時時間效率和空間效率可能對立,此時應分析哪個更重要,做出適當的折中。例如多花費一些記憶體來提高效能。

6、不要追求緊湊的**。因為緊湊的**並不能產生高效的機器碼。

1、變數(指標、陣列)被建立之後應當及時把它們初始化,一防止把未被初始化的變數當成右值使用。

2、當心變數的初值、預設值錯誤,或者精度不夠。

3、當心資料型別轉變發生錯誤,盡量使用顯式的資料型別轉換(讓人知道發生了什麼),避免讓編譯器輕悄悄地進行隱式的資料型別轉換。

4、當心變數發生溢位,陣列的下標越界。

5、當心忘記編寫錯誤的處理程式,當心錯誤處理程式本身有誤。

6、當心檔案i/o有錯誤。

7、避免編寫技巧性很高的**。

8、不要設計面面俱到、非常靈活的資料結構。

9、如果原有的**質量比較好,盡量復用它,但是不要修補很差勁的**,應當重寫。

10、盡量使用標準庫函式, 不要」發明」已經存在的庫函式。

11、盡量不要使用與具體硬體或軟體環境關係密切的變數。

12、把編譯器的選擇項設定為最嚴格。

13、如果可以的話,使用pc-link、logiscope等工具進行**審查。

《高質量C 程式設計指南》筆記

高質量 c 程式設計指南 是一本關於c 程式設計風格的指導 建議性的書,誕生已經有一年多了,初學c 閱讀此書,感覺甚好,收穫很大。這本書對初學者掌握好的編碼習慣有極大的幫助,對老手改進編碼方式也有好處。xml namespace prefix o ns urn schemas microsoft c...

高質量程式設計指南(筆記)

你使用乙個語言特徵是因為你需要它,而不是因為它存在 bjarne stroustrup 首先掌握語言的特徵及及其使用方法,再學習具體的語言實現才是語言學習之道!我們不能因為bjarne說過那樣的話就不去使用甚至不去學習c c 的高階特性。要想高效的使用一種語言,必須要了解它的各個特徵和他們的使用方法...

C 高質量程式設計指南筆記(三)

define c語言的巨集常量 const c 編譯器可以對前者進行型別安全檢查。1 在c 中只使用const常量而不使用巨集常量,即const常量完全取代巨集常量 2 需要對外公開的常量放再標頭檔案中,不需要對外公開的常量放在定義檔案的頭部。為便於管理,可以把不同模組的常量集中存放在乙個公共標頭檔...