PDA

Ver la Versión Completa : Como Administrar mejoras de Codigo


Neeruu
10-10-2013, 01:32:02
Hola a todos...

Les comento una situación que creo que es mas un problema de administración que otra cosa pero seria bueno poder escuchar sus opiniones...

El tema es que a medida que va pasando el tiempo uno va mejorando y/o optimizando procesos, funciones etc., y cuando hay que empezar un sistema nuevo, por lo menos en mi caso, empiezo diciendo, "Tal parte hay que mirar como esta en el sistema X que esta bien, tal otra hay que ver en el sistema Z que eso quedo bien parametrizado".... pero llega un momento que no recuerdo cual es la ultima y mejor versión de cada cosa....

Es ahí donde les pregunto a ustedes como manejan las mejoras del código?, van armando un historial al cual recurren cada vez que hay que implementar algo nuevo?

La verdad que no se me ocurre mucho como controlar esto....

Otro ejemplo: Tenia un reporte que exportaba a pdf, originalmente lo hacia de una forma, después en otro sistema cambie esa forma, en otro la optimice, en otro la parametrice y después de la puse en otros lados... pero no recuerdo con exactitud cual es la ultima versión de exportación de reporte a pdf con la que estoy trabajando....

Alguna sugerencia de como administrar estas mejoras....

Neeruu
10-10-2013, 01:34:47
Creo que seria interesante algún software que vaya haciendo la documentación de mi sistema de manera rápida... la idea es no perder demasiado tiempo tampoco...

Yo utilizo delphi 2010....

mamcx
10-10-2013, 05:35:48
El primer paso es tener un administrador de código fuente. Git & Mercurial son los mejores al día de hoy. Aparte de sus ventajas naturales, si cada vez que haces un "commit" de los cambios colocas la razón del mismo o que hiciste, tenes una historia no solo en código, sino en los porqués de esos cambios.


Hacer búsquedas en los repositorios se vuelve muy fácil, incluso, buscar en cambios hechos meses atrás.

La 2da es propiamente organizar los proyectos en subproyectos/modulos. Eso es MUY difícil de hacer manualmente o con un software como subversion o JediCVS. Pero con uno distribuido es mas fácil. La "trampa" es subdividir el código en funcionalidades lógicas y separa lo que es general de lo que no.

Pero al contrario de lo que parece, es un error darle MUCHO énfasis a eso. De hecho, hasta se PUEDE ignorar. Solo vale la pena si realmente algo es tan comun y generico que valga la pena (ej: Un modulo de Logs).

Lo que comentas "Antes hacia así, ahora asa" muestra que si tienes un enfoque ágil del desarrollo, no es tan vital preocuparse por rehusar el código. Es MUCHO mejor NO TENER MIEDO de cambiarlo. Mientras progresas como programador, serás mas veloz y eficiente en rehacer la rueda una y otra vez, en vez de seguir con la misma siempre.

Eso te vuelve al punto 1. Si tienes GIT/Mercurial, hacer cambios es sin miedo. Y como tienes historia, sabras el porque y que exactamente hacías antes y como se diferencia del ahora.


Hay varias cosas extras que se pueden hacer. Como aplicar documentación automática del código y otros adornos. Pero, eso puede ser innecesario: La documentación es mas importante sobre lo que es estatico, lo que es una plataforma o framework. Y si eres solo o tienes un equipo de trabajo cerrado, quizas solo sea necesario de en casos específicos.

Mejor aun, es tener unit testings. Y hacer refactoring. Simplificar código. Eliminar lineas. Usar tecnicas mas modernas. Aplicar nuevos paradigmas que ayuden. Estar a la vanguardia.

Neeruu
10-10-2013, 07:24:46
Yo tengo bastante organizado mis proyectos, cada parte de mi software en sub carpetas, todas dentro de una carpeta llamada "Fuentes", tengo unit con funciones algo genericas que las reutilizo...


Lo que comentas "Antes hacia así, ahora asa" muestra que si tienes un enfoque ágil del desarrollo, no es tan vital preocuparse por rehusar el código. Es MUCHO mejor NO TENER MIEDO de cambiarlo. Mientras progresas como programador, serás mas veloz y eficiente en rehacer la rueda una y otra vez, en vez de seguir con la misma siempre.


No me da miedo los cambios, lo que me gustaría saber es que cambios son los últimos...


Por ejemplo, tengo un sistema de facturación que anda de 10.... pero no lleva stock....
Un cliente X me pide un sistema de stock, en el cual me tomo el trabajo de optimizarlo, mejorarlo, etc...
Luego un cliente "Y" me pide un sistema de gestión, donde esta incluido facturación y stock, entonces tomo los dos primeros los integro en el sistema del cliente "Y" con las mejoras que el sistema "Y" tiene...
Luego el cliente que tiene el sistema de facturación me pide agregar stock y para ese entonces ya no se cual es la ultima versión de la parte de stock que esta mas actualizada, mejorada, optimizada, etc...

Se que todas andarán, se que debo probarlas, pero me gustaría tener mas a ciencia cierta cual o que cosa debería usar...

mamcx
10-10-2013, 16:14:55
Bueno, entonces arranca montando git o mercurial (personalmente, me gusta mas mercurial por ser mas simple de operar, aunque git es mas popular).

Sin embargo, lo que pides no veo como automatizarlo mucho. Un CVS te puede ayudar como "base de datos versionada" del código, y facilitar el comparar las versiones de los archivos. Pero a menos que un codigo pueda usarse transparentemente entre proyectos, si hay que adaptarlo mucho no veo como hacerlo sin que igual toque darle una mirada manual.

Tal vez con un esquema de plugins, pero es lo mismo. Si el código no se presta para usarlo sin requerir adaptaciones grandes es el mismo lio a que lo distribuyas entre carpetas/repositorios.