高质量程序设计指南-c/c++语言:笔记2

*. 线程函数并不使用普通的函数堆栈,而是使用线程自己的堆栈。线程堆栈是线程在每次启动时动态分配的,这样就可以在线程函数每次执行时使用不同的堆栈,从而避免线程函数执行流重叠时可能出现的堆栈破坏。如果一个函数可能会被多个线程调用的话,对于它们共享的数据要进行同步访问保护,并且避免使用static局部变量。

*. float GetValue ( void ) ;  良好风格     float GetValue ( ); 不良好的风格   int abc( int width,int height) ;好风格  int abc( int , int ) 不良好的风格

*.  const & . 效率且不可变。  你都快忘记了,c++中我们应该尽量使用 & . 

 *******************

*.不要将正常值和错误标志混在一起返回,建议正常值用输出参数获得,而错误标志用return 语句返回。错误一般定义为负数。

*. 根据经验,要提高函数的质量,我们可以在函数体的“入口处“ 和“出口处“从严把关,从而提高函数质量。

入口处:对参数进行有效性的检查。全局变量,文件句柄等都是有必要的检查。

出口处:对返回值和错误处理要清楚。 尽量避免使用带有记忆功能的函数,比如:全局变量,static变量,等等。

 *******************

使用断言:assert ( expression ) ;

1. 断言失败,表示程序存在一个bug, assert ( expression ) ; assert() 只在bug版里面有。因为程序分为debug 和 release版本,assert被宏定义#ifdef+DEBUG #endif包含。so .

assert处终止,有错误。调用函数出了差错。他可以帮助我们追踪到错误。****

2. 程序员可以把assert看成一个在任何系统状态下都可以安全使用的无害测试手段,

3.建议:在入口处,建议使用断言来检查参数的有效性。  assert( (pvTo != NULL ) & (pvFrom != NULL) );

***使用断言的目的:是捕捉在运行时不应该发生的非法情况。不要混淆非法情况与错误情况之间的区别,后者是程序运行过程中自然存在的并且是一定要主动做出处理的。 

比如:malloc申请失败,属于错误情况,应该使用if,而不是非法情况,不应该使用assert...  非法:即不可能发生的事情发生了,就要报警。

************* use const whenever you need .. 建议:使用const频繁一点。 const 修饰的返回值不能够被修改哦。

--------------------------------------

1.当我们不再使用某一个宏时,可以使用#undef来取消其定义。例如#undef TEXT 否则简单地删除宏定义会带来许多编译错误。

2.初始化是:创建的同时使用初值直接填充对象的内存单元。   


  page  26



       \





















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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值