Windows 程序调试___编写便于调试的C++代码(Chapter 2)

      今天读了<<Windows 程序调试>>编写便于调试的C++代码这一章内容,觉得收获较大,对本人在编程风格和编程习惯上有指导意义.笔记如下:

 

一.设计:

     重要的特性是简单性耦合性, 大多数常见的设计错误来源于程序设计不必要的复杂成分,因此尽量使程序简单合理.耦合性用来衡量不同对象之间的依赖程度,因此程序中能独立的对象要尽量独立出来.

 

二.C++编程风格

1.清晰地书写代码,最直接的说出你的意思;

2.结构良好的代码具有更加有用的调用栈(call stack),它能给你更多的信息;

3.使用良好的标识名字;

4.重新考虑匈牙利命名法,尽管这种命名法过去很有用,随着时代改变,匈牙利命名法书写的程序难以阅读,难以维护,容易被人误解;(疑问:现在大部分程序员都还是用这种命名法,有没有更好更合理的方法呢?书中也没有介绍,可能关键还是个人习惯问题吧)

5.用简单的语句行;

6.使用统一的排列,用空格键代替tab键;

7.用括号使书写更清晰,如果你不能确定是否需要用括号,你就需要用括号.这样可使优先级的问题一目了然;

8.为了将来的维护,书写注释.

 

三.C++语言

1.选择C++语言而不是C预处理,但是要理解调试代码的时候需要使用预处理器;

2.要在头文件中声明所有共享的外部符号,而且保留函数原型中的参数名;

3.记得在构造函数里面初始化数据成员,

4.对于不熟悉的位掩码要检查位掩码值,必要的时候,使用掩码宏或者子域掩码;

5.布尔表达式应当检查是否为假而不是检查是否为真;

     如:if(boolleanValue == TRUE)....;是不合理的,应当改写为if (boolleanValue != FALSE)....;或if (boolleanValue )....;

6.应当防止使用整型,字符型和浮点变量出现减一错误,除零,溢出错误.

7.在使用指针和句柄时,当回收指针所指的对象的时候要重新初始化这个指针,并且要在指针被释放之前为空时就对其进行处理;

8.不要匆忙使用强制类型转换,因强制类型转换会在维护时引发问题,如果你在Visual C++中使用dynamic_cast,记住要在Project设置里面选择Enable Run_time Type Information选项;

9.在程序中仔细地使用const是一种好方法,能帮助编译器在编译时发现错误,但引入const时如果不是一开始就用的话,添加起来就会很麻烦.使用const 是一个不动则已,一动就动全身的问题;

10.如果循环变量的增加操作在每次循环的时候都必须执行的话,那么就使用for语句而不是while语句;

 

四.Visual C++编译器

1.尽量采用编译时刻检查而不是运行时刻检查,使用W4警告级别是个好办法;

2.在调试版本里总是使用GZ编译选项;

3."没有警告的编译"法则对于大的程序开发小组来说很有帮助,但是前提是允许出现异常,最终目标是消除错误,而不是消除警告.

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值