C/C++編寫規範之格式(續)
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;}
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.
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 &
同一個文件(新建或現有)中起碼要保持一致。
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);
11.變量及數組初始化
選擇=還是()。
需要做二者之間做出選擇,下面的形式都是正確的:
int x = 3;int x(3);string name("Some Name");string name = "Some Name";
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++學習路線(收藏)
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++,有什麼方法,打算深入瞭解這個行業的朋友,可以加C/C++學習群:750+579+336,不管你是小白還是大牛,小編我都歡迎,不定期分享乾貨,包括小編自己整理的一份2018最新的C/C++資料和0基礎入門教程,歡迎初學和進階中的小夥伴。
每天晚上20:00我都會開直播給大家分享C/C++遊戲編程學習知識和路線方法,群裡會不定期更新最新的教程和學習方法,大家都是學習C/C++的,或是轉行,或是大學生,還有工作中想提升自己能力的前端黨,如果你是正在學習C/C++的小夥伴可以加入學習。最後祝所有程序員都能夠走上人生巔峰,讓代碼將夢想照進現實,非常適合新手學習,有不懂的問題可以隨時問我,工作不忙的時候希望可以給大家解惑。
喜歡小編的文章的朋友可以關注、收藏、轉發、留言,閱讀愉快!!!
閱讀更多 往事C語言 的文章