if (x() > 10)
{
    if (y > 5)
        action1(p1, p2, p3, p4);
    else
        action2(p1, p2);
}
else
{
    if (z > 2)
        action1(p1, p2, p3, p4);
    else
        action2(p1, p2);
}

我在我的真实项目中,action1和action2实际上是2-3行代码,被调用的那些函数总共需要6-8个参数,因此将它们作为单个函数编写似乎并不正确。

更新:我忘了提及这一点,现在我看到很多答案都行不通。 x()是昂贵的操作,并且具有副作用,因此不应调用两次。

最佳答案

bool condition_satisfied = (x() > 10 ? y > 5 : z > 2);
if (condition_satisfied)
    action1(p1, p2, p3, p4);
else
    action2(p1, p2);

或者,或者,是Roger Lipscombe的answered

关于c++ - 您如何缩短此时间,以使action1和action2在代码中仅显示一次?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/578304/

10-13 00:01