"其他"在Python中被认为有害吗?

dF.*_*dF. 11 python if-statement

回答(S.Lott)关于Python try...else声明的问题:

实际上,即使在if语句中,else也可能以非常糟糕的方式被滥用,从而产生很难找到的bug.[...]

三思而后行:这通常是个问题.除了if语句之外,避免它,甚至考虑记录else-条件以使其明确.

这是一个广泛持有的观点吗?被else 认为有害吗?

当然你可以用它来编写令人困惑的代码,但对于任何其他语言构造都是如此.甚至Python for...else在我看来也是一个非常方便的东西(不那么好try...else).

dwc*_*dwc 30

S.Lott显然已经看到了一些不好的代码.我们都不是吗?我不认为其他有害的,虽然我已经看到它曾用于编写错误的代码.在这些情况下,所有周围的代码也都很糟糕,所以为什么要责怪其他人呢?

  • 同意 - 责备工具而不是使用它们的人太容易了 (7认同)

Unk*_*own 15

不,它没有害处,这是必要的.

应始终有一个包罗万象的声明.所有开关都应该有一个默认值.ML语言中的所有模式匹配都应该具有默认值.

在一系列if语句之后不可能推断出什么是真实的论点是生活中的事实.计算机是那里最大的有限状态机,在每种情况下列举每一种可能性都是愚蠢的.

如果你真的害怕在else语句中忽略未知错误,那么在那里引发异常真的很难吗?

  • @ S.Lott所以不是在else语句中捕获未知条件,而是让它通过并执行函数中剩下的任何代码? (13认同)
  • 不同意.如果你无法真正阐明导致捕获的逻辑,那么它应该永远不会成为一个全能的东西.如果你无法准确定义什么条件导致全面捕获,那么你就会遇到错误. (3认同)

Jas*_*ker 7

说其他被认为是有害的有点像说变量或类是有害的.哎呀,甚至说goto是有害的.当然,事情可能会被滥用.但在某些时候,你只需要信任程序员成为成年人,并且要足够聪明.

它归结为:如果你不愿意使用某些东西,因为SO或博客文章上的答案,甚至Dijkstra的一篇着名论文告诉你不要,你需要考虑编程是否适合你.

  • @ S.Lott - 我想你错过了我的观点.我的观点是,人们需要摆脱"x是坏,不要用它"的心态.特别是在语言结构方面. (4认同)

Mr.*_*ill 7

我不会说它有害,但有时候else语句会让你陷入困境.例如,如果您需要根据输入值进行一些处理,并且只有两个有效的输入值.只检查一个可能会引入一个错误.例如:

The only valid inputs are 1 and 2:

if(input == 1)
{
   //do processing
   ...
}
else
{
   //do processing 
   ...
}
Run Code Online (Sandbox Code Playgroud)

在这种情况下,使用else将允许处理除1以外的所有值,而不应该只处理值1和2.

  • 在这种情况下你应该做其他if(input == 2)然后有一个else {throw InvalidInput} (3认同)

dsi*_*cha 6

对我来说,某些流行语言结构本质上不好的整个概念是完全错误的.甚至goto有它的位置.我见过使用它的Walter Bright和Linus Torvalds之类的非常易读,可维护的代码.只是教程序员可读性和使用常识比任意声明某些结构"有害"要好得多.

  • 我认为称其他"有害"的做法太过分了.我只是说要思考并使条件明确.我没有说"从不使用它". (2认同)