C/C++編寫規範之格式-(2)

C/C++編寫規範之格式(續)

C/C++編寫規範之格式-(2)

6.條件語句

 不在圓括號中添加空格,關鍵字 else 另起一行。if (condition) { // no spaces inside parentheses ... // 2 space indent.} else { // The else goes on the same line as the closing brace. ...}

if和左圓括號間有個空格,右圓括號和左大括號(如果使用的話)間也要有個空格:

if(condition) // Bad - space missing after IF.if (condition){ // Bad - space missing before {.if(condition){ // Doubly bad.if (condition) { // Good - proper space after IF and before {.

有些條件語句寫在同一行以增強可讀性,只有當語句簡單並且沒有使用else子句時使用:

if (x == kFoo) return new Foo();if (x == kBar) return new Bar();

如果語句有 else 分支是不允許的:

// Not allowed - IF statement on one line when there is an ELSE clauseif (x) DoThis();else DoThat();

通常,單行語句不需要使用大括號,如果你喜歡也無可厚非,也有人要求 if 必須使用大括號:

if (condition) DoSomething(); // 2 space indent.if (condition) { DoSomething(); // 2 space indent.}

但如果語句中哪一分支使用了大括號的話,其他部分也必須使用:

// Not allowed - curly on IF but not ELSEif (condition) { foo;} else bar;// Not allowed - curly on ELSE but not IFif (condition) foo;else { bar;}// Curly braces around both IF and ELSE required because// one of the clauses used braces.if (condition) { foo;} else { bar;}
C/C++編寫規範之格式-(2)

7.循環和開關選擇語句

switch 語句可以使用大括號分塊;空循環體應使用{}或 continue。

switch 語句中的 case 塊可以使用大括號也可以不用,取決於你的喜好,使用時要依下文所述。

如果有不滿足 case 枚舉條件的值,要總是包含一個 default(如果有輸入值沒有 case 去處理,編譯器將報警)。如果 default 永不會執行,可以簡單的使用 assert:

switch (var) { case 0: { // 2 space indent ... // 4 space indent break; } case 1: { ... break; } default: { assert(false); }}

空循環體應使用{}或 continue,而不是一個簡單的分號:

while (condition) { // Repeat test until it returns false.}for (int i = 0; i < kSomeNumber; ++i) {} // Good - empty body.while (condition) continue; // Good - continue indicates no logic.while (condition); // Bad - looks like part of do/while loop.
C/C++編寫規範之格式-(2)

8.指針和引用表達式

句點(.)或箭頭(->)前後不要有空格,指針/地址操作符(*、&)後不要有空格。

下面是指針和引用表達式的正確範例:

x = *p;p = &x;x = r.y;x = r->y;

注意:\

1) 在訪問成員時,句點或箭頭前後沒有空格;

2) 指針操作符*或\&後沒有空格。

在聲明指針變量或參數時,星號與類型或變量名緊挨都可以:

// These are fine, space preceding.char *c;const string &str;// These are fine, space following.char* c; // but remember to do "char* c, *d, *e, ...;"!const string& str;char * c; // Bad - spaces on both sides of *const string & str; // Bad - spaces on both sides of &

同一個文件(新建或現有)中起碼要保持一致。

 

C/C++編寫規範之格式-(2)

9.布爾表達式

如果一個布爾表達式超過標準行寬(80 字符),如果斷行要統一一下。

下例中,邏輯與(\&\&)操作符總位於行尾:

if (this_one_thing > this_other_thing && a_third_thing == a_fourth_thing && yet_another & last_one) { ...}

兩個邏輯與(&&)操作符都位於行尾,可以考慮額外插入圓括號,合理使用的話對增強可讀性是很有幫助的。

 

10.函數返回值

return 表達式中不要使用圓括號。

函數返回時不要使用圓括號:

return x; // not return(x);
C/C++編寫規範之格式-(2)

11.變量及數組初始化

選擇=還是()。

需要做二者之間做出選擇,下面的形式都是正確的:

int x = 3;int x(3);string name("Some Name");string name = "Some Name";
C/C++編寫規範之格式-(2)

12.預處理指令

預處理指令不要縮進,從行首開始。

即使預處理指令位於縮進代碼塊中,指令也應從行首開始。

// Good - directives at beginning of line if (lopsided_score) {#if DISASTER_PENDING // Correct -- Starts at beginning of line DropEverything();#endif BackToNormal(); }// Bad - indented directives if (lopsided_score) { #if DISASTER_PENDING // Wrong! The "#if" should be at beginning ofline DropEverything(); #endif // Wrong! Do not indent "#endif" BackToNormal();}
C/C++編寫規範之格式-(2)

C/C++學習路線(收藏)

1、c語言入門 程序設計-算法-運算符-順序 分支 循環結構。

2、C語言精通 數組-函數字串符-指針-構造類型-預處理-存儲管理-文件操作-數據結構。

3、c++入門 面對對象編程-類和對象-運算符重載-派生於繼承,異常處理技術-C++語言標準-數據結構-(雙向鏈表-雙向隊列-樹-圖)。

4、c++精通-stl標準模板庫(容器-迭代器-算法)正則表達式-boost標準模板庫-socket網絡編程-大型企業項目實戰:-員工信息管理系統-推箱子-俄羅斯方塊-服務器-播放器-人工智能。

5、windows高級工程師:win32/mfc-windows高級編程-QT框架編程-大型企業級項目實戰項目(人臉識別-車牌識別-局域網遠程監控-等項目)

6、linux系統應用程序開發-linux內核構架研究-linux頂級網絡服務器開發及搭建。

7、大型企業項目實戰(linux內核高級虛擬內存驅動設計-linux網絡間諜系統軟件-linux內核網絡數據劫持-linux網絡閱讀系統開發

C/C++編寫規範之格式-(2)

文章最後

怎麼快速學C/C++,有什麼方法,打算深入瞭解這個行業的朋友,可以加C/C++學習群:750+579+336,不管你是小白還是大牛,小編我都歡迎,不定期分享乾貨,包括小編自己整理的一份2018最新的C/C++資料和0基礎入門教程,歡迎初學和進階中的小夥伴。

每天晚上20:00我都會開直播給大家分享C/C++遊戲編程學習知識和路線方法,群裡會不定期更新最新的教程和學習方法,大家都是學習C/C++的,或是轉行,或是大學生,還有工作中想提升自己能力的前端黨,如果你是正在學習C/C++的小夥伴可以加入學習。最後祝所有程序員都能夠走上人生巔峰,讓代碼將夢想照進現實,非常適合新手學習,有不懂的問題可以隨時問我,工作不忙的時候希望可以給大家解惑。

C/C++編寫規範之格式-(2)

喜歡小編的文章的朋友可以關注、收藏、轉發、留言,閱讀愉快!!!


分享到:


相關文章: