写给自己的建议
2013-12-11 15:19
218 查看
1.写函数时,如果有返回值,首先写return 语句
在linux写 c++一个函数声明了有返回类型,但是不返回对象也可以编译通过,但是运行会出现莫名其妙的错误,析构函数析构错误,
class Object
{
Object operator =(const Object &a)
{
value=a.value;
}
}
当我调用 Object a=Object b;
是会出现析构错误,具体原因是当=操作以后,临时对象需要析构掉,operator =返回的那个临时对象,但是operator= 并没有换回对象,他会曲堆栈前一个字节当做临时对象析构。
2. 谨慎用memset()重置对象,
为了方便,同时也为了效率,程序员经常看到memset(this,0,sizoeof(*this)),这样来重置对象,这样是错误的,如果对象中含有非简单数据类型,是很容易出错的
class A
{
int ;
string b;
}
对于这个对象调用memset();但给 A.b重新赋值时就会出错。
3.函数一定要完成自己期望的所有功能,并且功能尽可能简单
我有个函数 bool combine(object &a ,object &b);写的注释是把 a,b合并,并把合并结果写到a,并把b清空。结果实现的时候忘记了清空b,测试时候只见到测试了合并的结果,没有测试把b清空,导致后来集成测试才出现错误,结果这个bug花了我很长时间才找出来。4. 调用网络操作的API一定要设置超时,或者一定要清楚该API副作用
在curl http 操作中,我程序运行一段时间就假死,后来排查发现还是http get请求服务返回,整个程序阻塞这这,该curl_easy()为同步接口,当时因为只想要个http get操作,结果没有好好看看curl api就乱用导致后来程序假死,搞得我总是无法理解。
5.关于传数据一些建议
(1)对于client 要有控制速度的机制,和错误检查机制,检查是否发送成功(2)对于server文件存储,最好是顺序存储,同时尽量少调用open操作,这个需要访问 共享inode消息。write ,read 相比fstrean减少了一次用户态到内核态的copy。
(如何检查程序错误) 数据完整性, 数据处理正确性
故意写入些脏数据,在client读取数据源中写入些脏数据,不能再client中写,这样无法验证数据是否是完整的
相关文章推荐
- 关于JDBC学习过程中的注意事项(分享自己犯过的错误,写给初学JDBC的小伙伴的八条建议)
- 写给自己的几点编程建议
- 【HDU4313】Matrix 多校 解题报告+AC代码+思路+算法正确性证明,此为Kruskal贪心恶心版本,非自虐倾向慎入!建议想找解题报告的童鞋看简单版本的,这个我写给自己【目标达成 0.2%】
- 写给做设计的自己的四个建议
- 写给自己的一些建议
- 写给Git初学者的7个建议
- 自己写的银行家算法,有兴趣的可以拿去测试,欢迎提出建议
- 写给2014年的自己
- 写给学生朋友的一点建议
- 写给自己看的OpenCV配置指南 :-)
- 写给自己
- [Aaronyang] 写给自己的WPF4.5 笔记[1布局]
- [转]2012,写给24岁的自己
- 2014,写给25岁的自己
- JavaScript用户输入自己的名字,输出写给用户的信件
- 写给未来的自己
- 2012写给自己的年度总结
- 写给自己的备忘录
- git上新创建一个库->写给自己
- 写给自己的一些话