c++ - 在重构深度嵌套的代码时需要帮助

标签 c++ refactoring

#include <iostream>
using namespace std;

int main()
{
    int range = 20;
    int totalCombinations = 0;

    for(int i=1; i<=range-2; i++)
    {
        if(range>i)
        {
            for(int j=1; j<=range-1; j++)
                if(j>i)
                {
                    for(int k=1; k<=range-1; k++)
                        if(k>j)
                        {
                            for(int l=1; l<=range-1; l++)
                                if(l>k)
                                {
                                    for(int m=1; m<=range-1; m++)
                                        if(m>l)
                                        {
                                            for(int f=1; f<=range; f++)
                                                if(f>m)
                                                {
                                                    cout << " " <<i<< " " <<j<< " " <<k<< " " <<l<< " " <<m<< " " <<f;
                                                    cin.get(); //pause
                                                    totalCombinations++;
                                                }
                                        }
                                }
                        }
                }
        }
    }
    cout << "TotalCombinations:" << totalCombinations;
}

最佳答案

if(range>i)

为什么不从 range 开始 i 来避免这个问题呢?可以轻松地将其重构为 for 条件的一部分。不需要额外的条件。

if(j>i)

为什么不从 i 开始 j 呢?

...(对其他两个循环重复)

这摆脱了一半的嵌套。就循环本身而言,我建议对它们使用 Extract Method。

关于c++ - 在重构深度嵌套的代码时需要帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6408432/

相关文章:

android - 如何在 Eclipse 中格式化 Android xml?

ruby-on-rails - 重构 - 找到一个函数来将列添加到 postgres 查询

javascript - 重构 JavaScript

c# - 在大型 C# 应用程序上执行批量命名空间重命名的最佳方法是什么?

c++ - 编写 C++ 版本的代数游戏 24

c++ - 乘法如何用于 C++ 枚举?

c++ - 用于异常处理的基类技术

使用花括号而不是赋值运算符的作用域变量的 C++ 声明和实例化

c++ - 如何在C++中的某个变量中存储日期

jquery - 我如何改进这个类似于 Gmail 的 jQuery 界面?