假设我有一个带有return的if语句。从效率的角度来看,我应该使用

if(A > B):
    return A+1
return A-1

or

if(A > B):
    return A+1
else:
    return A-1

在使用编译语言(C)或脚本语言(Python)时,我应该选择其中一种还是另一种?


当前回答

来自Chromium的风格指南:

返回后不要使用else:

# Bad
if (foo)
  return 1
else
  return 2

# Good
if (foo)
  return 1
return 2

return 1 if foo else 2

其他回答

如果可能的话,我个人会尽量避免其他阻塞。参见反if运动

而且,他们不收“额外”的费用,你知道:p

“简单胜于复杂”&“可读性为王”

delta = 1 if (A > B) else -1
return A + delta

版本A更简单,这就是我使用它的原因。

如果你在Java中打开了所有的编译器警告,你会在第二个版本中得到一个警告,因为这是不必要的,而且会增加代码的复杂性。

从性能的角度来看,这在Python中并不重要,我认为对所有现代语言都是如此。

归根结底是风格和可读性。第二个选项(if-else块)比第一个更具可读性,而且比一行三元操作可读性强得多。

任何明智的编译器,你应该观察到没有区别;它们应该被编译为相同的机器代码,因为它们是等效的。

来自Chromium的风格指南:

返回后不要使用else:

# Bad
if (foo)
  return 1
else
  return 2

# Good
if (foo)
  return 1
return 2

return 1 if foo else 2