我经常编写如下代码
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;
}
这是额外的代码,看起来很愚蠢。我的问题是,管理当局和牧师对这种情况有何看法?
答案 0 :(得分:2)
当然。你基本上写了一个保护条件,会阻止你尝试执行不必要的逻辑。没关系。
与许多事情一样,这是个人喜好,但我更喜欢看到代码写的像你的第二个例子的简单案例,以及第三个例子,用于更复杂的案例。但这并不代表任何错误。
答案 1 :(得分:2)
不仅可以,Spartan Programming 甚至鼓励。根据Spartan编程 - 更短更简单的代码更好,并且您通过快速终止(以及其他方式)实现快速终止并尽可能避免else
语句
尽量减少使用控制权:
(2)简化早期
return
的条件。(4)简化早期退出的迭代逻辑(通过
return
,continue
和break
语句。
P.S。 It seems @Jeff Atwood also likes the spartan programming way
答案 2 :(得分:0)
对于else
子句的if
子句没有自然终止(例如,有return
或throw
语句,在技术上没有任何错误),它只是没用。
有几种风格指南反对它(并且一些IDE和分析工具可能会产生警告以支持这些指南),但最终,它只是一种偏好。
答案 3 :(得分:0)
第二个例子对我来说很好,因为如果第一个语句中的代码更新如下,它将防止意外行为:
bool myFunct (...)
{
if (something)
{
// ... stuff
if (something_else) return false;
}
else
{
// .... more code ....
}
}