【閱讀筆記】《C程序員 從校園到職場》第三章 程序的樣式(大括號)
參考: https://blog.csdn.net/zhouzhaoxiong1227/article/details/22820533
一、.初始化數組變量
在實際的軟件開發項目中,變量在使用前應初始化,防止未經初始化的變量被引用。
對於數組變量來說,恰當的初始化樣例如下:
char szString[100] = {0};
定義了一個名為szString的包含100個字節的數組變量,並將該數組中每個變量的初始值賦為0。
二、 定義和初始化結構體變量
結構體變量的定義方法的樣例如下:
typedef struct
{
……
}T_Struct;
該結構體變量的初始化樣例如下:
T_Struct tStruct = {0};
很多開發人員都不註重對結構體變量進行初始化,這是不對的。要牢記的是,任何變量在使用前,都應進行初始化。
三、用在if、else、else if、for、while、do等語句中
在實際的軟件開發項目中,if、else、else if、for、while、do等語句用得較多,對這些語句的書寫要求如下:
(1)自占一行,執行語句不得緊跟其後。不論執行語句有多少都要加“{ }”。
這樣做的目的是便於閱讀,同時也有利於代碼的維護。
假設定義了兩個整型變量iIntVal1和iIntVal2,如果iIntVal1的值小於iIntVa2,那麽就將iIntVal2的值賦給iIntVal1,則正反示例為:
反例:
if (iIntVal1 < iIntVal2) iIntVal1 = iIntVal2;
這樣寫出來的程序可讀性很差,不利於對流程的跟蹤及對版本的維護。
正例:
if (iIntVal1 < iIntVal2)
{
iIntVal1 = iIntVal2;
}
該代碼和反例中的代碼相比,簡潔清晰,讓人一目了然。
(2)程序的分界符“{”和“}”應獨占一行並且位於同一列,同時與引用它們的語句左對齊。“{ }”之內的代碼塊使用縮進規則對齊(一般縮進4個空格)。如上面(1)所示。
四、用在switch語句中
switch語句也經常出現在產品代碼中,要想寫出邏輯清晰、可閱讀性強的switch語句,需要遵循以下規則:
(1)一定要加上default分支,即使case分支已經將全部情況都包括了。
這樣做是為了防止其它代碼閱讀者誤以為漏寫了default分支,也可表現出開發人員的思維的全面性。
(2)一個case分支和default分支要用“{ }”括起來,“{ }”中的內容需要縮進(一般縮進4個空格)。
這樣做可使程序邏輯清晰,可讀性更好。
假設定義了一個整型變量iSwitchFlag,可取值1、2、3,用switch語句對每種可取值的情況分別進行處理,則示例為:
正例:
switch (iSwitchFlag)
{
case 1:
{
DoSomething1(); //縮進4個空格
break;
}
case 2:
{
DoSomething2(); //縮進4個空格
break;
}
case 3:
{
DoSomething3(); //縮進4個空格
break;
}
default: //一定要有default分支
{
DoNothing();
break;
}
}
3) break語句要寫到 “case”或者“default”的“{}”裏面,這樣可以體現出程序塊的整體性,便於閱讀。
五、用在函數中
眾所周知,一個函數中的所有語句是包括在“{}”之中的。除此之外,“{}”在函數之中還有其它用武之地。
(1)分隔功能關聯不大的語句塊
在某些函數中,可能包含了很多功能,但這些功能之間的關聯性很小,可以當作獨立的代碼來對待。這時,可以用“{}”將這些不同功能的代碼塊區分開來,增強代碼的可讀性,也便於對函數的維護和修改。
假設有一個函數ExampleFun,包含了三個較為獨立的功能A、B和C,則可以如下組織該函數的代碼。
void ExampleFun(void)
{
//功能A代碼塊開始
{
//功能A的實現代碼
}
//功能A代碼塊結束
//功能B代碼塊開始
{
//功能B的實現代碼
}
//功能B代碼塊結束
//功能C代碼塊開始
{
//功能C的實現代碼
}
//功能C代碼塊結束
}
這樣的代碼具有自說明性,便於閱讀和維護,提高了工作效率。
(2)突出添加或修改的代碼
在代碼行數較多的函數中,如果要添加或修改的代碼量很少,即與原本已有的代碼比起來,顯得“很渺小”。這時,可以用“{}”將添加或修改的代碼括起來,以突出代碼的改動,方便閱讀及對代碼進行走查等。
同樣以函數ExampleFun為例來說明,如下所示:
void ExampleFun(void)
{
……
……
……
//修改或添加代碼塊開始
{
//修改或添加的代碼
}
//修改或添加代碼塊結束
……
……
……
}
【閱讀筆記】《C程序員 從校園到職場》第三章 程序的樣式(大括號)