我也没在大公司接受过正规的编码风格的培训,以下是我的一些小结,欢迎批评指正和补充。
一、局部变量的定义&初始化:
首先定义一个局部变量最好要初始化,如果不在定义的时候初始化,一般会存在到了使用的时候未初始化的风险。
我最开始一般这么写 int a = 0 ;
现在我推荐这么写 int a(0);
这么写的好处是,第一种写法在C++里面是分两步的,第一步以默认值构造一个int,第二步将0赋值给a;第二种写法则是构造初始值为0的一个整形,效率上有提高;这个是在书上看来的,因为我不懂汇编,所以没有去检验过,如果有懂得朋友验证过之后希望指正,谢谢。
二、判等语句
这个在很多书上也有写过,不过我之前因为没有这么做,确实吃过好多亏,也就是判等语句以前我写成
if( a == SOME_DEFINE)//SOME_DEFINE为某个定义好的宏
现在我建议写成
if( SOME_DEFINE == a )
这么写的好处是为了避免因为笔误写成 if( a = SOME_DEFINE),当年我吃这个亏真的受尽了苦头怎么都找不出错误,而如果按建议的写法如果笔误写成 if( a == SOME_DEFINE),编译器会帮您指出错误的。
三、神仙数
一般在代码中,循环退出条件或者判等条件如果出现数字,叫做神仙数比如
for( int i(0) ; i < 5 ; ++i )
这个5会让别的读代码的人甚至自己过很长时间之后再读的时候摸不着头脑,称为神仙数,而且一个程序里会有很多地方出现,一旦需要修改这个边界,那修改量的痛苦就不用形容了吧,推荐做法是定义宏,不过好像C++里比较偏向用const常量,两者区别我没什么体会,希望懂的读者赐教。
四、自增自减操作
C++中推荐用前自增和前自减(++a,--a)。因为后自增和后自减(a++,a--)需要一个当前值得副本用于当前使用然后在增减,这个对于C语言和C++基本类型(int、char)差别不大,但是C++中很多迭代器(如vector<int>::iterator pos)对于这样的类型,这样的操作就是比较耗费资源的了,为了代码风格的统一,除非不得以,所有类型全都用前自增和前自减操作比较好。
五、空格的使用
空格的位置和多少其实完全不影响编译结果,但是对阅读是有影响的。比如这么写的
if( a == b | c > d )与这么写: if( a==b | c>d )其实结果是一样的,但是我觉得第二种写法会让读代码的人一眼就看出来你想先进行什么后进行什么,如果你代码的优先级用错了,读代码的人就知道你想干什么,再判断代码编译出来是什么意思,就可以比较容易查出你的错误了
目前差不多能想到的就这么多,欢迎大家批评指正和补充
本文分享了作者在C++编程实践中总结的一些经验教训,包括局部变量的定义与初始化、判等语句的正确写法、避免使用神秘数值、自增自减操作符的选择以及合理运用空白字符来提高代码可读性。
1929

被折叠的 条评论
为什么被折叠?



