### Nginx代碼風格圖示?[](http://tengine.taobao.org/book/appendix_a.html#nginx-100 "永久鏈接至標題")
一、基本原則
> K&R編碼風格(偏BSD子類)。
> 每行不能超過80列。
> 不用TAB對齊,用空格。
> 默認對齊單元是4個空格。
> 除宏定義外,字母均為小寫,單詞間用下劃線_間隔。
> 使用C方式的注釋,不得使用//形式注釋。
> 中綴運算符的前后須空一格,如3 + 2以及a > 3。
> 逗號后須空一格,如foo(a, b, c);
二、風格圖示

1、 if/while/for/switch語句的左花括號和關鍵字在同一行上,和括號之間空一個空格。
2、 else關鍵字和兩個花括號在同一行上。

3、 文件開始的注釋空一行。
4、 較為完整的代碼塊間的距離為空兩行。如函數聲明、函數定義之間等。
5、 函數聲明或定義若一行顯示不下,則函數原型空4個空格。
6、 結構體數組的花括號和內容之間空一個空格。

7、 結構體數組的左花括號放在同一行上。
8、 較大的結構體數組元素最開始空一行。
9、 元素內容上下對齊。

10、注釋上下對齊。

11、函數調用折行時,參數上下對齊。

12、函數定義時,類型單獨一行。
13、變量聲明的類型上下排列按照從短到長的順序。注意,最下面的變量的類型和名稱間的空格為2-3個。一般情況下為2個,這是Nginx中最小的變量聲明中類型和名稱的距離。
14、變量名稱上下對齊——字母對齊,不包括指針的*號。

15、結構體內變量上下對齊(字母,不包括指針的的*號)。

16、單行注釋格式為/* something */

17、多行注釋的格式為:
/*
* something
*/

18、函數定義的左花括號獨占一行。
19、switch語句中,switch和case關鍵字上下對齊。

20、當條件表達式過長需要折行時,關系運算符須位于下一行的行首,并與上一行的條件表達式的第一個字符對齊,同時右花括號須位于單獨的一行,并與if/while等關鍵字對齊。

21、 else語句之前須空出一行。

22、在函數中,相同類型的變量聲明放在一行上。
- 上篇:nginx模塊開發篇
- nginx平臺初探
- 初探nginx架構
- nginx基礎概念
- connection
- request
- keepalive
- pipe
- lingering_close
- 基本數據結構
- ngx_str_t
- ngx_pool_t
- ngx_array_t
- ngx_hash_t
- ngx_hash_wildcard_t
- ngx_hash_combined_t
- ngx_hash_keys_arrays_t
- ngx_chain_t
- ngx_buf_t
- ngx_list_t
- ngx_queue_t
- nginx的配置系統
- 指令參數
- 指令上下文
- nginx的模塊化體系結構
- 模塊的分類
- nginx的請求處理
- handler模塊
- handler模塊簡介
- 模塊的基本結構
- 模塊配置結構
- 模塊配置指令
- 模塊上下文結構
- 模塊的定義
- handler模塊的基本結構
- handler模塊的掛載
- handler的編寫步驟
- 示例: hello handler 模塊
- handler模塊的編譯和使用
- 更多handler模塊示例分析
- http access module
- http static module
- http log module
- 過濾模塊
- 過濾模塊簡介
- 過濾模塊的分析
- upstream模塊
- upstream模塊
- upstream模塊接口
- memcached模塊分析
- 本節回顧
- 負載均衡模塊
- 配置
- 指令
- 鉤子
- 初始化配置
- 初始化請求
- peer.get和peer.free回調函數
- 本節回顧
- 其他模塊
- core模塊
- event模塊
- 模塊開發高級篇
- 變量
- 下篇:nginx原理解析篇
- nginx架構詳解
- nginx的源碼目錄結構
- nginx的configure原理
- 模塊編譯順序
- nginx基礎設施
- 內存池
- nginx的啟動階段
- 概述
- 共有流程
- 配置解析
- nginx的請求處理階段
- 接收請求流程
- http請求格式簡介
- 請求頭讀取
- 解析請求行
- 解析請求頭
- 請求體讀取
- 讀取請求體
- 丟棄請求體
- 多階段處理請求
- 多階段執行鏈
- POST_READ階段
- SERVER_REWRITE階段
- FIND_CONFIG階段
- REWRITE階段
- POST_REWRITE階段
- PREACCESS階段
- ACCESS階段
- POST_ACCESS階段
- TRY_FILES階段
- CONTENT階段
- LOG階段
- Nginx filter
- header filter分析
- body filter分析
- ngx_http_copy_filter_module分析
- ngx_http_write_filter_module分析
- subrequest原理解析
- https請求處理解析
- 附錄A 編碼風格
- 附錄B 常用API
- 附錄C 模塊編譯,調試與測試