版式雖不影響功能,但決定可讀性。優良版式追求清晰、美觀,是程式風格的重要構成。可將版式比喻為「書法」:好書法讓人一目了然、賞心悅目;差版式如螃蟹爬行,讓維護者苦不堪言。請務必練好程式「書法」,彌補大學教育的缺失。
空行不佔記憶體,雖多費紙張但極值得。得體的空行讓版面清晰。
void Function1(...) { ... }
// 空行
void Function2(...) { ... }
// 空行
void Function3(...) { ... }
// 空行
while (condition) {
statement1;
// 空行
if (condition) { statement2; }
else { statement3; }
// 空行
statement4;
}
if/for/while/do 獨佔一行,執行語句不得緊跟其後,一律加大括號,防止撰寫失誤。// 風格良好
int width; int height; int depth;
x = a + b; y = c + d; z = e + f;
if (width < height) { dosomething(); }
for (init; cond; update) { dosomething(); }
// 風格不良
int width, height, depth;
x = a + b; y = c + d; z = e + f;
if (width < height) dosomething();
for (init; cond; update) dosomething(); other();
建議 2-2-1:盡可能在定義變數時同時初始化(就近原則),減少未初始化變數風險。
if (、const int)。(,與關鍵字區別。( 向後緊跟,)、,、; 向前緊跟。, 後留空格;; 若非行尾則後留空格(如 for (i=0; i<10; i++))。= += >= <= + * % && || << ^ 等)前後加空格。! ~ ++ -- &)前後不加空格。[] . -> 前後不加空格。void Func1(int x, int y, int z); // 良好
void Func1 (int x,int y,int z); // 不良
if (year >= 2000) // 良好
if(year>=2000) // 不良
for (i=0; i<10; i++) // 良好(緊湊時可適當減少空格)
for(i=0;i<10;i++) // 不良
int *x = &y; // 良好
int * x = & y; // 不良
array[5] = 0; // 不要寫成 array [ 5 ] = 0
a.Function(); // 不要寫成 a . Function()
{ 與 } 獨佔一行、同一欄位、與引用語句左對齊。{} 內程式區塊在 { 右側縮進處左對齊。// 良好
if (condition) {
...
} else {
...
}
// 不良
if (condition) { ...
} else { ...
}
巢狀 {} 使用縮進對齊。
if ((very_long_var1 >= very_long_var12)
&& (very_long_var3 <= very_long_var14)
&& (very_long_var5 <= very_long_var16)) {
dosomething();
}
virtual CMatrix CMultiplyMatrix(CMatrix leftMatrix,
CMatrix rightMatrix);