Del artículo:
En términos más generales, el problema del yoyo también puede referirse a cualquier situación en la que una persona debe seguir cambiando entre diferentes fuentes de información para comprender un concepto.
El código fuente se lee con mucha más frecuencia de lo que se escribe. Por lo tanto, el problema de yoyo, de tener que cambiar entre muchos archivos es una preocupación.
Sin embargo, no , el problema del yoyo se siente mucho más relevante cuando se trata de módulos o clases profundamente interdependientes (que se intercambian entre sí). Es un tipo especial de pesadilla para leer, y es probablemente lo que tenía en mente el entrenador del problema del yoyo.
Sin embargo, sí , ¡es importante evitar demasiadas capas de abstracción!
Todas las abstracciones no triviales, hasta cierto punto, tienen fugas. - La Ley de las abstracciones permeables.
Por ejemplo, no estoy de acuerdo con la suposición hecha en la respuesta de mmmaaa de que " no es necesario que yo-yo a [(visita)] la clase ZipCode para comprender la clase Dirección". Mi experiencia ha sido que lo haces , al menos las primeras veces que lees el código. Sin embargo, como otros han señalado, no son momentos en que una ZipCode
clase es apropiada.
YAGNI (Ya no lo va a necesitar) es un mejor patrón a seguir para evitar el código Lasagna (código con demasiadas capas): las abstracciones, como los tipos y las clases, están ahí para ayudar al programador, y no deben usarse a menos que sean Una ayuda.
Mi objetivo personal es "guardar líneas de código" (y, por supuesto, los "guardar archivos / módulos / clases" relacionados, etc.). Estoy seguro de que hay algunos que me aplicarían el epíteto de "obsesivo primitivo". Me resulta más importante tener un código que sea fácil de razonar que preocuparse por las etiquetas, los patrones y los antipatrones. La elección correcta de cuándo crear una función, un módulo / archivo / clase, o poner una función en una ubicación común es muy situacional. Apunto más o menos a 3-100 funciones de línea, 80-500 archivos de línea y "1, 2, n" para código de biblioteca reutilizable ( SLOC - sin incluir comentarios o repeticiones; normalmente quiero al menos 1 mínimo de SLOC adicional por línea de obligatorio repetitivo).
La mayoría de los patrones positivos han surgido de los desarrolladores que hacen exactamente eso, cuando los necesitan . Es mucho más importante aprender a escribir código legible que tratar de aplicar patrones sin el mismo problema que resolver. Cualquier buen desarrollador puede implementar el patrón de fábrica sin haberlo visto antes en el caso poco común de que sea el adecuado para su problema. He usado el patrón de fábrica, el patrón de observación y probablemente cientos además, sin saber su nombre (es decir, ¿hay un "patrón de asignación variable"?). Para un experimento divertido, vea cuántos patrones de GoF están integrados en el lenguaje JS , dejé de contar después de aproximadamente 12-15 en 2009. El patrón Factory es tan simple como devolver un objeto de un constructor JS, por ejemplo, no es necesario un WidgetFactory
Entonces, sí , a veces ZipCode
es una buena clase. Sin embargo, no , el problema del yoyo no es estrictamente relevante.