C/C++编程个人心得

来源:互联网 发布:unity3d角色模型下载 编辑:程序博客网 时间:2024/06/07 17:32
<此心得按本人实际工作认识这些问题的先后排序,若本人理解错误请斧正>
 
1.在使用对象的指针的时候,要先NEW,尽管不使用NEW是不出ERROR的,但是肯定WARNING,程序也不可能正确运行。尽管是低级错误还是提出来,告诫自己。
 
2.在做判断语句的时候,先写要判断的数值。
如:if(0==a),好的习惯需养成。这正是乐一帆同志提出的“Biologic写代码”。
 
3.在写关于“锁机制”代码的时候,要注意锁与开锁的对应,即做到锁一次,就要开一次。不然容易出死锁等你不想看到的现象。(大学操作系统里的东东还是有用哒!汗!)
 
4.做写循环条件的时候,要注意条件中的变量的数值有没有在循环的过程中被反复改写。
  这样的错误很难被发现,因为编译是肯定通过的,但是程序是要出错滴。
 
5.在做Buffer的读写操作的是时候,要注意缓冲里的数据不能上溢也不能下溢。要注意使用保护机制(很重要)。尤其Buffer的操作都伴随多线程,保护机制还可以控制数据流被合理地读写。
   如:控制缓冲数据上溢就可以明显控制写的速度。
 
6.指针初始化的时候置NULL,用完就DEL掉,且不能在循环体里反复的NEW和DEL,应在外面做NEW和DEL。在循环的时候,自动反复擦写,节约内存使用。
 
7.在通过网络流或者码流卡传输数据的情况下需要用到“等待机制”,要是没有这种机制的话,短时间内没有数据传入Buffer的话,程序就会出问题。如果在硬盘情况下传输数据则不需要这样处理,因为硬盘是成块操作。
 
8.指针初始化的时候可以不进行赋值,但是没有初始化指针变量是不可以使用的;而引用初始化的时候一定要赋值。这虽然只是个小细节,前者一般没什么问题,后者容易犯错。
 
9. #define WHAT
 .............
 
 #ifdef WHAT
    DO STH1;
 #else
    DO STH2;
 #endif
  如果程序开头有#define WHAT这行,即WHAT有定义,碰到下面#ifdef WHAT的时候,就执行DO STH1。否则,DO STH2将被执行。在一般情况下,使用如下即可(注意:这里的 Do sth1和Do sth2都会被执行的):
 #define WHAT
 .............
 
 #ifdef WHAT
    Do sth1;
 #endif
.............
 #ifdef WHAT
    Do sth2;
 #endif
  用这种“嵌套”方式,可以方便的开启/关闭整个程序的某些特定功能。多用于代码的测试。
 
10.#define BUFFER_UNIT_SIZE (1<<23)
     这里就是用BUFFER_UNIT_SIZE替代8M。
 
原创粉丝点击