首页 > 解决方案 > 使用标志、返回、异常、goto 或 break 中止过程

问题描述

我有一个代码可以解析文件并在满足无效条件时分解。代码在 C++ 中,如下所示:

bool ok = true;
if (task1() == false)
    ok = false;
if (ok && (task2() == false))
    ok = false;
if (ok && (task3() == false))
    ok = false;
cleanup();
return ok;

现在我正在寻找更清洁的替代品以获得相同的结果。据我所知有:

我没有找到有关此类代码的讨论。一般推荐哪些实现方式?是否在任何 C++ 编码指南中都提到了这种情况?还有其他实用的选择吗?

编辑:我的目标似乎并不明确。我正在寻找如何摆脱程序而不是调用三种方法的最佳方法。所描述的问题更多的是一个例子。我对支持和反对不同语法的论点感兴趣。

在对象的代码中,每个方法都是几个相似但彼此不同的代码行的占位符。可能有 50 个代码块。一个旧的代码块如下所示(我知道还有更多的东西需要优化,而不仅仅是这个问题的目标):

if (ok)
{
    keyString = "speed";
    tmpVal = configuration->getValue(section, keyString, -1);
    if (tmpVal != -1)
    {
        m_speed = tmpVal;
        if (m_speed < m_minSpeed)
            m_minSpeed = m_speed;
        m_needSpeed = true; 
    }
    else if (m_needSpeed)
    {
        ok = false;
        keyErr = keyString;
    }
}

标签: c++exceptionreturnbreakgoto

解决方案


假设所有这些函数都返回 a bool,在我看来,所示代码在逻辑上与以下内容相同:

bool ok= task1() && task2() && task3();

cleanup();

return ok;

推荐阅读