You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在无数据库场景下精简现有C++项目中的重复If-Else代码

If-Else冗余代码优化思路

你原本设想的Map方案是完全可行的,以下是几种适配你需求(无外部存储、全内置配置)的优化思路:

  • 枚举映射配置表方案
    把a_lFittingOption对应的枚举值作为Map的键,值存储按阈值从大到小排序的区间-返回值数组,比如[(2000.0, 1130.0), (1800.0, 930.0), (1450.0, 780.0), (870.0, 455.0)]。规则相同的枚举可以直接复用同一份配置数组,比如FitO_P_BASIC_TT_RC2和FitO_P_BASIC_TT_RC1共用同一份区间配置,避免重复存储。
    通用逻辑只需要写一次:先从Map中取出当前枚举对应的区间配置,再遍历区间数组,匹配到第一个满足阈值条件的项就返回对应值即可,完全消除多层嵌套If-Else,后续新增配置只需要更新映射表,不需要修改判断逻辑。
  • 策略函数映射表方案
    如果后续不同枚举的判定规则可能出现非区间类的差异,可将每个枚举对应的计算逻辑封装为独立的小函数,Map的值替换为函数指针/匿名函数,相同逻辑的枚举复用同一个函数。该方案比纯配置表灵活性更高,适配规则复杂多变的场景。
  • 最小改动抽离公共函数
    如果是老项目不适合大改架构,可以先把重复的区间判断逻辑抽成公共工具函数,入参为dLengthComp和区间配置数组,返回匹配到的数值。原外层的If-Else分支仅需要传入对应配置数组调用公共函数即可,可快速消除90%以上的重复代码,改造成本最低。

优化注意事项:

  1. 所有区间配置统一按阈值从大到小排序,避免判断顺序出错
  2. 等于阈值的判定逻辑可以统一封装到公共匹配逻辑中,不需要每个配置分支重复写Null(xx-xx)类的判断
  3. 常用阈值、返回值可以抽为常量,避免硬编码出错

内容的提问来源于stack exchange,提问作者SchluppIng

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 03:57:01