当前位置: 首页 > 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.zskr.cn/news/26639.html

相关文章:

  • 定位问题3:明明堆栈已经打印出来了,偏就是定位不出来?
  • 鸿蒙hdc命令【杭州多测师】
  • 电脑黑屏只剩鼠标-解决方案 - 教程
  • leetcode448. 找到所有数组中消失的数字
  • 揭开 C++ vector 底层面纱:从三指针模型到手写完整实现 - 指南
  • Java中的注释
  • 2025年栏杆护栏厂家权威推荐榜:不锈钢栏杆、桥梁防撞护栏、河道景观护栏专业制造商精选
  • Day1标签语法
  • home-assistant-Concepts and terminology概念和术语
  • 2025年定型机厂家推荐排行榜,拉幅定型机,门富士定型机,节能定型机,余热回收,废气回收,烟气回收,智能排风,双层定型机公司推荐
  • 有关K8s calico IPIP模式的一些疑惑和思考
  • UMDF驱动开发入门:创建虚拟设备,从安装到I/O交互全解析
  • 从零开始,搭建自己的AI平台写小说
  • 2025年AI优化公司电话推荐:十家可验证服务商沟通备忘
  • 2025深圳离婚律所电话推荐:家理律所福田诺德中心25楼
  • 2025年深圳离婚律所电话推荐:家理福田诺德中心婚姻家事专线
  • 生日
  • 2025年润滑油厂家权威推荐榜:工业润滑油,汽车润滑油,发动机润滑油,甲醇发动机润滑油,全合成润滑油,长效发动机润滑油品牌深度解析
  • 2025固定资产管理系统电话推荐:公贝资产全周期管理方案
  • 如果使用 vxe-table 实现全键盘操作,按键切换复选框单选框的选中状态
  • 2025年上海装修公司电话推荐:极家与俞润本土双选参考
  • 2025年激光切割机厂家电话推荐:济南邦德激光4009917771技术对接通道.
  • 各项任务完成时间统计
  • 【往届已检索!稳定检索】2025年第二届人工智能、数字媒体技术与交互设计国际学术会议(ICADI 2025)
  • 2025 年螺旋地桩源头厂家最新推荐排行榜:聚焦热镀锌光伏大棚等领域,精选优质企业保障供应与品质光伏/大棚/预埋/ 定做/钢管螺旋地桩厂家推荐
  • 交互题
  • 尝试理解FunctionalInterface
  • 2025 年防淹门源头厂家最新推荐排行榜权威发布,含地铁 / 防洪 / 地下通道专用款,15 项专利 + 央视报道品牌领衔
  • 一文带你掌握Visual Studio中集成的git功能
  • iOS 混淆实战 多工具组合完成 IPA 混淆、加固与工程化落地(iOS混淆|IPA加固|无源码混淆|Ipa Guard|Swift Shield)