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

如何重构嵌套for循环以合并相似函数减少重复代码

合并重复逻辑的实现方案

方案1:布尔参数控制(最简实现,适配C/C++全版本)

提取公共的嵌套循环逻辑,通过布尔参数控制是否执行func_2调用,可保留原有funcA、funcB对外接口,完全不影响现有代码的调用逻辑。

// 提取的公共逻辑函数
void common_func(bool need_call_func2)
{
    for (int i = 0; i < size; i++)
    {
        for (int j = 0; j < size; j++)
        {
            func_1();
            if (need_call_func2) {
                func_2();
            }
        }
    }
}

// 原有对外接口保持不变
void funcA()
{
    common_func(false);
}

void funcB()
{
    common_func(true);
}

该方案改造成本极低,无额外性能开销,适合差异逻辑固定、不需要后续扩展的场景。

提示:如果size不是全局变量,可将其作为参数传入公共函数,适配更多调用场景。

方案2:回调函数实现(扩展性更强,适合可变差异逻辑场景)

如果后续可能新增更多循环内的自定义逻辑,可以使用回调函数实现扩展,以下为C++示例:

#include <functional>

void common_func(std::function<void()> extra_action = nullptr)
{
    for (int i = 0; i < size; i++)
    {
        for (int j = 0; j < size; j++)
        {
            func_1();
            if (extra_action) {
                extra_action();
            }
        }
    }
}

void funcA()
{
    common_func();
}

void funcB()
{
    common_func(func_2);
}

该方案符合开闭原则,后续新增差异逻辑时不需要修改公共函数的内部代码,直接传入对应回调即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 22:39:02