程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 提前認識軟件開發(9) C語言中的大括號

提前認識軟件開發(9) C語言中的大括號

編輯:關於C語言

在C語言中,大括號“{}”是一類比較特殊的符號。如果能夠在適當的地方利用它,可使代碼看起來非常的整潔,也能夠從側面體現出一個編程人員的專業修養。

那麼,在C語言中,大括號應該用在哪些地方呢?

1.初始化數組變量

在實際的軟件開發項目中,變量在使用前應初始化,防止未經初始化的變量被引用。

對於數組變量來說,恰當的初始化樣例如下:

char szString[100] = {0};

定義了一個名為szString的包含100個字節的數組變量,並將該數組中每個變量的初始值賦為0。

2. 定義和初始化結構體變量

結構體變量的定義方法的樣例如下:

typedef struct

{

   ……

}T_Struct;

該結構體變量的初始化樣例如下:

T_Struct tStruct = {0};

很多開發人員都不注重對結構體變量進行初始化,這是不對的。要牢記的是,任何變量在使用前,都應進行初始化。

3. 用在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個空格)。

同樣以兩個整型變量iIntVal1和iIntVal2的比較來說明,正例如上面(1)所示。

反例:

if (iIntVal1 < iIntVal2)

   {

iIntVal1 = iIntVal2;

}

該代碼看起來給人一種很凌亂的感覺,不便於閱讀和維護。

4. 用在switch語句中

switch語句也經常出現在產品代碼中,要想寫出邏輯清晰、可閱讀性強的switch語句,需要遵循以下規則:

(1)一定要加上default分支,即使case分支已經將全部情況都包括了。

這樣做是為了防止其它代碼閱讀者誤以為漏寫了default分支,也可表現出開發人員的思維的全面性。

(2)一個case分支和default分支要用“{ }”括起來,“{ }”中的內容需要縮進(一般縮進4個空格)。

這樣做可使程序邏輯清晰,可讀性更好。

假設定義了一個整型變量iSwitchFlag,可取值1、2、3,用switch語句對每種可取值的情況分別進行處理,則正反示例為:

反例:

switch (iSwitchFlag)
    
{                   //“{”沒有和switch對齊
    
case 1:              //“case”沒有縮進
    
{                  //“{”沒有和case對齊
    
           DoSomething1();   //縮進空格數太多
    
break;
    
}               //“}”沒有和本case語句的“{”對齊
    
     
    
    case 2:
    
    {                                        
    
     DoSomething2(); 
    
              break;
    
    }
    
     
    
    case 3:
    
       DoSomething3();  //沒有用“{}”將語句括起來,且case執行結束後無break;
    
     
    
  //缺少了default分支
    
}

以上反例中的switch語句可讀性很差,不利於代碼的維護。

正例:

switch (iSwitchFlag)
    
{
    
    case 1:
    
    {
    
        DoSomething1();    //縮進4個空格
    
       break;
    
    }
    
     
    
    case 2:
    
    {                                        
    
        DoSomething2();  //縮進4個空格
    
        break;
    
    }
    
     
    
    case 3:
    
    {                                        
    
        DoSomething3();  //縮進4個空格
    
        break;
    
    }
    
     
    
    default:             //一定要有default分支
    
    {
    
        DoNothing();
    
        break;
    
     }
    
}

正例中的代碼邏輯清晰,有利於代碼的修改和維護。

(3) break語句要寫到“{}”的裡面,這樣可以體現出程序塊的整體性,便於閱讀。

如下的代碼是不規范的:

switch (iSwitchFlag)
    
{
    
case 1:
    
{
    
        DoSomething1();
    
}
    
break;        // break語句放到了“{}”外面,不規范
    
     
    
    case 2:
    
    {                                        
    
        DoSomething2(); 
    
    }
    
    break;
    
     
    
    case 3:
    
    {                                        
    
        DoSomething3();
    
    }
    
    break;
    
     
    
    default:           
    
    {
    
        DoNothing();
    
    }
    
   break;
    
}

5. 用在函數中

眾所周知,一個函數中的所有語句是包括在“{}”之中的。除此之外,“{}”在函數之中還有其它用武之地。

(1)分隔功能關聯不大的語句塊

在某些函數中,可能包含了很多功能,但這些功能之間的關聯性很小,可以當作獨立的代碼來對待。這時,可以用“{}”將這些不同功能的代碼塊區分開來,增強代碼的可讀性,也便於對函數的維護和修改。

假設有一個函數ExampleFun,包含了三個較為獨立的功能A、B和C,則可以如下組織該函數的代碼。

void ExampleFun(void)
    
{
    
    //功能A代碼塊開始
    
    {
    
          //功能A的實現代碼
    
    }
    
   //功能A代碼塊結束
    
     
    
     //功能B代碼塊開始
    
    {
    
          //功能B的實現代碼
    
    }
    
    //功能B代碼塊結束
    
     
    
    //功能C代碼塊開始
    
    {
    
       //功能C的實現代碼
    
    }
    
       //功能C代碼塊結束
    
}

這樣的代碼具有自說明性,便於閱讀和維護,提高了工作效率。

(2)突出添加或修改的代碼

在代碼行數較多的函數中,如果要添加或修改的代碼量很少,即與原本已有的代碼比起來,顯得“很渺小”。這時,可以用“{}”將添加或修改的代碼括起來,以突出代碼的改動,方便閱讀及對代碼進行走查等。

同樣以函數ExampleFun為例來說明,如下所示:

void ExampleFun(void)
    
{
    
    ……
    
    ……
    
    ……
    
    ……
    
    ……
    
    //修改或添加代碼塊開始
    
    {
    
         //修改或添加的代碼
    
    }
    
   //修改或添加代碼塊結束
    
   ……
    
   ……
    
    ……
    
   ……
    
    ……
    
}

這樣,很容易發現代碼的改動,閱讀或維護起來也比較的容易。

總的說來,善於在代碼中運用“{}”,可以提高代碼的規范性,進而提高代碼質量及工作的效率。

代碼的規范性是一個永恆的話題,廣大的軟件開發工程師在提高自己編程水平的同時,也要注重編程規范,讓自己的代碼更易於閱讀和維護。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved