“坑与抗坑”---我们要做个有“素质”的程序猿

举报
华为云社区精选 发表于 2018/05/10 15:07:45 2018/05/10
【摘要】 产品代有这样的一段代码:1、定义了一个定时任务的注册列表: std::list<software_object*> _software_object_list; std::list<software_object*> _software_object_list;2、线程以固定的周期调用、执行列表中注册的定时任务 std::list<software_object*>::i...

IMG_2413.JPG

产品代有这样的一段代码:


1、定义了一个定时任务的注册列表:

     std::list<software_object*>  _software_object_list;  std::list<software_object*>  _software_object_list;


2、线程以固定的周期调用、执行列表中注册的定时任务

    std::list<software_object*>::iterator iter;
    for (iter = _software_object_list.begin(); iter != _software_object_list.end(); ++iter)
    {
         (void)(*iter)->check();
    }


3、需要新增定时任务,如下方式注册

    

    obj = new TIMER_TASK_A(this);
    if(obj == NULL)
    {
        return false;
    }
    _software_object_list.push_back(obj);

    obj = new TIMER_TASK_B(this);
    if(obj == NULL)
    {
        return false;
    }
    _software_object_list.push_back(obj);

   //新增其它的定时功能TIMER_TASK_new在此注册。


4、看似很简单的机制,于是小H同学,在结尾处增加了一个xiao_h_new_add_timer定时任务册,并验证该任务功能正常,就去happy了。

    obj = new TIMER_TASK_B(this);
    if(obj == NULL)
    {
        return false;
    }
    _software_object_list.push_back(obj);

    obj = new xiao_h_new_add_timer(this);

    if(obj == NULL)
    {
        return false;
    }
    _software_object_list.push_back(obj)
;


5、XXX天后,TIMER_TASK_B功能受损,查看日志及代码,系统中竟有这样的一处特殊处理:

    

      if (pFrame->GetCmdCode() == GET_TZ_INFO_CMD)
      {
            TIMER_TASK_B* pTZ_monitor = dynamic_cast<TIMER_TASK_B*>(_software_object_list.back());
            if(NULL == pTZ_monitor)
           {
                  log_major("The last**_object is not TIMER_TASK_B!");
                  return;
           }
          pTZ_monitor->set_tz(pFrame);
     }


6、  额,你可以注册新增定时任务,但是只能在中间注册, TIMER_TASK_B 必须放在最后,添加TIMER_TASK_B 特殊处理的程序猿,不舍得新增变量、   (亦或有更高的构思),但是又担心将别人坑的太惨,于是在遥远的地方增加了这样的一行日志,  log_major("The last**_object is not TIMER_TASK_B!");


7、很不幸,小H同学在茫茫志(日志)海中,没有抓住这最后一颗救命稻草(log_major("The last**_object is not TIMER_TASK_B!");


8、怪谁呀?


     坑的教训:我们要做一个有“素质”的程序猿,不想被坑,但也不要给别人挖坑。

     抗坑的教训:同学,不要只关注自己功能,记得还要要看周边功能及系统中是否有新增的异常日志,其它诸如”战战兢兢如履薄冰“无需再提。


作者|韩小光      


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。