stringtranslate.com

problema yo-yo

En el desarrollo de software , el problema del yo-yo es un antipatrón que ocurre cuando un programador tiene que leer y comprender un programa cuyo gráfico de herencia es tan largo y complicado que el programador tiene que seguir cambiando entre muchas definiciones de clases diferentes para poder seguirlo. el flujo de control del programa. Se ve con mayor frecuencia en el contexto de la programación orientada a objetos . El término proviene de comparar la atención que rebota del programador con el movimiento de arriba a abajo de un yo-yo de juguete . Taenzer, Ganti y Podar describieron el problema por su nombre y explicaron: "A menudo tenemos la sensación de montar en un yoyo cuando intentamos entender uno de estos árboles de mensajes". [1]

La mayoría de las prácticas de programación orientada a objetos recomiendan mantener el gráfico de herencia lo más superficial posible, en parte para evitar este problema. También se prefiere fuertemente el uso de composición en lugar de herencia , aunque esto aún requiere que un programador tenga en mente múltiples definiciones de clases a la vez.

Las jerarquías profundas son un olor a código y un síntoma de subclasificación para la reutilización de código . [2]

De manera más general, el problema del yo-yo también puede referirse a cualquier situación en la que una persona debe alternar constantemente entre diferentes fuentes de información para comprender un concepto.

Existen varias técnicas de refactorización de código para aplanar estas jerarquías sin comprometer el comportamiento general.

Las técnicas de diseño orientado a objetos, como la documentación de capas de la jerarquía de herencia, pueden reducir el efecto de este problema, ya que recopilan en un solo lugar la información que el programador debe comprender.

Ver también

Referencias

  1. ^ Taenzer, David; Ganti, Murthy; Podar, Sunil (1989). "Problemas en la reutilización de software orientado a objetos" (PDF) . ECOOP 89: Actas de la Tercera Conferencia Europea sobre Programación Orientada a Objetos, 1989 . Prensa de la Universidad de Cambridge. págs. 33–34 . Consultado el 22 de marzo de 2013 .
  2. ^ "Code Smell 11: subclasificación para la reutilización de código". nodo hash. 30 de octubre de 2020 . Consultado el 18 de enero de 2021 .