gpt4 book ai didi

c++ - 不用 goto 重构代码

转载 作者:行者123 更新时间:2023-11-30 01:10:04 28 4
gpt4 key购买 nike

我有点困惑。如何在没有 goto 的情况下重构此语句?

if(first_expression)
{
// ....
if(second_expression)
{
// ....
}
else
{
goto jump_out;
}
}
else
{
jump_out:
// ....
}

这样好吗?

bool expressionFailed = false;
if(first_expression)
{
if(second_expression)
{
// ....
}
else
expressionsFailed = true;
}
else
expressionsFailed = true;

if(expressionsFailed)
{
// ....
}

我不能使用&&,因为if(first_expression)之后的代码需要在second_expression = false时执行

最佳答案

我对你的代码一无所知,但你可以这样做:

void on_error ()
{
//error stuff
}

int main ()
{
if(first_expression)
{
if(second_expression)
{
// ....
}
else
on_error();
}
else
on_error();
}

甚至更好:

void job()
{
if(first_expression)
{
if(second_expression)
{
// ....
}
else
throw;
}
else
throw;
}

int main () {
try
{
job();
}
catch ()
{
// err stuff
}
return 0;
}

关于c++ - 不用 goto 重构代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38864466/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com