特別聲明:本文是在《Nginx開發(fā)從入門到精通》的附錄A 編碼風(fēng)格基礎(chǔ)上補(bǔ)充完善了一些細(xì)節(jié)問題械拍。
一罢绽、基本原則
- K&R編碼風(fēng)格(偏BSD子類)
- 每行不能超過80列
- 不用TAB對齊畴栖,用空格
- 默認(rèn)對齊單元是4個(gè)空格
- 除宏定義外颊艳,字母均為小寫肾筐,單詞間用下劃線間隔
- 使用C方式的注釋寝志,不得使用//形式注釋
- 中綴運(yùn)算符的前后須空一格娇斑,如3 + 2以及a > 3
- 逗號后須空一格策添,如foo(a, b, c);
- if/while/for/switch條件表達(dá)式只有一行時(shí),左花括號與表達(dá)式處于同一行毫缆,表達(dá)式為多行時(shí)唯竹,左花括號獨(dú)占一行
二、風(fēng)格圖示(if/while/for/switch)
- 小括號與兩邊字符空一個(gè)空格悔醋,括號內(nèi)表達(dá)式兩邊與括號之間沒有空格
- 如果表達(dá)式只有一行摩窃,if/while/for/switch語句的左花括號和關(guān)鍵字在同一行上,和括號之間空一個(gè)空格
- else/else if語句之前須空出一行
- else/else if關(guān)鍵字和兩個(gè)花括號在同一行上芬骄,且左右空一個(gè)空格
-
右花括號與if/while/for/switch關(guān)鍵字對齊
- 當(dāng)條件表達(dá)式過長需要折行時(shí)猾愿,邏輯運(yùn)算符須位于下一行的行首,并與同一層次的條件表達(dá)式的第一個(gè)字符對齊
- 當(dāng)條件表達(dá)式過長需要折行時(shí)账阻,比較運(yùn)算符須位于下一行的行首蒂秘,并與比較語句的第一個(gè)字符對齊
-
當(dāng)條件表達(dá)式為多行時(shí),左花括號須位于單獨(dú)的一行淘太,并與if/while等關(guān)鍵字對齊
-
例外情況姻僧,當(dāng)條件表達(dá)式過長時(shí),邏輯運(yùn)算符可以適當(dāng)提前
-
例外情況蒲牧,條件表達(dá)式一行剛好80字符撇贺,左花括號可以位于單獨(dú)一行
-
switch語句中,switch和case關(guān)鍵字上下對齊
-
for語句表達(dá)式分多行時(shí)冰抢,分成三行松嘶,且每行第一個(gè)字符對齊
- 無限循環(huán)語句使用for ( ;; ),分號兩邊都空一格空格
三挎扰、風(fēng)格圖示(函數(shù))
-
函數(shù)聲明或定義若一行顯示不下翠订,則函數(shù)原型空4個(gè)空格
- 函數(shù)定義時(shí),返回類型及修飾符獨(dú)占一行
- 函數(shù)參數(shù)列表過長需要換行時(shí)遵倦,換行后需要空4個(gè)空格
-
函數(shù)定義的左花括號獨(dú)占一行
- 函數(shù)調(diào)用折行時(shí)尽超,參數(shù)上下對齊
四、風(fēng)格圖示(變量梧躺、結(jié)構(gòu)體)
- 在函數(shù)中似谁,相同類型的變量聲明放在一行上
- 函數(shù)中變量聲明的類型上下排列按照從短到長的順序。注意燥狰,最下面的變量的類型和名稱間的空格為2-3個(gè)棘脐。一般情況下為2個(gè),這是Nginx中最小的變量聲明中類型和名稱的距離
-
變量名稱上下對齊——字母對齊龙致,不包括指針的*號
-
結(jié)構(gòu)體內(nèi)變量上下對齊(字母蛀缝,不包括指針的*號)
- 結(jié)構(gòu)體數(shù)組的左花括號放在同一行上
-
結(jié)構(gòu)體數(shù)組的花括號和內(nèi)容之間空一個(gè)空格
- 較大的結(jié)構(gòu)體數(shù)組元素最開始空一行,元素之間也空一行
- 元素內(nèi)容上下對齊
五目代、風(fēng)格圖示(其他)
- 文件開始的注釋空一行
- 較為完整的代碼塊間的距離為空兩行屈梁。如函數(shù)聲明嗤练、函數(shù)定義之間等
-
函數(shù)中不同處理邏輯之間可以空一行
-
注釋上下對齊
- 單行注釋格式為/* something */
- 多行注釋的格式為:
/*
* something
*/
-
字符串賦值語句多行時(shí)引號對齊
- 賦值語句多行時(shí),邏輯運(yùn)算符與上一行字符對齊