Estoy seguro de que hay un nombre para este antipatrón en alguna parte; Sin embargo, no estoy lo suficientemente familiarizado con la literatura antipatrón como para saberlo.
Considere el siguiente escenario:
or0es una función miembro en una clase. Para bien o para mal, depende en gran medida de las variables de los miembros de la clase. El Programador A aparece y necesita funcionalidades como, or0pero en lugar de llamar or0, el Programador A copia y renombra a toda la clase. Supongo que no llama or0porque, como digo, depende en gran medida de las variables miembro para su funcionalidad. O tal vez es un programador junior y no sabe cómo llamarlo desde otro código. Así que ahora tenemos or0y c0(c para copiar). No puedo culpar por completo al Programador A por este enfoque: todos tenemos plazos ajustados y pirateamos el código para realizar el trabajo.
Varios programadores mantienen or0así que ahora es la versión orN. c0Ahora es la versión cN. Desafortunadamente, la mayoría de los programadores que mantuvieron la clase contenida or0parecían desconocer por completo, lo cual c0es uno de los argumentos más fuertes que puedo pensar sobre la sabiduría del principio DRY. Y también puede haber habido un mantenimiento independiente del código en c. De cualquier manera parece que or0y c0se mantuvieron independientes el uno del otro. Y, alegría y felicidad, está ocurriendo un error en el cNque no ocurre orN.
Entonces tengo algunas preguntas:
1.) ¿Hay un nombre para este antipatrón? He visto que esto sucede tan a menudo que me resulta difícil creer que este no sea un antipatrón con nombre.
2.) Puedo ver algunas alternativas:
a.) Arreglo orNpara tomar un parámetro que especifica los valores de todas las variables miembro que necesita. Luego modifique cNpara llamar orNcon todos los parámetros necesarios pasados.
b.) Intente portar manualmente arreglos de orNa cN. (Eso sí, no quiero hacer esto, pero es una posibilidad realista).
c.) Vuelva orNa cNcopiar a - de nuevo, qué asco, pero lo enumero por completo.
d.) Trate de averiguar dónde cNestá roto y luego repárelo independientemente orN.
La alternativa a parece ser la mejor solución a largo plazo, pero dudo que el cliente me permita implementarla. Nunca tiempo o dinero para arreglar las cosas bien, sino siempre tiempo y dinero para reparar el mismo problema 40 o 50 veces, ¿verdad?
¿Alguien puede sugerir otros enfoques que no haya considerado?
