从事C++开发工作已有三四年之久,之前一直都是埋头专心干活。三年前的状态几乎是待在公司的实验室里有种两耳不闻窗外事,一心只系正在研发的系统。现在慢慢的空闲下来了,就趁着空闲的时间,把以前的遇到的问题好好整理进行反思反思。同时在反思的过程中也研究研究最近流行的新技术。以下几点是我在开发过程中的几点总结(还不全面),总结得不对的地方也希望大家能指出。
以下是我在开发编程过程中的几点总结:
1.编程时尽量用指针
2.少用动态分配(new或malloc),如果用到的话要到最后用完了才释放
3.避免在循环中开启线程
4.尽量避免线程的嵌套使用
5.检查代码的时候要看清楚上下文之间数据的联系与变化
6.写代码的风格要保持一致
7.写代码的时候对自己的要求要高一些
8.要慎用二级指针(即指针的指针),及其容易造成内存的泄漏,而且无法确实的控制。当二维数组的列数不确定的时候才建议使用二级指针,如果二级指针需要传参,最好是将其转换成一级指针传出。
9.浮点数的比较不能直接等于进行比较,因为浮点数没有0, 要判断一个浮点数是否等于0 ,可以进行一下操作
float a=0.0;
if ((a-(1/(10e+10)<0) //判断 a 是否等于0
10.解决网络大小端调用的函数:
hotns()——"Host to NetWork Short",主机字节顺序转换为网络字节顺序(对无符号短型进行操作 4bytes)
htonl()——"Host to NetWork Long",主机字节顺序转换为网络字节顺序(对无符号长型进行操作 8bytes)
ntons()——"NetWork to Host short",网络字节序转换为主机字节顺序(对无符号短型进行操作 4bytes)
ntohl()——"NetWork to Host Long",网络字节顺序转换为主机字节顺序(对无符号长型进行操作 8bytes)
11.资料下载网站 http://www.it-ebooks.info/
12. 遇到double free 的问题时首先要先自己认真检查, 不能急躁 。有怀疑精神是好的,但前提是你得先证明清楚才能下结论。
13.socket 通信要认真阅读每个函数的返回值说明,不能只想不动去验证。
14.TCP/IP 和UDP/IP的区别使用前好好想想,再决定是用哪个,TCP 的recv()函数如果要接收指定大小的,则可将参数flag的值设置为 MSG_WAITALL。
15. socket 通信 send () 和recv () 函数返回的都是真正发送或接收到的数据的大小,可以通过该返回值对程序进行控制。
16. 当调试代码无法接着进行下去时,不妨停下来看看书,然后再去调试。切记不要在脑子不清晰的时候去调试代码,那样是在浪费时间,不但效率低,而且也会把整个人的情绪弄得很糟。
17.#define 和 const 常量不是同一回事, #define是替换,而C++常量不是
const:有数据类型,编译进行安全检查,可调试
define:宏,不考虑数据类型,没有安检,不能调试
18.尽量到官网查找API等资料
19.优化代码,减少重复计算,减少数组下标操作,尽量用指针进行。
20.指针转换 例子: int * i 转换成 void * a = (void *) i; int *i 转换成 void ** b = (void **)&i