什么是案例反模式?


17

今天的TDWTF文章以作者的告白开头:

直到最近,我才知道什么是For-Case反模式,当时有大量文章谴责它为反模式。我确定在某个时候我可能已经使用过它,但是我从来不知道它的名字。它被认为是教科书的反模式,通常意味着对for循环,case语句,要解决的问题或这三者的某种组合的误解。

然后,他继续前进,就好像读者自然会知道For-Case反模式是什么,而无需任何进一步的解释。

但是我没有!我还没有看过Remy谈论的“大量文章”,而且我唯一可以在Google上找到的重要参考文献(除了Remy的文章)是Raymond Chen博客文章,内容是关于if-if反模式的问题。 。不过,他也没有定义“针对案例的反模式”。

这些家伙在谈论的“案例反模式”是什么,又是什么使它成为反模式?



Answers:


23

“模式”是在早期的每日WTF文章中介绍的。 基本思想是您有一个for循环,循环case内部有一个循环,该for循环根据循环索引变量进行选择。

假设不能在循环内更改index变量(这并不总是正确的,具体取决于您使用的是哪种语言),一些分析表明执行与删除forcase完全删除完全相同。并且所有的case块只需按顺序执行即可。


0

简而言之,您要嵌套两种不同的流控制方法,这会使代码更难以理解。

如果看到for循环,则通常假定循环条件将控制循环中的逻辑。但是,如果您随后将一个完整的case语句嵌套在内部,并具有其自己的逻辑,那么该语句将超出范围。


1
嵌套两个控制流结构没有内在的错误。有时您需要。但是在这种情况下,它是没有用的。
恢复莫妮卡

“这使代码更难理解。” 男孩,那是一天,一月,一年的轻描淡写。
彼得·罗威尔
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.