提前认识软件开拓(9) C语言中的大括号
副标题#e#
在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分支,也可表示出开拓人员的思维的全面性。
#p#副标题#e#
(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)脱离成果关联不大的语句块
#p#分页标题#e#
在某些函数中,大概包括了许多成果,但这些成果之间的关联性很小,可以看成独立的代码来看待。这时,可以用“{}”将这些差异成果的代码块区分隔来,加强代码的可读性,也便于对函数的维护和修改。
假设有一个函数ExampleFun,包括了三个较为独立的成果A、B和C,则可以如下组织该函数的代码。
void ExampleFun(void) { //成果A代码块开始 { //成果A的实现代码 } //成果A代码块竣事 //成果B代码块开始 { //成果B的实现代码 } //成果B代码块竣事 //成果C代码块开始 { //成果C的实现代码 } //成果C代码块竣事 }
这样的代码具有自说明性,便于阅读和维护,提高了事情效率。
(2)突出添加或修改的代码
在代码行数较多的函数中,假如要添加或修改的代码量很少,即与原本已有的代码比起来,显得“很眇小”。这时,可以用“{}”将添加或修改的代码括起来,以突出代码的窜改,利便阅读及对代码举办走查等。
同样以函数ExampleFun为例来说明,如下所示:
void ExampleFun(void) { …… …… …… …… …… //修改或添加代码块开始 { //修改或添加的代码 } //修改或添加代码块竣事 …… …… …… …… …… }
这样,很容易发明代码的窜改,阅读或维护起来也较量的容易。
总的说来,善于在代码中运用“{}”,可以提高代码的类型性,进而提高代码质量及事情的效率。
代码的类型性是一个永恒的话题,宽大的软件开拓工程师在提高本身编程程度的同时,也要注重编程类型,让本身的代码更易于阅读和维护。
From:csdn博客 周兆熊