La programadora Sandi Metz sostiene que la duplicación de código resulta mucho más barata que una abstracción mal planteada, una afirmación popularizada en su charla de RailsConf 2014 "All the little things". El problema, describe, sigue un patrón reconocible: una programadora identifica código duplicado, lo extrae en una abstracción y todo parece correcto; con el tiempo, surgen nuevos requisitos que no encajan del todo, así que otra persona añade parámetros y condicionales para que la abstracción sirva en todos los casos. Tras varias iteraciones, la abstracción original se convierte en un procedimiento lleno de ramas que mezcla ideas distintas, resulta difícil de entender y aún más de modificar. La presión por conservar el código existente se alimenta de la falacia del coste irrecuperable: cuanto más enrevesado parece, más importante se presupone. Metz propone, en ese punto, dar marcha atrás: reintroducir la duplicación expandiendo el código en cada llamante, dejar que cada uno ejecute solo la parte que necesita y eliminar la abstracción junto con sus condicionales. A partir de ahí se pueden reidentificar duplicaciones reales y extraer nuevas abstracciones. La autora acompaña el ensayo con el anuncio de la segunda edición de "99 Bottles of OOP", ampliada un 50 % respecto a la primera y disponible en versiones con ejemplos en Ruby, JavaScript y PHP, y en formatos epub, kepub, mobi y pdf. La idea central: cuando una abstracción se revela incorrecta, el camino más rápido es retroceder, y eso no es rendirse, sino avanzar en una dirección mejor.
La abstracción equivocada: por qué duplicar puede ser mejor que abstraer
Fuentes:
The Wrong Abstraction
