C++博客 :: 首页 :: 联系 :: 聚合  :: 管理
  117 Posts :: 2 Stories :: 61 Comments :: 0 Trackbacks

常用链接

留言簿(8)

搜索

  •  

最新评论

阅读排行榜

评论排行榜

1、 程序排版的技巧

   ·巧妙使用空行 

      空行得体,可以使程序的布局更加清晰。在类的声明之后,在每个函数的声明之后,一般都要加空行。在函数体内,逻辑关系密切的语句之间不要加空行分开。

   ·代码行的书写规范

      每行代码行只完成一件事情,比如声明一个变量,完成一个运算。在关键字后面加空格,以突出关键字。

   ·缩进对齐

      缩进是一种良好的代码风格,缩进得当能够很清晰地体现结构化程序的逻辑关系。一般在{}内的内容,for、while循环的内容,if语句的内容,要缩进一个Tab位。对于VC可视化编程环境,可选定要排版的内容,然后同时按下【Alt+F8】组合键,代码自动按照标砖格式重新排列。

   ·长行拆分

      代码的长度不宜过长,要不然程序读起来比较吃力,一般一行控制在70~80个字符即可。

2、添加注释的技巧

   C++语言的注释符为“/*……*/”,行注释一般采用“//……”,注释通常用于:

   ·版本、版权声明

   ·函数接口说明

   ·重要代码行或段落提示

   添加注释注意的事项:

   ·注释量要达到代码量的40%。

   ·注释的位置应与被描述的代码相邻,可以放在代码的上方或右方,不可放在下方。

   ·在每个函数定义前加一个恰当的函数说明(函数头),描述该函数的功能、参数、返回值、注意事项和修改记录等。

   ·边写代码边注释,修改代码同时修改相应的注释,以保证注释与代码的一致性,不在有用的注释要删除。

   ·尽量避免在注释中使用缩写,特别是不常用的缩写。

   ·当代码比较长,特别是有多重嵌套时,应当在一些段落的结束加注释,便于阅读。
    eg.函数接口的说明

/**//*
*函数功能介绍
*输入参数意义介绍
*输出参数意义介绍
*返回值功能说明
*函数最近修改时间
*函数创建人或者最近修改人姓名
*原始与修改后的代码
*/

void Function(float x,  float y,  float z){
    DoSomething();
}

  3、 标识符命名的技巧

   变量的名字一般包含变量的生命周期、变量的数据类型、变量的作用等,变量时全局变量还是局部变量,是整型变量还是字符型变量。函数的命名通常利用“动词+名词”的方式命名,其中每个词的首字符大写,这一组合能够表明该函数的作用。类命名一般采用单个词组来命名,表明某个对象的抽象,首字符一般大写。

   ·望文生义

      标识符的命名由英文单词组合而成,程序员读者从标识名字中判断该标识的含义。通常全局变量以g_为前缀,成员变量以m_为前缀,静态变量以s_为前缀,指针类型以p为前缀等。

   ·清晰明了

      长的标识符带有更多的信息量,能够更好表达其含义。但是标识符命名并非越长越好。长了反而显得繁琐。

   ·避免歧义

      标识符的歧义通常让阅读程序的人产生误解,应该尽量避免。避免使用仅靠大小写区分的标识符。不要出现不同作用域、相同名字的标识符,虽然在编译和执行的时候不会出现错误,但是大大降低了程序的可读性。

4、 复合表达式的书写技巧

复合表达式是由变量、常量、函数调用和运算符组成。

C++里面运算符的优先级和结合型,运算符从上之下按优先级降低的顺序排列。

运算符

结合性

()、[]、—>、.

从左至右

++、--、-(负)、+(正)、!、~、(类型)、*(指针)、&、sizeof

从右至左

*(乘以)、/、%

从左至右

+、-

从左至右

<<、>>

从左至右

<、<=、>、>=

从左至右

==、!=

从左至右

&

从左至右

^

从左至右

|

从左至右

&&

从左至右

||

从左至右

?:

从右至左

=、+=、-=、*=、/=、%=、&=、^=、|=、<<=、>>=

从右至左

,

从左至右

复合表达式的书写技巧

复合表达式书写简洁,可以提高编译效率,其书写一般遵守的规则如下:

   ·不要编写太复杂的复合表达式

   ·不要有多用途的复合表达式

   ·不要把程序中的复合表达式与“数学表达式”混淆

