Coding Style不統一,是在跟人寫code中最大的不耐之一。
相對於使用文件說什麼哪邊有空白,哪邊要換行的,模模糊糊,令人無所適從。
不是不排,是不知從何排起,用人腦去記每個細項也很難做的100%對。
套一句 Knuth的名言
"A person does not really understand something until after teaching it to a computer"
在下就把自已習慣的coding style 極大部份是採用GNU的風格。
用indent 去令電腦懂 我要排什麼樣的style,協作的一方 也清楚多了。
也真的不習慣用已套裝好的指令 還不知道各參數是什麼意思…。
因此就查個明明白白。列在下面,也有一些對indent各參數的說明。
也可以看看Berkerly/K&R...etc的風格
#man indent
目前的Macro還不知道怎麼做Indent,若有用Macro寫多行expression的情況下,還是各自為政…
My C coding style based on the GNU style.
indent -nbad -bap -nbc -bbo -bl -bli0 -bls -ncdb -ncdw
-nce -cp1 -cs -di1 -ndj -nfc1 -nfca -hnl -i4 -ip5
-lp -pcs -nprs -psl -saf -sai -saw -nsc -nsob -blf
-nut -ts4
-nbad: 宣告變數後無空行
-bap: 強迫在function body前必有空行
-nbc: each comma(逗行)前必換行
-bbo: 強迫在&& ||前換行
-bl: braces-{ 需在if(...)換到下一行
-blin: { 需在if(...) 換行時,縮入多少空白
-bls: 於struct name及{ 置入newline
-blf: 需在function def及{置入newline
-ncdb: Don't put comment delimeters on the blank line
-ncdw: do{...} while 其} while 之間會置入newline
-nce: } 及 else間會置入newline
-cp1: Put comments to the right of #else and #endif statements in column n
-cs: 於Type cast opertator及變數間會有空白
-di1: 於declaration時的type 及 Identitier中間會有1個空白(換行時亦會有1空白)
-ndj: 對declarations 後的comments 等同於其他位於statements後的comment
-nfc1:勿對第一行的comment做格式化
-nfca:勿對comment做格式化
-hnl: prefer use the input file to break the long line
-i4: indentation level to n spaces.
-ip5: for old coding style其引數宣告需內縮5格
-lp: 若(...)有斷行 則 對齊 left parenthesis
-pcs: 在function name被call時,其name及 ( 之間不會有空白
-nprs: 於parentheses(括號)後無空白
-psl: 令procedure的type 及 name 為上下行
-saf: 令for及括號間有一個空白
-sai: 令if及括號間有一個空白
-saw: 令while及括號間有一個空白
-nsc: Do not put the '*' character at the left of comments
-nsob: Do'nt swallow optional blank lines
-nut: no tab
-ts4: 1 tab 為4spaces