Hubo un periodo de 4 meses donde deje de programar Xeno para dedicarme a otros afanes de la vida, pero desde unas 2 semanas atras que encontre un buen tiempo para continuar con el juego. Dentro de la programacion encontre un problema que se resolvia cambiando mucho codigo o creando una especie de parche para el problema. Esto es un pequeño resumen de cuando necesiten reestructurar su codigo y no sepan como hacerlo.
El Problema,Planetas y Regiones:
Antes de la ultima actualización, los mapas donde jugabamos, los llamaba planetas en mi base de datos y en mi codigo. Cada planeta tenia un mapa del planeta donde podriamos movernos. Ningun problema hasta ahi y codificaba feliz de la vida.
Antes: Un planeta con su mapa
Con los nuevos requerimientos (autoimpuestos, vaya que tengo algo de disciplina), las cosas cambiaron. Ahora un planeta podria tener regiones y estas regiones tendrian un mapa, osea los antiguos planetas vendrian a ser las nuevas regiones.
Ahora: El planeta puede tener regiones y estas regiones son mapas
El problema es el siguiente: Que hago con todo mi codigo y mi base de datos? Tengo que crear nuevas clases que sean referencia a los nuevos planetas pero ya tengo esas clases hechas y ademas referencian a las regiones! Y los nombres de mis funciones que antes eran digamos getPlanets(), ahora deberian de ser getRegions(), sin contar mis parametros, variables, defines y etc.
2 Caminos, 1 solo resultado
a) El facil y escabroso: Simplemente todo lo nuevo referente al planeta, se llamara algo asi como superPlanet o uberPlanet, en fin algo encima de lo que ahora se conoce como planeta. Resultado, un sentimiento de que algo esta mal mientras programo, como un sabor amargo. Pero algo muy comun en varios proyectos de software. La base de datos sigue igual.
b) El dificil y satisfactorio: La otra opcion es la refactorizacion masiva de TODO mi codigo. Con ayuda de alguna herramienta busco y reemplazo las cadenas que contengan planets, Planets,PLANET, etc y lo reemplazo por regions,Regions,REGION, etc. ¿Refactorizar la Base de Datos? Je manualmente, no conozco herramientas que permitan buscar nombres de campos y refactorizarlos.
Manos a la Obra:
Esta solucion, aunque es solo para PHP y en general para proyectos con pocas personas es la que me resulto mas facil de realizar, les pongo mi metodologia para que si alguna ves esten con este mismo problema, tengan la solucion a la mano!.
a) Obtener Dreamweaver y su poderosa busqueda: Yo trabajo con Aptana, pero si hay algo que odio del mismo es su opcion de busqueda de caracteres, solo puedes buscar en la misma pagina que tienes abierta, y encima no busca bien, en cambio Dreamweaver siempre fue un experto en estas lindes, con una sola ventana puedo encotrar todas las cadenas en mi Proyecto Completo. No solo funciona para PHP, si no que tambien para CSS y Javascript, genial!.
b) Saca un Backup - Obligatorio!: Realmente no avances nada si antes no haz sacado un backup, quizas este de mas decirlo pero estaras mas feliz de hacerlo.
c) Buscar de Mas a Menos: En mi caso empece buscando la palabra planet, lo que encontre fue que ademas de planet, tenia cadenas llamadas -planetas. Si hubiera buscado planet y lo reemplazaba por region, entonces todas las palabras planetas, terminarian como regionas, que se puede hacer al respecto?. Primero busquen las palabras mas grandes y despues continuen con las mas pequeñas, ademas diferencien entre mayusculas y minusculas, te va a dar menos dolores de cabeza.
El poderoso Dreamweaver con la configuracion necesaria para la refectorizacion
d) Arreglar la Base de Datos: Solo queda cambiar manualmente todas las referencias a Planet, no es mucho felizmente, pero si existiera alguna herramienta que facilitase esto, estaria muy contento
Y listo esa seria mi receta. ¿Ustedes tienen alguna forma novedosa de mantener o refactorizar el codigo?
Pues yo te habría recomentado que utilizases Notepad++. Sus opciones de búsqueda y reemplazo son notoriamente superiores a las del Dreamweaver...
Notepad++? Pues no lo conocia pero sera motivo de prueba!. Este fin de semana lo pruebo haber como se me porta je gracias por el consejo XafiloX!