achinese 发表于 2008-7-18 21:28

C语言编写风格



当开发人员把C语言程序写的越来越长的时候,他们发现维护这些程序需要花更多的功夫去读以前所编写的程序。保持一种良好的编码风格,对于一个开发团队或者自主开发者都是一件好事情。在这里要介绍的编程风格就是为了让初学者了解C语言的一些编写风格,使自己编写的程序,可读性,移植性,可维护性等更好,这是学习C语言必须学习的一种技能。这就象我们写文章一样,段落缩进两个文字这样的风格.



1、缩进



  对于函数,选择,循环控制,在进入下级的程序段时,为了使结构清晰,一般将下级的程序段向后缩进一段位置。缩进的大小是为了清楚的定义一个块的开始和结束,特别是当你已经编写了很长的代码时,你会发现一个大的缩进格式使得你对程序的理解更容易,因为程序更有层次感,可以最快的找到需要查看的程序块。

  建议使用一个TAB位置(8个字节)进行缩进,有些代码编辑工具显示一个TAB位置为4个字节,这些都能使程序更清晰。现在,有一些人说,使用8个字符的缩进使得代码离右边很近,在80个字符宽度的终端屏幕上看程序很难受。回答是,但你的程序有3个以上的缩进的时候,你就应该修改你的程序。总之,8个字符的缩进使得程序易读,还有一个附加的好处,就是它能在你将程序变得嵌套层数太多的时候给你警告。这个时候,你应该修改你的程序,太多的嵌套对于程序执行的效率和易读性都是致命的杀手,可以考虑使用函数或者改变程序结构。

  intfother()

  {

      程序块

      if(...)

      {

          程序块

      }

      else

      {

          程序块

      }



      for(...)

      {

          程序块

      }

  }



2、大括号的位置



  一般情况下,有下列几种书写方式:

  (1)

  if(x>y)

  {

      t=x;
x=y;
y=t;

  }

  (2)Kernighan和Ritchie的经典方式

  if(x>y){

      t=x;
x=y;
y=t;

  }

  (3)

  if(x>y)
{
t=x;
x=y;
y=t;
}

  推荐使用(1)方式,很明显,这种方式能更清楚的看到程序块的开始和结束的位置。但对于很简单的程序块,也可以使用(3)方式。



3、命名系统



  除了常用的规则,如#define常量应全部大写,变量命名的基本规则等之外,还要养成一个良好的命名的习惯。不要使用汉语拼音命名,尽量使用英文单词,常用的缩写,下划线,数字等,这样更容易理解变量的意义。但是也要避免过长的变量名和函数名。

  当一个工程越做越大,命名可以越来越难,因为重名现象会时有发生。现在比较流行的命名规则如匈牙利命名法很好的解决了这个问题。匈牙利命名法通过在变量名前面加上相应的小写字母的符号标识作为前缀,标识出变量的作用域,类型等。这些符号可以多个同时使用,顺序是先m_(成员变量),再指针,再简单数据类型,再其他。例如:m_lpszStr,表示指向一个以0字符结尾的字符串的长指针成员变量。

  可能有些开发人员认为匈牙利命名法有些冗长,但对于开发过程中,这种命名法则可以比较系统的,彻底的解决命名问题。但对于比较小的程序,也可以使用简单的命名方式。



4、函数

  函数应该短小而迷人,而且它只作一件事情。它应只覆盖一到两个屏幕,并且只作一件事情,而且将它做好。

  一个函数的最大长度和函数的复杂程度以及缩进大小成反比。于是,如果你已经写了简单但长度较长的的函数,而且你已经对不同的情况做了很多很小的事情,写一个更长一点的函数也是无所谓的。

  然而,假如你要写一个很复杂的函数,而且你已经估计到假如一般人读这个函数,他可能都不知道这个函数在说些什么,这个时候,使用具有描述性名字的有帮助的函数。

  另外一个需要考虑的是局部变量的数量。他们不应该超过5-10个,否则你有可能会出错。重新考虑这个函数,将他们分割成更小的函数。人的大脑通常可以很容易的记住7件不同的事情,超过这个数量会引起混乱。你知道你很聪明,但是你可能仍想去明白2周以前的做的事情。



5、注释



  注释一般采取的两种方式:对一个程序块注释和对一行程序注释。

  /*比较x,y大小*/

  if(x>y)

  {

      t=x;
x=y;
y=t;/*交换x,y*/

  }

  注释是一件很好的事情,但是过多的注释也是危险的,不要试图区解释你的代码是注释如何如何的好。你应该将代码写得更好,而不是花费大量的时间去解释那些糟糕的代码。

  通常情况下,你的注释是说明你的代码做些什么,而不是怎么做的。而且,要试图避免将注释插在一个函数体里。假如这个函数确实很复杂,你需要在其中有部分的注释,最好还是把复杂的函数拆分成几个简单的函数。也可以将注释写在函数前,告诉别人它做些什么事情,和可能为什么要这样做。



6、空格与空行



  不要让自己的程序过于拥挤,这样同样影响可读性,善于使用空格区分一句程序中的变量,符号,表达式等,使他们对照整齐或者更清晰。善于使用空行区分程序块。

  例如:

  name="young";

  age=21;

  college="ZIT";

  例如:

  if((x>100)||(x<0))



结束语



  对于这些约定俗成的风格,不一定非要严格的去使用,你也可以有自己独特的风格。但是在团队开发时,一定要统一例如命名系统等主要的风格,这样团队成员协同工作能达到一个最好的效率。记住一点,我们的目的应该是写出可读性,移植性,可维护性等更好的程序。

1-jun 发表于 2008-7-18 21:31

完全看不明白啊!!
我数学函数最差了.!!

3389 发表于 2008-7-19 00:17

现在看不懂.还要学习一阵,还有基础的吗

qq513701092 发表于 2008-7-19 15:48

daibangzhe 发表于 2008-7-19 17:07

貌似不错,不过我一直想找vc的网上下载- -还不知道怎么下载呢

s07110016 发表于 2008-7-24 14:19

有用啊 ,规范良好的写代码的习惯

莱沙 发表于 2008-7-24 15:59

良好的编写代码习惯是必要的!不错顶了!

yuxinfei 发表于 2011-3-27 15:46

这是学习C语言必须学习的一种技能
页: [1]
查看完整版本: C语言编写风格