《高質量C++程式設計指南》讀書筆記(一) (轉)
《高質量C++指南》是一本關於C++程式設計風格的指導、建議性的書,誕生已經有一年多了,初學C++,閱讀此書,感覺甚好,收穫很大。這本書對初學者掌握好的編碼習慣有極大的幫助,對老手改進編碼方式也有好處。
:namespace prefix = o ns = "urn:schemas--com::office" />
這裡把讀書筆記拿出來共享,希望對大家有幫助。
本書共11章,另前言以及參考文獻,附錄A,B,C建議按照原作者的意見,按照先前言,再附錄,再正文的順序閱讀。
頭:
為了防止標頭檔案被重複引用,應當用ifndef/define/endif 結構產生預處理塊。
用#include <filename.h> 格式來引用標準庫的標頭檔案(從標準庫目錄開始搜尋)。
用#include “filename.h” 格式來引用非標準庫的標頭檔案(編譯器從的工作目錄開始搜尋)。
標頭檔案中只存放“宣告”而不存放“定義” 。
程式碼行:
在每個類宣告之後、每個定義結束之後都要加空行。
在一個函式體內,邏揖上密切相關的語句之間不加空行,其它地方應加空行分隔。
一行程式碼只做一件事情,如只定義一個變數,或只寫一條語句。這樣的程式碼容易閱讀,並且方便於寫註釋。
if、for、while、do 等語句自佔一行,語句不得緊跟其後。不論執行語句有多少都要加{}。
儘可能在定義變數的同時初始化該變數(就近原則)。
空格:
關鍵字之後要留空格。
函式名之後不要留空格,緊跟左括號‘(’,以與關鍵字區別。
‘(’向後緊跟,‘)’、‘,’、‘;’向前緊跟,緊跟處不留空格。
‘,’之後要留空格,如Function(x, y, z)。如果‘;’不是一行的結束符號,其後要留空格,如for (initialization; condition; update)。
二元運算子的前後應當加空格。一元運算子前後不加空格。
象“[]”、“.”、“->”這類運算子前後不加空格。
對齊:
的分界符‘{’和‘}’應獨佔一行並且位於同一列,同時與引用它們的語句左對齊。
{ }之內的程式碼塊在‘{’右邊數格處左對齊。
長行拆分:
程式碼行最大長度宜控制在70 至80 個字元以內。
長要在低優先順序運算子處拆分成新行,運算子放在新行之首(以便突出運算子)。拆分出的新行要進行適當的縮排,使排版整齊,語句可讀。
修飾符的位置:
應當將修飾符* 和& 緊靠變數名。
註釋:
註釋是對程式碼的“提示”,不是文件。不可喧賓奪主,太多了會讓人眼花繚亂。花樣要少。
邊寫程式碼邊註釋,修改程式碼同時修改相應的註釋,以保證註釋與程式碼的一致性。不再有用的註釋要刪除。
註釋應當準確、易懂,防止註釋有二義性。
儘量避免在註釋中使用縮寫,特別是不常用縮寫。
註釋的位置應與被描述的程式碼相鄰,可以放在程式碼的上方或右方,不可放在下方。
當程式碼比較長,特別是有多重巢狀時,應當在一些段落的結束處加註釋,便於閱讀。
命名規則:
識別符號應當直觀且可以拼讀,可望文知意,不必進行“解碼”。最好採用英文單詞或其組合,切忌使用漢語拼音來命名。
識符的長度應當符合“min-length && max-information”原則。
命名規則儘量與所採用的操作或開發工具的風格保持一致。
程式中不要出現僅靠大小寫區分的相似的識別符號。
程式中不要出現識別符號完全相同的區域性變數和全域性變數,會使人誤解。
變數的名字應當使用“名詞”或者“形容詞+名詞”。
全域性函式的名字應當使用“動詞”或者“動詞+名詞”(動賓片語)。
類的成員函式應當只使用“動詞”,被省略掉的名詞就是本身。
用正確的反義片語命名具有互斥意義的變數或相反動作的函式等。
儘量避免名字中出現數字編號,除非邏輯上的確需要編號。
簡單的應用程式命名規則:
類名和函式名用大寫字母開頭的單片語合而成。
變數和引數用小寫字母開頭的單片語合而成。
常量全用大寫的字母,用下劃線分割單詞。
靜態變數加字首s_(表示static)。
如果不得已需要全域性變數,則使全域性變數加字首g_(表示global)
類的資料成員加字首m_(表示member),這樣可以避免資料成員與成員函式的引數同名。
為了防止某一庫中的一些識別符號和其它軟體庫中的衝突,可以為各種識別符號加上能反映軟體性質的字首。
表示式和基本語句:
如果程式碼行中的運算子比較多,用括號確定表示式的操作順序,避免使用預設的優先順序。
不要編寫太複雜的複合表示式。
不要有多用途的複合表示式。
不要把程式中的複合表示式與“真正的數學表示式”混淆。
不可將布林變數直接與TRUE、FALSE 或者1、0 進行比較。
應當將整型變數用“==”或“!=”直接與0 比較。
不可將浮點變數用“==”或“!=”與任何數字比較。
應當將指標變數用“==”或“!=”與NULL 比較。
不可在for 迴圈體內修改迴圈變數,防止for 迴圈失去控制。
每個case 語句的結尾不要忘了加break,否則將導致多個分支重疊(除非有意使多個分支重疊)。
不要忘記最後那個default 分支。即使程式真的不需要default 處理,也應該保留。
常量:
在C++ 程式中只使用const 常量而不使用宏常量(#define)。
需要對外公開的常量放在標頭檔案中,不需要對外公開的常量放在定義檔案的頭部。
如果某一常量與其它常量密切相關,應在定義中包含這種關係,而不應給出一些孤立的值。
函式設計:
引數的書寫要完整,如果函式沒有引數,則用void 填充。
如果引數是指標,且僅作輸入用,則應在型別前加const,以防止該指標在函式體內被意外修改。
如果輸入引數以值傳遞的方式傳遞物件,則宜改用“const &”方式來傳遞,這樣可以省去臨時物件的構造和析構過程,從而提高。
避免函式有太多的引數,引數個數儘量控制在5 個以內。
不要省略返回值的型別。
函式名字與返回值型別在語義上不可衝突。
不要將正常值和錯誤標誌混在一起返回。正常值用輸出引數獲得,而錯誤標誌用return 語句返回。
有時候函式原本不需要返回值,但為了增加靈活性如支援鏈式表達,可以附加返回值。
在函式體的“入口處”,對引數的有效性進行檢查。
在函式體的“出口處”,對return 語句的正確性和效率進行檢查。
(1)return 語句不可返回指向“棧”的“指標”或者“引用”,因為該記憶體在函式體結束時被自動銷燬。
(2)要搞清楚返回的究竟是“值”、“指標”還是“引用”
(3)如果函式返回值是一個物件,要考慮return 語句的效率。
函式的功能要單一,不要設計多用途的函式。
函式體的規模要小,儘量控制在50 行程式碼之內。
儘量避免函式帶有“記憶”功能。相同的輸入應當產生相同的輸出。
用於出錯處理的返回值一定要清楚,讓使用者不容易忽視或誤解錯誤情況。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10748419/viewspace-1008677/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 《高質量C/C++程式設計指南》學習筆記C++程式設計筆記
- C++/C高質量程式設計指南-筆記C++程式設計筆記
- 高質量C++/C程式設計指南(前 言) (轉)C++C程式程式設計
- 高質量C++/C程式設計指南(參考文獻) (轉)C++C程式程式設計
- 高質量C++/C程式設計指南(第5章 常量) (轉)C++C程式程式設計
- 高質量C++/C程式設計指南(林銳)C++C程式程式設計
- 高質量C++/C程式設計指南(第6章 函式設計) (轉)C++C程式程式設計函式
- 高質量C++/C程式設計指南(第2章 程式的版式) (轉)C++C程式程式設計
- 高質量C++/C程式設計指南(第11章 其它程式設計經驗) (轉)C++C程式程式設計
- python高階程式設計讀書筆記(一)Python程式設計筆記
- 高質量C++/C程式設計指南(附錄B :C++/C試題) (轉)C++C程式程式設計
- 高質量C++/C程式設計指南(第3章 命名規則) (轉)C++C程式程式設計
- 高質量C/C++程式設計指南總結(八)—— C++高階特性C++程式設計
- 高質量C++/C程式設計指南(第8章 C++函式的高階特性) (轉)C++C程式程式設計函式
- 《LINUX與UNIX SHELL程式設計指南》讀書筆記(轉)Linux程式設計筆記
- Objective-C高階程式設計讀書筆記(一)Object程式設計筆記
- 高質量C++/C程式設計指南(第1章 檔案結構) (轉)C++C程式程式設計
- C#高階程式設計 讀書筆記C#程式設計筆記
- Java遊戲程式設計讀書筆記(轉)Java遊戲程式設計筆記
- 高質量C/C++程式設計指南總結(二)—— 檔案版式C++程式設計
- 高質量C/C++程式設計指南總結(三)—— 命名規則C++程式設計
- 《Java程式設計思想》讀書筆記一Java程式設計筆記
- 高質量C++/C程式設計指南(第4章 表示式和基本語句) (轉)C++C程式程式設計
- 讀書筆記:編寫高質量javascript的68個方法筆記JavaScript
- Objective-C高階程式設計讀書筆記(二)Object程式設計筆記
- 高質量C++/C程式設計指南(第10章 類的繼承與組合) (轉)C++C程式程式設計繼承
- 程式程式設計1 – Unix環境高階程式設計7章讀書筆記程式設計筆記
- 程式程式設計2 – Unix環境高階程式設計8章讀書筆記程式設計筆記
- Objective-C高階程式設計讀書筆記之GCDObject程式設計筆記GC
- Objective-C高階程式設計讀書筆記之blocksObject程式設計筆記BloC
- 一道C++的題(從《高質量C++程式設計指南》中改編)(1千字)C++程式設計
- C++程式設計思想筆記之一 (轉)C++程式設計筆記
- 《程式設計匠藝》讀書筆記程式設計筆記
- 一個程式設計師的讀書筆記:程式設計的反思程式設計師筆記
- 《JavaScript Dom程式設計藝術》讀書筆記(一)JavaScript程式設計筆記
- Head First Javascript 程式設計讀書筆記(一)JavaScript程式設計筆記
- Java程式設計思想讀書筆記一:併發Java程式設計筆記
- 精通Visual C++圖象程式設計------讀書筆記8C++程式設計筆記