您的位置:首页 > 编程语言 > C语言/C++

让你提前认识软件开发(9):C语言中的大括号

2014-04-02 20:09 447 查看
第1部分 重新认识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)
{
    ……
    ……
    ……
    ……
    ……
    //修改或添加代码块开始
    {
         //修改或添加的代码
    }
   //修改或添加代码块结束
   ……
   ……
    ……
   ……
    ……
}
        这样,很容易发现代码的改动,阅读或维护起来也比较的容易。
 
       总的说来,善于在代码中运用“{}”,可以提高代码的规范性,进而提高代码质量及工作的效率。
 
        代码的规范性是一个永恒的话题,广大的软件开发工程师在提高自己编程水平的同时,也要注重编程规范,让自己的代码更易于阅读和维护。
 
 
(欢迎访问南邮BBS:http://bbs.njupt.edu.cn/)
(欢迎访问重邮BBS:http://bbs.cqupt.edu.cn/nForum/index)
(本系列文章每周更新两篇,敬请期待!本人新浪微博:http://weibo.com/zhouzxi?topnav=1&wvr=5,微信号:245924426,欢迎关注!)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: