随笔(2013.12)

来源:互联网 发布:淘宝新规处罚规定 编辑:程序博客网 时间:2024/06/05 18:48

1.ACE的单例,只是一个模块内的单例,并不是一个进程中的单例,这里模块指的是一个dll文件,或者主程序中,如果在主线程调用ACE的对象管理器来获得单例,在在dll中调用获得单例是不同的

2.可以先写测试用例,在写代码,这样可以对需求有更了解。不知道如何写用例,不知道如何测试,肯定是对需求不了解。

3.代码重构也可以分步来重构,不是非要一下子全都推翻。可以一开始通过增加一些类,把类间蜘蛛网的关系理顺(有点像中介者模式),在对函数级别重构。

4. 一般是先写详细设计,然后再估计工作量。

5. 写代码过程中反复修改重构是可以的,但是不要修改以前设计的接口,大框架不变,内部小的修改是可以的。

6. 在异常处理、错误return、break的地方最好有日志,可以很好帮助问题的定位。而且在设计开始就要写上,不要等代码都写完在补。

7. 类的初始化很重要,尤其一些没有默认构造函数的成员。

8. ACE的定时器要注意,重设置系统时间可能会造成定时器失效,使用高精度定时器可以避免这个问题。具体参考:http://blog.csdn.net/fullsail/article/details/2915664

9. 转发服务器,是复制分发和转发的结合,有延迟关闭的功能。

10. 状态模式中容易出错的地方就是指针析构,如果在一个状态中需要转成另外一个状态处理消息,一般处理结束析构消息,但是如果转到另外状态析构消息,消息析构后退出,可能重复析构。

11. 在网络线程中,如果使用SendAndWait,肯定会超时之后在收到消息,因为使用这个函数之后整个网络线程就阻塞了,这个时候有回应回来,但是线程是阻塞的,调用OnCmdCome失败,不能生成响应。等到超时之后,才调用OnCmdcomme,好像SendAndWait等待的时间比设置的稍长,否则在网络线程中调用每次都会返回超时失败。

12. 对于delete一定要注意,最好集中释放。对于一些可能放到容器中的指针,不要提前释放,在pop的时候在释放,否则push进去,然后释放,就很难管理。

0 0
原创粉丝点击