El artículo de TDWTF de hoy comienza con una confesión del autor:
No sabía cuál era el antipatrón For-Case hasta hace relativamente poco tiempo, cuando hubo una serie de artículos que lo condenaban como un antipatrón. Estoy seguro de que probablemente lo haya usado , en algún momento, pero nunca lo supe por su nombre . Se considera como un antipatrón de libro de texto que generalmente implica un malentendido de bucle for, declaraciones de casos, el problema que se está resolviendo o una combinación de los tres.
Luego procede como si el lector, naturalmente, supiera cuál es el antipatrón For-Case sin que se necesite ninguna explicación adicional.
Pero yo no! No he visto la "serie de artículos" de los que habla Remy, y la única referencia significativa que puedo encontrar en Google (además del artículo de Remy) es una publicación de blog de Raymond Chen sobre el antipatrón for-if , que aparentemente está relacionado . Sin embargo, tampoco define el "antipatrón para el caso".
¿Qué es este "antipatrón For-Case" del que hablan estos tipos y qué lo convierte en un antipatrón?
fuente
Respuestas:
El "patrón" se introdujo en un artículo anterior de Daily WTF. La idea básica es que tiene un
for
bucle con uncase
interior que se selecciona en función de lafor
variable de índice del bucle.Suponiendo que la variable de índice no se puede cambiar dentro del bucle, (que no siempre es cierto, en función del idioma que está utilizando,) un poco de análisis demuestra que la ejecución es exactamente el mismo que si ha quitado el
for
y lacase
totalidad y todos los bloques de casos simplemente se ejecutaron secuencialmente.fuente
En pocas palabras, está anidando dos métodos diferentes de control de flujo, lo que hace que el código sea más difícil de entender.
Si ve un bucle for, generalmente asume que las condiciones del bucle controlarán la lógica dentro del bucle. Pero si luego anida una declaración de caso completa en su interior, con toda su propia lógica, eso se va por la ventana.
fuente