En un programa orientado a objetos: ¿Cuánta abstracción es demasiado? ¿Cuánto es justo?¿Cuánta abstracción es demasiado?
Siempre he sido un tipo loco y perno. Entendí el concepto detrás de altos niveles de encapsulación y abstracción, pero siempre sentí instintivamente que agregar demasiado confundiría el programa.
Siempre traté de fotografiar para una cantidad de abstracción que no dejaba clases o capas vacías. Y en caso de duda, en lugar de agregar una nueva capa a la jerarquía, trataría de encajar algo en las capas existentes.
Sin embargo, recientemente me he encontrado con sistemas más abstractos. Sistemas en los que todo lo que podría requerir una representación más adelante en la jerarquía obtiene uno por adelantado. Esto lleva a muchas capas vacías, lo que al principio parece un mal diseño. Sin embargo, pensándolo bien, me he dado cuenta de que dejar esas capas vacías te da más lugares para engancharte en el futuro sin mucha refactorización. Le deja una mayor capacidad para agregar una nueva funcionalidad sobre la anterior sin hacer casi tanto trabajo para ajustar la anterior.
Los dos riesgos de esto parecen ser que podría obtener las capas que necesita incorrectas. En este caso, uno terminaría necesitando una refactorización sustancial para extender el código y aún tendría toneladas de capas nunca usadas. Pero dependiendo de cuánto tiempo dediques a las abstracciones iniciales, la posibilidad de arruinarlo y el tiempo que podrías ahorrar más adelante si lo haces bien, puede que valga la pena intentarlo.
El otro riesgo que se me ocurre es el riesgo de sobrepasarlo y no necesitar todas las capas adicionales. ¿Pero eso es realmente tan malo? ¿Son las capas de clase extra realmente tan caras que es una gran pérdida si nunca se usan? El mayor gasto y pérdida aquí sería el tiempo que se pierde en la delantera al aparecer las capas. Pero gran parte de ese tiempo todavía podría guardarse más adelante cuando se pueda trabajar con el código abstraído en lugar de con un código de bajo nivel.
Entonces, ¿cuándo es demasiado? ¿En qué punto las capas vacías y las abstracciones adicionales "podrían necesitar" se vuelven excesivas? ¿Qué tan pequeño es muy poco? ¿Dónde está el punto dulce?
¿Existe alguna regla de oro confiable que hayas encontrado en el transcurso de tu carrera que te ayude a juzgar la cantidad de abstracción necesaria?
¿Por cuánto tiempo es un pedazo de cuerda ??? ;) – Goz
Debe ser CW en mi humilde opinión, ya que no tiene ** una ** respuesta –
@Binary Worrier Hecho. –