当前位置: 首页 > news >正文

杂谈

代码如下,将这一段代码优化了下    
    string id = AAA(msg->msg_sender_);
    if (id.empty())
    {
        BBB(msg);
        VX_INFO_FUN_OUT();
        return;
    }
    #ifdef PROJECT_A
    //理论上不会到这里,因为id.empty会会处理,这里做一个保护
    if(U::isB(msg->msg_sender_)){
        BBB(msg);
        return;
    }
    #endif
如下
  string id = AAA(msg->msg_sender_);
   
   #ifdef PROJECT_A
   if (id.empty())------------------------------将这一段放到 PROJECT_A里面了,这里出现了错误
    {
        BBB(msg);
        VX_INFO_FUN_OUT();
        return;
    }
    //理论上不会到这里,因为id.empty会会处理,这里做一个保护
    if(U::isB(msg->msg_sender_)){
        BBB(msg);
        return;
    }
    #endif
 
错误原因:
1. 虽然在当前PROJECT_A的逻辑下,和原来的代码等效
2. 在不是PROJECT_A的逻辑时,这里就少了这个判断和退出的执行,虽然BBB(msg);消息仅在PROJECT_A中需要处理(其它项目不涉及,因此才做这个优化),但这个优化本身导致了问题
-------------在非PROJECT_A的项目时
if (id.empty())------------------------------这个分支缺失了
    {
        BBB(msg);
        VX_INFO_FUN_OUT();
        return;
    }
 
考虑到BBB(MSB)仅在PROJECT_A中需要,因此,将代码回退,并将BBB(msg)做如下处理
#ifdef PROJECT_A
BBB
#else
BBB --------------------这里不做任何处理,保持现状
 
 
扩展:
1. 尽量将变化隔离
2. 隔离是整块(#ifdef  $else #endif 隔离整个函数,而不是部分)而不是一个片段(这里仍不够好)有if(U::isB(msg->msg_sender_)){------------这个逻辑仍做的不够好
3. 最好避够这种通过项目宏隔离的方式-------------采用分支或是其它手段更好
#endif
http://www.jsqmd.com/news/18756/

相关文章:

  • 挖矿-学校挖矿排查
  • 读书日记2
  • 定位问题3:明明堆栈已经打印出来了,偏就是定位不出来?
  • Spring 统一机制处理 - 拦截器与适配器
  • 鸿蒙hdc命令【杭州多测师】
  • 电脑黑屏只剩鼠标-解决方案 - 教程
  • 如何将海量纸质表格一键数字化?表格识别技术给出答案
  • 10.21 NOIP 模拟赛 T1. 小 h 学步
  • 深入解析:【Linux】生产者消费者模型
  • 湖南新建高速项目的“神经网络”是如何搭建的?——揭秘80公里高速的收费、通信、监控一体化系统
  • 深入解析:大数据Spark(六十六):Transformation转换算子sample、sortBy和sortByKey
  • 完整教程:web前端团队开发code review方案最佳实践
  • 实用指南:免费html网页模板 html5网站模板 静态网页模板
  • 最大值的不同统计方法
  • 加密货币如何改变金融诈骗的游戏规则
  • leetcode448. 找到所有数组中消失的数字
  • 远程服务器显示pyQt界面
  • 揭开 C++ vector 底层面纱:从三指针模型到手写完整实现 - 指南
  • java的字符和字符串
  • python_日志记录-loguru
  • 软工第三次作业--结对作业
  • 原来用聊天记录就可以创造数字分身!WeClone项目在Lab4AI平台上的复现
  • Day1HTML的基本骨架
  • 结对项目作业
  • C语言项目开发常用目录结构 - Invinc
  • RNDIS让Air8000的USB上网更智能、更快速!
  • 如果k8s有三个calico节点A,B,C 使用bgp模式的话是如何进行BGP对等会话的
  • 2025年栏杆护栏厂家权威推荐榜:不锈钢栏杆、桥梁防撞护栏、河道景观护栏专业制造商精选
  • Day1标签语法
  • home-assistant-Concepts and terminology概念和术语