杂谈

news/2025/10/21 19:43:38/文章来源:https://www.cnblogs.com/wu-zixu/p/19156279
代码如下,将这一段代码优化了下    
    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.mzph.cn/news/942604.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

挖矿-学校挖矿排查

挖矿-学校挖矿排查 1、使用工具分析共有多少IP存在扫描web特征,提交其数量 这里我们直接访问百度网盘将流量下载到本地然后直接导入到 ZUI里面,这个工具很方便对流量进行筛选流量分析工具ZUI安装然后使用命令搜索 co…

读书日记2

四五章深入探讨了软件构建的关键前期工作,让我认识到优秀代码的质量在很大程度上是由设计阶段决定的。 核心收获与深刻见解: 1.设计的层次性思维:McConnell详细阐述了从系统架构到类设计,再到子程序设计的完整层次…

定位问题3:明明堆栈已经打印出来了,偏就是定位不出来?

堆栈如下,明明是在AAA::B函数里core了,而且是概率core的,可就是定位不出来 B函数很简单 1. 第一句打印入参 2. 其它都是函数调用 3. 打印退出消息 对于1 ,参数如下,不可能为nullptr,也排查了调用处(仅2处),不存…

Spring 统一机制处理 - 拦截器与适配器

Spring 统一机制处理 - 拦截器与适配器pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Mon…

鸿蒙hdc命令【杭州多测师】

1、查看版本hdc -v2、查看连接设备hdc list targets3、安装应用hdc app install .\phone-launcher-default-signed.hap// 覆盖安装hdc app install -r .\phone-launcher-default-signed.hap// 安装、更新,多HAP可以指…

电脑黑屏只剩鼠标-解决方案 - 教程

电脑黑屏只剩鼠标-解决方案 - 教程2025-10-21 19:26 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !impo…

如何将海量纸质表格一键数字化?表格识别技术给出答案

在当今的智能办公时代,海量的信息仍被困在纸质文档或僵化的电子图片中,其中,结构复杂、数据密集的表格是信息数字化的主要瓶颈之一。表格识别技术的崛起,正如同一位不知疲倦的“数据捕手”,精准地破解了这一难题,…

10.21 NOIP 模拟赛 T1. 小 h 学步

思路 最终答案为: [ ans = \sum_{i} \left( \left( \sum x_i \right)^2 + \left( \sum y_i \right)^2 + \left( \sum z_i \right)^2 \right) ] 其中对于同一个 ( i, x_i, y_i, z_i ) 互相关联。 将 ( x ) 部分的平方拆…

深入解析:【Linux】生产者消费者模型

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

湖南新建高速项目的“神经网络”是如何搭建的?——揭秘80公里高速的收费、通信、监控一体化系统

湖南新建高速项目的“神经网络”是如何搭建的?——揭秘80公里高速的收费、通信、监控一体化系统湖南省某条贯穿山区、串联景区的高速公路,不仅是交通主干道,更是区域协同发展和旅游经济助推器。全长约80公里,北起湘…

深入解析:大数据Spark(六十六):Transformation转换算子sample、sortBy和sortByKey

深入解析:大数据Spark(六十六):Transformation转换算子sample、sortBy和sortByKeypre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; …

完整教程:web前端团队开发code review方案最佳实践

完整教程:web前端团队开发code review方案最佳实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas"…

实用指南:免费html网页模板 html5网站模板 静态网页模板

实用指南:免费html网页模板 html5网站模板 静态网页模板pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas…

最大值的不同统计方法

题目:CF2154B 2154B 题目中有这样一句话: 操作1: 选择一个整数 i 并执行 : 用最大值为 i的前缀替换 $ a_i $ 。 $$ \sum_{i=0}^n i^2 = \frac{(n^2+n)(2n+1)}{6} $$

加密货币如何改变金融诈骗的游戏规则

本文深入分析加密货币如何被诈骗分子利用实施新型金融犯罪,揭露了包括虚假赠品网站、匿名钱包洗钱、AI深度伪造等最新诈骗手法,并提供了5种实用防护策略保护个人资产安全。加密货币如何改变金融诈骗的游戏规则 加密货…

leetcode448. 找到所有数组中消失的数字

leetcode448. 找到所有数组中消失的数字448. 找到所有数组中消失的数字我的解法:额外数组class Solution {public List<Integer> findDisappearedNumbers(int[] nums) {int n = nums.length;boolean[] flag = n…

远程服务器显示pyQt界面

远程服务器显示pyQt界面1 vscode+mobaxterm实现服务器图形显示 在服务器上跑深度学习任务是有时候会需要可视化图片,但是服务器一般没有图形显示的功能: $ xclock Error: Cant open display: 可以通过 vscode+mobaxt…

揭开 C++ vector 底层面纱:从三指针模型到手写完整实现 - 指南

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

java的字符和字符串

这是一个非常基础且重要的概念,用一个简单的比喻就很容易理解:字符 (Character): 就像一个“字母”或一个“汉字”。 字符串 (String): 就像一个“单词”或“一句话”。1. 字符 (Character)概念: 它是文本的最小、…

python_日志记录-loguru

日志记录-loguru1 使用 loguru 安装 pip install loguru如何使用 from loguru import loggerlogger.debug("This is a debug message") logger.info("This is an info message") logger.warning(&…