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

C++中优雅结合switch、if与变量赋值的代码优化咨询

代码优化方案(解决重复调用do_something的冗余问题)

原代码

enum possible_cases; //assigned somewhere
bool decision; //assigned somewhere

//basically the default action for my possible_cases
int value = 10;
do_something(value);

switch (possible_cases)
{
    case 0:
        //assume covered by do_something(value)
        break;
    case 1:
        if ( decision )
        {
            value = get_other_value();
            do_something(value);
        }
        break;
    case 2:
        value = get_other_value(); //will return same value as in case 1
        do_something(value);
        break;
}

问题背景

  • 必须用固定值10调用一次do_something()
  • 部分case需要额外用get_other_value()的结果调用do_something(),且case后续会持续增加,用布尔值判断的方式扩展性差
  • 当前代码重复调用do_something(),冗余度高,想从代码美观性角度优化,同时保留enum的case结构

优化后代码

enum possible_cases; //assigned somewhere
bool decision; //assigned somewhere

int value = 10;
// 执行默认调用
do_something(value);

bool needExtraCall = false;
switch (possible_cases)
{
    case 0:
        break;
    case 1:
        needExtraCall = decision;
        break;
    case 2:
        needExtraCall = true;
        break;
    // 新增case时,只需在这里设置是否需要额外调用的逻辑
    // case 3:
    //     needExtraCall = some_new_condition;
    //     break;
}

// 统一处理额外调用逻辑
if (needExtraCall)
{
    value = get_other_value();
    do_something(value);
}

优化亮点

  • 把重复的do_something()调用逻辑拆分,默认调用只执行一次,避免代码冗余
  • 用needExtraCall变量统一管控额外调用的触发条件,新增case时只需维护这个变量的赋值逻辑,不用重复写调用代码,扩展性更好
  • 代码结构分层清晰,逻辑一目了然,可读性和维护性都提升了

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 17:05:19