我的经验
来源:互联网 发布:飞凡网络 编辑:程序博客网 时间:2024/05/06 21:44
1. 当一个模块所需的一些自定义struct , enum , union 和一些全局变量等等,他们都需要被使用到多个类中,虽然放在某个类内定义很合适。但是,这时候你就需要去考虑到类的先后顺序:即 #include "xxxx.h"要考虑这些头文件的引用的先后顺序。 所以有点麻烦,万一以后需要变了,需要把类的先后定义顺序改掉。那比较麻烦的:
所以,我们可以给该模块,提供一个 类,专门放些什么呢:1.放公共使用的变量 :静态变量,宏定义,静态共用方法,或者说是工具方法等。 最先定义它。嘻嘻。
2.对内存的操作,请不要用首指针来做转换:如 (Struct_msg*)buf; 这样转,唉!木的搞。
我们应该使用memcpy(des,str,size)来进行内存的拷贝,这样子就不会出错罗。
貌似不会,我去,我靠。11111
我的建议:不要使用首指针的转换,而应该使用memcpy的内存拷贝。否则:死都不知道怎么死的。
多多使用函数库中的函数:如memcpy memchr strlen strstr strchr 等函数。不要自己移动指针,脑残又白痴。
3.对存在return 的方法,我们需要特别的注意。因为之前打开了些资源或者空间;容易忽略掉释放问题。
4.cout << "返回值:"<< localDeptId+"_"+localUserName+"_"+ConvertIntToStr(id)<<endl; 妈的:即使int不能直接与string 连接起来,但至少你报个错阿:我晕死,你直接丢弃掉int部分。这不是瞎搞吗? 改正:ConvertIntToStr(localDeptId) + "_" + xxxx;
5. 有时候我们会因为包含问题而烦恼,但是这个嘛:如果你头文件中没有使用到这些类,但是在实现的文件中使用到了,就可以不用在头文件中包含了,而在实现文件中.cpp文件中包含也是可以的。这样子就解决了头文件先后顺序的问题了。
6, 我发现:我总是喜欢一次性写完所有的功能模块,然后自信满满的拿去测试,到头来,总是有许许多多的粗心的小问题,找的时间比较久。所以,我决定,没做完一个小的功能,小的模块,甚至是小的方法接口,我自己首先要测试一下先。这样就能够非常快速的找出错误了。而不必大海捞针了。呵呵。
7. 结构体需要注意的 : 有些结构体只适合在内存中使用,不能保存到文件中去,否则。。。 有些结构体呢,则可以放心的使用无论在内存还是在文件中。
他们的区别就是:结构体内的元素有没有指针类型的元素。有,只能在内存中使用;没有,哪里都好用。
例如: struct { string a; } ; 这个就不能保存到文件中了,因为他的数据并不在该结构体中,而是在内存其他位置,这个a仅仅是指向了该内存中的某个地方。
struct { char a[10]; }; 这个就能用,因为具体数据是保存在结构体中的。^_^
8.全局变量在多线程中,都是需要加锁的,否则血的教训。
就算是stl中的容器类,他们都不是线程安全的,这样搞效率不好,所以,得我们自己根据需求来进行lock保证他的线程安全。
- 我的经验
- 我的苦学经验
- 我的授课经验
- 我的经验
- 我的经验
- 我的项目经验
- 我的架构经验
- 我的编程经验
- 我的阅读经验
- 我的一点学习经验
- 我的一些BAT经验
- 我用firefox的经验
- 我的架构经验小结
- 我开发activex的经验
- 我的架构经验小结
- 我的WebLucene安装经验
- 我的adsense优化经验
- 我的flex学习经验
- Selenium源码分析之WebDriver
- 进程虚存空间的管理
- HDU 4268 树状数组 2012长春网络赛
- SQL基础:where,group,order执行顺序
- 又见一帘幽梦
- 我的经验
- sql server日期时间格式转换字符串简介
- TableViewer,单击首列实现全选与全不选
- C#版后缀树 最长公共串 LCS
- 编译Android时出现make: execvp: /bin/bash: Argument list too long错误
- 【selenium】selenium安装及验证
- ajax+thinkphp框架实现无刷新分页
- sql导出数据库中的数据
- 几种比较好的哈希方法