Cuando un programador termina de desarrollar e integra su código al repositorio común (probablemente lo que más se utiliza son los basados en Git), existe una instancia en que se “solicita una integración” (en Github esto sería un “pull request”, en otras sería un “merge request”). Al solicitar la integración, otro integrante del equipo, puede realizar una revisión de código y generar una discusión sobre lo que se está integrando. Al finalizar esta discusión y realizar los ajustes que hagan falta, el código finalmente se integra. Esto hoy no existe en el mundo GeneXus como parte de la herramienta de gestión de fuentes (GeneXus Server). Entonces, ¿cómo se puede hacer revisión de código GeneXus?
Esta es una instancia muy importante, pero no tanto desde el punto de vista de control, donde hay un super-experto que revisa el código de todo el resto en busca de bugs o fallas de diseño. Lo más rico es que así tenemos es una instancia de trabajo colaborativo, donde al menos uno en el equipo (podrían ser más, incluso todos) van a mirar el código que se está integrando, van a poder conocerlo/opinar/sugerir mejoras/ aprender como otros solucionaron un problema y, quizás, detectar bugs.
Mientras preparábamos la charla del último Encuentro GeneXus sobre cultura DevOps en GeneXus con Laura Aguiar, me comentaba que recuerda solo dos ocasiones en las que al hacer una revisión de código logró prevenir un bug. Este no es el beneficio principal. Ella sí considera que con las revisiones han logrado otros beneficios:
- Encontrar oportunidades de mejora. Por ejemplo, porque el código que se estaba integrando “me parece que está en este otro lado” o porque “quizá si lo resolvemos por este otro modo ya resolvemos este otro problema y matamos dos pájaros de un tiro”, o así logramos que el código quede más legible.
- Siempre implica una oportunidad de aprendizaje, ya sea de cómo otros solucionaron algo o simplemente de la solución que estamos construyendo en conjunto.
- Cuando alguna vez le tocó modificar o corregir código que ya había revisado era infinitamente más fácil. Esto posibilita entonces a que más gente pueda mantener las piezas de código en vez de “este issue lo arregla Fulano porque él lo codificó y solo él sabe cómo modificar esto”.
En GeneXus no existen aún herramientas que nos faciliten el code-review automático y obligatorio, pero igual se puede hacer. Simplemente es cuestión de proponérselo, de plantearlo como parte de la metodología de trabajo, como parte del Definition of Done. Para ver más ideas de cómo hacer revisión de código, leer este artículo sobre las ventajas y este sobre buenas prácticas.
Hay una herramienta que se estuvo desarrollando en la comunidad GeneXus hace poco más de un año para esto. En este proyecto estuvieron Laura Aguiar, Enrique Almeida y algunos más, donde acá habían comentado que estarían trabajando en esto. Hace unos años David Giordano también había publicado algunas ideas por acá.
Esta herramienta permite hacer el proceso de code-review en Github (originalmente lo hacía en Phabricator). la misma se puede usar y probablemente aporta en algunos sentidos y complica en otros. Si bien se reconoce la importancia de la herramienta, no solo para prevenir bugs sino mejorar la calidad del código y democratizar el conocimiento, últimamente no se ha avanzado mucho con el desarrollo de la misma. Sería genial si GeneXus agrega funcionalidades nativas en GeneXus y en GeneXus Server como para brindar facilidades para adoptar estas metodologías, pero de nuevo, la revisión de código GeneXus la podemos hacer sin herramientas.
Esto es parte de generar una cultura DevOps también en equipos GeneXus, colaborando y generando los espacios de conversación adecuados en los momentos adecuados.
Te dejo también este link a dos charlas de Enrique en el 2016 que creo que tienen mucho que ver con el tema.
Dejo tambien un link a KBCodeReview (un prototipo de herramienta para hacer esto)
https://wiki.genexus.com/commwiki/servlet/wiki?34137,KBCodeReview,
Gracias Enrique!
Enrique como estas? quise consultar el link de kbcodereview y no trae videos y los links no andan ninguno, si tenes información podes mandarme algo? donde trabajo estamos pensando implementar algo que revise código y tenemos que evaluar distintas posibilidades.
mi mail es: Leandro.g.torres@gmail.com
desde ya gracias!!!!
Leandro:
Como te va?. A mi me funcionan bien los link y veo los videos.
Que problema estas teniendo?. Te da algun error?
Deberias permitir Flash