良好的代碼版式有助於閱讀代碼和進行維護。可以設想,沒有良好的排版的文章,估計讀者看不到一半就沒耐心繼續往下讀了。代碼更是如此,沒有好的編程風格,寫出來的代碼只會苦澀,讓人難以閱讀和理解。所以學習良好的編程風格是百利而無一害的!
利用好空格與換行(這兩者能使我們代碼的意思更加的清晰)
空行不會浪費內存,所以不要捨不得,但也不能濫用!一般我們會在以下情況添加空行(或進行換行):
在每個類聲明後、每個函數定義結束後添加
在一個函數體內,邏輯密切的相關語句之間不添加,反之可添加空行進行分隔
一行代碼只做一件事情。即一行只定義一個變量,或只寫一條語句。這樣方便閱讀和注釋
if \ for \ while \ do 等語句獨自占一行,執行語句不緊跟其後,不論執行語句的多少
盡量在定義變量的同時對該變量進行初始化,這樣做可以避免引用了未被初始化變量帶來的錯誤。
合理地使用空格,使變量名或關鍵字與其他的字符保持一定的距離。這樣做,就避免了因代碼的過度緊湊帶來 “審美疲勞” 。
同樣,關於如何合理使用空格,有以下的建議:
所有的關鍵字後至少留一個空格。而像 if \ while \ for 等關鍵字後應留一個空格再跟左括號 ‘ ( ’
函數名不能留空格
' ( ' 向後緊跟, ' ) ', ' , ', ' ; ' 向前緊跟
‘ , ’ 後留空格,若‘ ; ’ 不是一行的結束符號,其後要留空格
二元操作符前後應加空格
一元操作符前後不加空格
‘[ ] ', ' . ', ' - > ' 前後不加空格
[cpp]
int width; // 寬度
int height; // 高度
x = a + b;
y = c + d;
if (width <= height)
{
function();
}
// 空行
for (int i=0; i<n; i++)
{
function();
}
void function(int i, int j);
if ((a>=b) && (c<=d))
{
//...
}
x = a < b ? a : b;
a[5] = 0;
a.function();
a->function();
長行拆分:
代碼行的最大長度控制在70至80字符內。雖然如此,但我們可設想如果一整行都寫滿了,無疑會為我們閱讀代碼和維護帶來不便。所以就需要進行長行拆分。
[cpp]
if ((very_longer_variable1 >= very_longer_variable12)
&& (very_longer_variable3 <= very_longer_variable14)
&& (very_longer_variable5 <= very_longer_variable16))
{
function();
}
for (very_longer_initialization;
very_longer_condition;
very_longer_update)
{
function();
}
注釋(通常用於):
版本、版權聲明
函數接口聲明
重要的代碼行或段落提示
注釋建議與規則:
注釋應當准確、易懂、防止有二義性
邊寫代碼邊注釋,修改代碼的同時修改注釋,保證一致性
當代碼比較長,特別是多重嵌套時,應當在一些段落的結束處加注釋,便於閱讀
注釋的位置應與被描述的代碼的相鄰,最好放在代碼的上方或右方,不可以在下方
注釋不能濫用。因為精簡到位的注釋能幫助我們理解代碼的意思,但如過多的濫用,並且做一些“多余”的注釋。只會多此一舉。例如: i++; / / 變量i進行自增
[cpp] view plaincopyprint?
if ()
{
//代碼行
while ()
{
//代碼行
} // end of while
//代碼行
} // end of if
類的版式(主要有兩種):
“以數據為中心”。私有類型的數據寫在前面,將公有類型的函數寫在後面
“以行為為中心”。將公有類型的函數寫在前面,私有類型的數據寫在後面
建議采用“以行為為中心”。這樣不僅讓自己在設計類時思路清晰,而且方便別人閱讀。因為用戶關心的是接口。