如果您有一个 return 或 throw 在 IF 语句中,是否可以不使用 ELSE 语句?
Is it ever okay to not use an ELSE statement if you have a return or throw inside the IF statement?
我经常写这样的代码
bool myFunct (...)
{
if (something)
{
return false;
}
// .... more code ....
}
备选方案是
bool myFunct (...)
{
if (something)
{
return false;
}
else
{
// .... more code ....
}
}
当然,那个else
块是不必要的,因为前面的return
意味着第一个到达else
语句就相当于在里面。还有一个事实是,为了让编译器满意,我经常不得不将第二个实现的结构更改为
bool myFunct (...)
{
bool retval = true;
if (something)
{
retval = false;
}
else
{
// .... more code ....
}
return retval;
}
这是额外的代码,看起来很愚蠢。我的问题是,对于这种情况,管理当局和牧师怎么说?
当然可以。您基本上是在编写一个保护条件,以阻止您尝试执行不必要的逻辑。没关系。
与许多事情一样,这是个人喜好,但我更喜欢看到像您的第二个示例那样编写简单案例的代码,以及更复杂案例的第三个示例。不过,这并不意味着任何错误。
对于不会自然终止的 if
子句(例如,具有 return
或 throw
语句),使用 else
子句在技术上没有任何问题,没用。
一些风格指南反对它(并且一些 IDE 和分析工具可能会产生警告来支持这些指南),但最终,它只是一种偏好。
第二个示例对我来说很好,因为如果第一条语句中的代码像下面这样更新,它将防止意外行为:
bool myFunct (...)
{
if (something)
{
// ... stuff
if (something_else) return false;
}
else
{
// .... more code ....
}
}
不仅可以,甚至在Spartan Programming中受到鼓励。根据 Spartan Programming - 更短和更简单的代码更好,你可以通过快速终止和尽可能避免 else
语句
来实现它(以及其他方式)
在尽量减少使用控制的情况下:
(2) Simplifying conditionals with early return
.
(4) Simplifying logic of iteration with early exits (via
return
, continue
and break
statements).
P.S。 It seems @Jeff Atwood also likes the spartan programming way
我经常写这样的代码
bool myFunct (...)
{
if (something)
{
return false;
}
// .... more code ....
}
备选方案是
bool myFunct (...)
{
if (something)
{
return false;
}
else
{
// .... more code ....
}
}
当然,那个else
块是不必要的,因为前面的return
意味着第一个到达else
语句就相当于在里面。还有一个事实是,为了让编译器满意,我经常不得不将第二个实现的结构更改为
bool myFunct (...)
{
bool retval = true;
if (something)
{
retval = false;
}
else
{
// .... more code ....
}
return retval;
}
这是额外的代码,看起来很愚蠢。我的问题是,对于这种情况,管理当局和牧师怎么说?
当然可以。您基本上是在编写一个保护条件,以阻止您尝试执行不必要的逻辑。没关系。
与许多事情一样,这是个人喜好,但我更喜欢看到像您的第二个示例那样编写简单案例的代码,以及更复杂案例的第三个示例。不过,这并不意味着任何错误。
对于不会自然终止的 if
子句(例如,具有 return
或 throw
语句),使用 else
子句在技术上没有任何问题,没用。
一些风格指南反对它(并且一些 IDE 和分析工具可能会产生警告来支持这些指南),但最终,它只是一种偏好。
第二个示例对我来说很好,因为如果第一条语句中的代码像下面这样更新,它将防止意外行为:
bool myFunct (...)
{
if (something)
{
// ... stuff
if (something_else) return false;
}
else
{
// .... more code ....
}
}
不仅可以,甚至在Spartan Programming中受到鼓励。根据 Spartan Programming - 更短和更简单的代码更好,你可以通过快速终止和尽可能避免 else
语句
在尽量减少使用控制的情况下:
(2) Simplifying conditionals with early
return
.(4) Simplifying logic of iteration with early exits (via
return
,continue
andbreak
statements).
P.S。 It seems @Jeff Atwood also likes the spartan programming way