第 2 章 程序的版式 版式雖然不會影響程序的功能,但會影響可讀性。程序的版式追求清晰、美觀,是程序風格的重要構成因素。
可以把程序的版式比喻為“書法”。好的“書法”可讓人對程序一目了然,看得興致勃勃。差的程序“書法”如螃蟹爬行,讓人看得索然無味,更令維護者煩惱有加。請程序員們學習程序的“書法”,彌補大學計算機教育的漏洞,實在很有必要。
2.1 空行 空行起著分隔程序段落的作用。空行得體(不過多也不過少)將使程序的布局更加清晰。空行不會浪費內存,雖然打印含有空行的程序是會多消耗一些紙張,但是值得。所以不要舍不得用空行。
l 【規則 2-1-1 】 在每個類聲明之后、每個函數定義結束之后都要加空行。參見示例 2-1 ( a )
l 【規則 2-1-2 】 在一個函數體內,邏揖上密切相關的語句之間不加空行,其它地方應加空行分隔。參見示例 2-1 ( b )
// 空行
void Function1(…)
{
…
}
// 空行
void Function2(…)
{
…
}
// 空行
void Function3(…)
{
…
} // 空行
while (condition)
{
statement1;
// 空行
if (condition)
{
statement2;
}
else
{
statement3;
}
// 空行
statement4;
}
示例 2-1(a) 函數之間的空行 示例2-1(b) 函數內部的空行
2.2 代碼行 l 【規則 2-2-1 】 一行代碼只做一件事情,如只定義一個變量,或只寫一條語句。這樣的代碼容易閱讀,并且方便于寫注釋。
l 【規則 2-2-2 】 if 、 for 、 while 、 do 等語句自占一行,執行語句不得緊跟其后。不論執行語句有多少都要加 {} 。這樣可以防止書寫失誤。
示例 2-2 ( a )為風格良好的代碼行,示例 2-2 ( b )為風格不良的代碼行。
int width; // 寬度
int height; // 高度
int depth; // 深度 int width, height, depth; // 寬度高度深度 x = a + b;
y = c + d;
z = e + f; X = a + b; y = c + d; z = e + f; if (width < height)="">
{
dosomething();
} if (width < height)="" dosomething();=""> for (initialization; condition; update)
{
dosomething();
}
// 空行
other(); for (initialization; condition; update)
dosomething();
other();
示例 2-2(a) 風格良好 的代碼行 示例2-2(b) 風格不良 的代碼行
2 【建議 2-2-1 】 盡可能在定義變量的同時初始化該變量(就近原則)
如果變量的引用處和其定義處相隔比較遠,變量的初始化很容易被忘記。如果引用了未被初始化的變量,可能會導致程序錯誤。本建議可以減少隱患。例如
int width = 10; // 定義并初紿化width
int height = 10; // 定義并初紿化height
int depth = 10; // 定義并初紿化depth
2.3 代碼行內的空格 l 【規則 2-3-1 】 關鍵字之后要留空格。象 const 、 virtual 、 inline 、 case 等關鍵字之后至少要留一個空格,否則無法辨析關鍵字。象 if 、 for 、 while 等關鍵字之后應留一個空格再跟左括號‘(',以突出關鍵字。
l 【規則 2-3-2 】 函數名之后不要留空格,緊跟左括號‘(',以與關鍵字區別。
l 【規則 2-3-3 】 ‘('向后緊跟,‘)'、‘,'、‘ ; '向前緊跟,緊跟處不留空格。
l 【規則 2-3-4 】 ‘,'之后要留空格,如 Function(x, y, z) 。如果‘ ; '不是一行的結束符號,其后要留空格,如 for (initialization; condition; update) 。
l 【規則 2-3-5 】 賦值操作符、比較操作符、算術操作符、邏輯操作符、位域操作符,如“ = ”、“ += ” “ >= ”、“ <= ”、“="" +="" ”、“="" *="" ”、“="" %="" ”、“="" &&="" ”、“="" ||="" ”、“="">=>< ”="" ,="" “="" ^="" ”等二元操作符的前后應當加空格。="">
l 【規則 2-3-6 】 一元操作符如“ ! ”、“ ~ ”、“ ++ ”、“ -- ”、“ & ”(地址運算符)等前后不加空格。
l 【規則 2-3-7 】 象“ []”、“ .”、“->” 這類操作符前后不加空格。 [1] [2] 下一頁
|