Pues no sé si os sorprenderá o no, o incluso alguno de vosotros estais titulados en ingeniería informática y también lo haceis.
Trabajo para una consultora multinacional en un proyecto en el que trabajamos esencialmente con Shell Scripts y programación de BD. Trabajo en la parte de desarrollo, pero alguna vez me ha tocado mantener algún proceso o me he ojeado procesos que han hecho otros de mis compañeros, algunos de ellos ingenier@s informátic@s y otros técnicos de programación. Pues resulta que multitud y multitud de veces me he encontrado que hasta es un mismo proceso(no digamos ya en procesos separados), en varias partes, había grupos de lineas que si no hacían lo mismo, que a veces si que lo hacían, sólo cambiaban en una o dos cosas, os pongo un ejemplo muy básico en pseudocódigo.
if X = 3
a = 1
b = 2
c = 3
d = 4
e = 5
f = 6
end if;
en otra parte del código pero así como os lo digo me vuelvo a encontrar:
if X = 3
a = 1
b = 2
c = 3
d = 4
e = 5
f = 6
end if;
en otra parte me encuentro algó así como:
if X = 5
a = 1
b = 2
c = 3
d = 8
e = 5
f = 4
end if;
etc ...
etc ...
osea que perfectamente esas líneas que tanto se repetían en todo el proceso, se podrian haber metido en un Procedure parametrizado ¿No es cierto?. Esto también lo aplico a las queries que muchas de ellas podrían ser perfectamente parametrizables o incluso hacerse de una manera jerárquica, sin tener porque perjudicar en su rendimiento y así conseguir que en diferentes procesos no se vea una y otra y otra vez la misma mole de select. También me he encontrado multitud de procesos que no disponen de ningún control para evitar hacer miles y miles (os aseguro que no os exagero) de selects iguales, algunas bastante pesadas contra la BD, durante la ejecución de un proceso, y no es que esas selects tan repetitivas se ejecutan por el hecho de que se piense en que los datos puedan cambiar inmediatemente y se quiera coger el dato más actualizado. En general, en la programación que se hace en mi proyecto, no se lleva una tendencia de que ni siquiera cuando se hacen desarrollos nuevos, se tengan en cuenta comandos nuevos (que sean compatibles con el entorno por supuesto), en absoluto, muchos lo hacen siempre por la vía tradicional, como os comentaba sin poner ningún esmero en repetir el menos código posible, es decir centralizar lo máximo posible, ni que el proceso tarde lo menos posible, no. Esto es algo que a mi personalmente me desquicia, porque no ha hecho ese proceso un cualquiera, no, muchas veces lo ha hecho un ingeniero informático que debería de saber mucho en cuanto a optimización ¿No es así?
Cuando he hablado con algunos de esos ingenieros sobre esto, algunos me dicen, más o menos, que no se paran mucho a pensar en eso por falta de tiempos otros me dicen que hacer el código repetitivo es una manera de "atar" al cliente. Pero os aseguro que tener que cambiar en toda una base de datos algun detalle común a muchos procesos, y tener que tocar alomejor más de 30 procesos(packages, pls), alomejor en cada uno de ellos que salga más de 3 veces, es un auténtico suplicio.
Comentaros que simplemente soy Técnico Superior(Desarrollo de Aplicaciones Informaticas), pero si que siempre me esmero, en que el código sea claro, esté optimizado, los procesos tarden lo menos posible, y la verdad es que aunque algunos me digan que no centralizan el código por falta de tiempo, yo considero que lo hago rápido, pero ¿sabeis porque? Porque me he acostumbrado a eso.
¿Creeis que lo que se hace en mi proyecto es una mala práctica de la ingeniería?
¿Porque creeis que gente titulada universitaria hace eso, por dinero, porque no le gusta su trabajo..? ... Porque eso del tiempo y de sujetar al cliente para mi son simplemente excusas...
¿En la ingeniería informática en algún momento el catedrático dice que repetir código asi porque si es algo bueno?
Bueno espero que no os hayais aburrido con este ladrillo je je...
Saludos,