另外,复合表达式有一个特性,如果表达式的值确定为真,那么表达式的计算就会停止。这意味着表达式中有部分很可能没有参加运算。

5、 if语句的书写技巧

    (1)if语句检验条件通常将常量放在条件表达式的左侧

#include<iostream.h>
//主函数
int main(){
    
char* pchName=new char[20];
    
if(Null==p)//注意,其检验条件放在左侧{
        cout<<”Memory Allcated Failed”<<endl;
        exit(
0);
    }

}

         这样写的原因是为了防止将if(p==NULL)写成if(p=NULL),编译器认为if(p=NULL)是合法的,而if(NULL=p)编译器则认为是非法的。

   (2)与零值的比较

      ·布尔变量与零值的比较

      布尔变量是有两种逻辑状态的变量,它包含两个值:真和假。如果在算术表达式中使用布尔变量,那么将根据布尔变量值的真假而赋予整型值1或0。要把一个整型变量转换成布尔型变量,如果整数值为0,则其布尔值为假;反之,如果整型值非0,则其布尔类型为真。

      它与零值比较的标准语句如下

if(flag)   //表示flag为真
if(!flag)  //表示flag为假

      ·整型变量和零值的比较

      用“==”和“!=”直接与0进行比较,与零值比较的标准if语句如下:

int value=0;
………………
if(value==0)
if(value!=0)
………………

     不可模仿布尔变量的风格而写成:

if(value)  //会让人误解value是布尔变量
if(!value)

      ·浮点变量与零值的比较

      不可用“==”和“!=”与任何数字比较,无论是float,还是double类型的变量,都有精度限制。所以一定要避免将浮点变量用“==”或“!=”与数字比较,应该设法转化成“>=”或“<=”形式。标准语句如下:

if( (x>=-EPSINON) && (x<=EPSINON) ) //其中EPSINON为所允许的误差精度。

      ·指针变量与零值比较

      应当将指针变量用“==”或“!=”与NULL比较。指针变量的零值是“空”(记为NULL),尽管NULL的值与0相同,但是两者意义不同。假设指针变量的名字为p,它与零值比较的标准if语句如下:

if(NULL == p)//p与NULL显式比较,强调p是指针变量
if(NULL != p)

     不要写成:

if(p==0)    //会让人误解p是整型变量
if(p!=0)

     或者

if(p)    //会让人误解p是布尔变量
if(!p)

6、 提高循环体效率的技巧

(1)在多重循环中,应当将最长的循环放在最内层,最短的循环放在最外层,以减少CPU跨循环层执行的次数。

//长循环在外层的代码参考如下,这样方式由于CPU跨循环层的次数增加,效率低下:
for(row=0;row<100;row++){
    
for(col=0;col<5;col++){
        sum
=sum+a[row][col]
    }

}

//长循环在内层的代码参考如下,这样方式减少了CPU跨循环层的次数,效率提高了:
for(col=0;col<5;col++){
    
for(row=0;row<100;row++){
        sum
=sum+a[row][col]
    }

}

(2)如果在循环体内,存在逻辑判断,并且循环次数很大,应将逻辑判断移到循环体的外面。参考代码如下:

//下面的代码效率低,但是程序比较简洁,可读性比较好
for(i=0;i<N;i++){
    
if(condition){
        DoSomething();     
    }

    
else{
        DoSomething();
    }

}

//下面的代码效率高,但是程序不简洁,可读性不好
if(condition){
    
for(i=0;i<N;i++){
        DoSomething();
    }
     
}

else{
    
for(i=0;i<N;i++){
        DoSomething();
    }

}

(3)不可再for循环体内修改循环变量,防止for循环失去控制。
(4)中断嵌套循环的技巧(积累中)

7、 break和continue的说明

      break语句终止当前循环,继续执行后面的代码。注意,这个break语句和swtich……case分支结构中的break不同(为什么不同)。一个break只能终止一层循环。

      continue语句终止了当前循环,使程序返回到循环的头部继续执行,而不是跳出循环。


如果还想获得更多关于《Visual C++代码参考与技巧大全》的内容,可点击下面网址,

http://www.cppblog.com/kangnixi/archive/2010/01/13/105591.html
posted on 2010-01-15 23:16 烟皑 阅读(539) 评论(0)  编辑 收藏 引用 所属分类: 《Visual C++代码参考与技巧大全》学习笔记

只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理