写给自己的建议

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中写,这样无法验证数据是否是完整的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值