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显然已经看到了一些不好的代码.我们都不是吗?我不认为其他有害的,虽然我已经看到它曾用于编写错误的代码.在这些情况下,所有周围的代码也都很糟糕,所以为什么要责怪其他人呢?
Unk*_*own 15
不,它没有害处,这是必要的.
应始终有一个包罗万象的声明.所有开关都应该有一个默认值.ML语言中的所有模式匹配都应该具有默认值.
在一系列if语句之后不可能推断出什么是真实的论点是生活中的事实.计算机是那里最大的有限状态机,在每种情况下列举每一种可能性都是愚蠢的.
如果你真的害怕在else语句中忽略未知错误,那么在那里引发异常真的很难吗?
说其他被认为是有害的有点像说变量或类是有害的.哎呀,甚至说goto是有害的.当然,事情可能会被滥用.但在某些时候,你只需要信任程序员成为成年人,并且要足够聪明.
它归结为:如果你不愿意使用某些东西,因为SO或博客文章上的答案,甚至Dijkstra的一篇着名论文告诉你不要,你需要考虑编程是否适合你.
我不会说它有害,但有时候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.
对我来说,某些流行语言结构本质上不好的整个概念是完全错误的.甚至goto
有它的位置.我见过使用它的Walter Bright和Linus Torvalds之类的非常易读,可维护的代码.只是教程序员可读性和使用常识比任意声明某些结构"有害"要好得多.
归档时间: |
|
查看次数: |
2327 次 |
最近记录: |