在Python中使用"else"是否有害?
在一个关于Python的try...else
语句的问题的回答中,S.Lott提到:
其实,即使是在if语句中,
else:
也可能被滥用,导致非常糟糕的错误,这些错误很难找到。 [...]在使用
else:
时要三思而后行。它通常会带来问题。除了在if语句中,尽量避免使用,甚至在那种情况下,也要考虑清楚地记录else
的条件,以便让它变得明确。
这是一个广泛的看法吗?else
被认为是有害的吗?
当然,你可以用它写出让人困惑的代码,但这对任何其他语言的结构都是一样的。即使是Python的for...else
在我看来也是非常有用的(而try...else
就没那么好了)。
13 个回答
7
我不会说使用else语句是有害的,但有时候它可能会让你陷入麻烦。比如说,当你需要根据输入的值进行处理,而这个输入值只有两个有效的选项时。如果你只检查其中一个选项,就可能会引入错误。
The only valid inputs are 1 and 2:
if(input == 1)
{
//do processing
...
}
else
{
//do processing
...
}
在这个例子中,使用else会让所有除了1以外的值都被处理,而实际上应该只处理值为1和2的情况。
15
不,这并没有害处,反而是必要的。
总是应该有一个“兜底”的语句。所有的选择语句都应该有一个默认选项。在ML语言中,所有的模式匹配也应该有一个默认选项。
认为在一系列的if语句之后很难判断什么是真的,这是一种生活中的常态。计算机是最大的有限状态机,逐一列举每种可能性在任何情况下都是不现实的。
如果你真的担心在else语句中会有未知的错误被忽视,那在这里抛出一个异常真的那么难吗?
31
S.Lott 显然见过一些糟糕的代码。我们大家不都是这样吗?我并不认为使用 else 是有害的,尽管我见过有人用它写出糟糕的代码。在那些情况下,周围的代码也都很糟糕,所以为什么要把责任全推给 else 呢?