1. 程式人生 > >【閱讀筆記】《C程序員 從校園到職場》第三章 程序的樣式(大括號)

【閱讀筆記】《C程序員 從校園到職場》第三章 程序的樣式(大括號)

突出 char s 結構體 需要 初始化 detail 處理 思維 https

參考: 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程序員 從校園到職場》第三章 程序的樣式(大括號)