【发布时间】:2014-01-20 15:19:46
【问题描述】:
在重构一些代码时,我经常会遇到这种情况:
bool highLevelFunc foo()
{
// ...
bool result = LesserLevelFunc();
if (!result) return false;
// ... Keep having fun if we didn't return
}
有没有什么办法可以让它更性感一点,不那么冗长?当然没有任何开销或陷阱。
我能想到一个宏
#define FORWARD_IF_FALSE(r) if (!r) return r;
bool highLevelFunc foo()
{
// ...
FORWARD_IF_FALSE(LesserLevelFunc());
// ...
}
还有什么更好的,即没有预处理器宏?
【问题讨论】:
-
@MitchWheat 他只想在函数失败时退出函数。如果不是假的,他想继续。
-
@MitchWheat 在原始示例中,真实条件不会“返回”。
-
很难说没有看到更多的代码...
-
@MitchWheat 我认为这三个点会很有意义。当然,我只想在子函数失败时返回:)
-
您的
FORWARD_IF_FALSE计算两次LesserLevelFunc(如果为假)。它错过了r周围的括号。
标签: c++ syntactic-sugar