C++/C语言深度剖析(2)

前面一节讲了一下源程序代码规范,实际上代码规范有很多,很多东西说实话,总结的人非常辛苦,使用的人觉得没什么意思。这一点怎么说呢?每个人的习惯不一样,要想完全统一还真有点难。但是如果不统一呢,说实话,做CODE Review的人也非常累。我总结了一下,就是规则是死的,不必强求,但是适合自己的和让自己的舒服的一定要记得坚持。下面几点,我觉得需要坚持。

【1】代码要有一定的格式化,格式化规则很多,比喻说,逻辑紧密的语句之间不用空行隔开,但是语义上完全没有联系的最好用空行隔开一下,这个特别适合于一些块,但不是每个地方都这样干,都这样干的话,会造成文件代码太长。另外要注意一点就是关键字和运算符两边最好用空格隔开显得漂亮。最后就是{}问题,这个在程序中坚持一种风格,一种风格是另起首行{,另一种是紧随之后{,后一种风格在JAVA中常见,前一种在C/C++中常见。如下图所示:

image

这里还要加上一条就是代码缩进和长行拆分,这两条都要从代码漂亮角度进行考虑。代码缩进是非常重要,缩进的规则就是联系紧密的在一起,长行拆分也是这样的。

image

其它像注释啊,注释在JAVA中非常重要,但不是说在C/C++中不重要,也是非常重要的。因此注释是需要认真对待一下。那么怎么写好注释呢?有时候我们都知道开发时根本没时间一个一个写注释,但是一些复杂的算法,复杂的实现最好还是要通过注释进行标明。注释有多种,有在文件或者函数前注释,也针对一些特别定义的变量进行注释的。因此,我们要明白注释的初衷是为了让代码更容易理解。所以注释一定适度不能滥。否则就变成文章了。最后还要提到的一个就是变量修饰符混淆,比喻 int *x,y;这里一定要注意,它声明是两种类型的变量,int *x, int y;所以这种一定要分行写。不要写在一行。还有一种比较奇怪的推荐就是C++与JAVA不一样,C++一般建议先在类中声明成员函数,然后再声明成员变量。而JAVA则完全相反。这里其实也没有逻辑可言,只是一种约定俗成。

image

【2】取名一定要适当,我们可以想像金庸小说,没有那么多动听的名字,你可能也很难读下去那么多文字。同样也说,如果一份代码中变量命名命得乱七八糟,那也是让人头痛的。这里我只是提一下,但不作推荐,因为比喻说开发MFC有MFC的命名习惯,开发JAVA有JAVA的习惯,并且不同的习惯之间差异非常大,而且还是相互抵触的。通常有些简单的约定俗成的习惯还是了解一下,比喻说变量名通常是名词和形容词性名词。函数是动词性名词。对WINDOWS来说,以m_表示数据成员,g_表示全局,常量大写。变量参数小写,有些以数据类型作为首字符。类名和函数名大写开头,这个跟JAVA不一样,反的。这些等等经历过了,有经验了,大家就不会反对这些写法,也不是说这些写法优点就一定多。只是一种大家都尊重的习惯。

【3】语法使用简单明确,切忌莫凌两可,能用括号隔开的就尽量用括号和{}号。虽然每种语言都定义了一些确定的运算符级别,但不是每个人都能记得牢,实际上,我们在使用时,最好还是不要太相信机器会自动判断优先级。因此,括号是必要的。如 if ((a|b) && (a & c))。其它有此比较绕的写法虽然能体现你的功力,但在工作中还是不要用的好。要照顾别人,因为你的程序不是你程序是公司的程序。

image

【4】比较不可不顾类型,比喻说布尔型不要与TRUE比较,常量不要直接当布尔型使用。精度缺陷会导致浮点型数据无法直接比较,指针应该同NULL比较而不是0比较。

image

image

image

image

【5】循环和递归效率与简洁兼顾,特别是循环多重时,要将循环次数较小的放在最外层,如果每次都要进行重复比较,最好将比较放在循环之外。递归在一定程序上比较以改写,使用是可以的,但是一定要注意跳出条件。同里循环也是,避免在循环过程中改变循环判断条件。还有SWITCH语句的缺省default : break一定要加上。

image

以上这几条,相信写过一定程序代码量的人都会注意到。所以这里也不多举例。写这些,并不表明它一定要遵守才是好的程序员。所有的一切其实都是一种习惯。可以说是好习惯。

你可能感兴趣的:(C语言,休闲,源程序,最好,统一)