我的经验

来源:互联网 发布:飞凡网络 编辑:程序博客网 时间: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保证他的线程安全。

原创粉丝点击