Creación de una lista de comprobación para la revisión del código: Guía práctica
El autor de este artículo es el experto en tecnología Pieter Murphy. Experto invitado — Vitali Vishneuski, Director de entregas, EngX Experto.
Según buenas prácticas y la necesidad de garantizar que el código funciona como se espera, los desarrolladores suelen comprobar el trabajo de los demás antes de fusionarlo con el código principal.
Este proceso se denomina Revisión del Código. Y a veces incluye una lista de comprobación. ¿En qué consiste? Le pregunté a Vitali VishneuskiDirector de entrega yEngXexperto, para ayudarme a definir mejor una lista de comprobación de revisión de código:
"En el caso mas comúnuna revisión del código es una comprobación entre iguales del código para asegurarse de que funciona y es de alta calidad antes de fusionarlo con la base de código principal.
Para ello, se elabora una lista de lo que hay que comprobar. Esta lista sirve como criterio para garantizar que los desarrolladores cumplen ciertas normas de calidad y mantenimiento antes de fusionarse con el código base principal. Es lo que llamamos la lista de comprobación de la revisión del código.
Puede ser una lista compartida o personal, pero siempre debe ser coherente con los principios, convenciones y normas acordados en el equipo/proyecto/producto/empresa."
Así pues, una lista de comprobación para la revisión del código (CRC) es un conjunto de reglas que los revisores siguen durante la revisiónentre otros aspectos que tratamos a continuación.
¿Quieres saber más? Acompáñame a explorar el tema.
Razones para utilizar una lista de comprobación de revisión de código
Para averiguar por qué una lista de comprobación para la revisión del código es importante fijarse en qué se centran la mayoría de las listas de comprobación recomendadas.
Estas son algunas de las razones por las que los desarrolladores implementan y utilizan listas de comprobación para revisar el código:
1. Racionalizar el proceso
Las revisiones pueden ser frenéticas, dependiendo del tamaño del equipo y de la complejidad del trabajo presentado. Las listas de comprobación facilitan a los desarrolladores una metodología clara para revisar el código, lo que reduce el tiempo invertido.
2. Optimización de recursos
A las organizaciones les gusta ahorrar recursos, sobre todo mediante procesos eficientes. Una lista de comprobación para la revisión del código agiliza el proceso, garantizando que una revisión no sea costosa ni lleve mucho tiempo.
3. Coherencia en las revisiones
Las listas de comprobación garantizan que el código se evalúe utilizando las mismas normas. Así se garantiza la uniformidad de las prácticas de codificación y la calidad, independientemente del miembro del equipo encargado de escribirlo.
4. Incorporación eficaz
Una lista de comprobación puede ofrecer a los nuevos miembros del equipo una visión de cómo el equipo al que se unen realiza las revisiones del código y las expectativas, acelerando el proceso de integración.
5. Evaluación objetiva
El uso de listas de comprobación es una forma recomendada de reducir los prejuicios subjetivos que puedan tener los desarrolladores, ya que proporciona criterios claros y objetivos para la evaluación, garantizando que la retroalimentación sea equilibrada y justa.
6. Transferencia de conocimientos
Como parte de las metodologías Agile de desarrollo, las listas de comprobación pueden utilizarse para enseñar a los desarrolladores las mejores prácticas, señalar los errores más comunes y promover la mejora continua, de forma repetible.
Vitali señala que, además de facilitar la revisión, una de las principales razones por las que tenemos listas de comprobación es “hacer de la revisión del código un proceso coherente y predecible”, y añade que los desarrolladores “preparan nuestro trabajo para que sea coherente con la solución antes de integrarlo”.
“Una lista de control hace más accesible la revisión, pero no es una motivación para aplicarla”, subraya.
Lista de comprobación básica para la revisión del código
lista de comprobación básica para la revisión del código que cubre las comprobaciones más importantes:Como mínimo, necesita una
Limpieza y legibilidad. Asegúrate de que tu trabajo está bien estructurado, es comprensible, está correctamente documentado y sigue las normas de estilo habituales.
Reutilización y dependencias. Presta atención a los problemas de duplicación y dependencia común.
Pruebas y tratamiento de errores. Verifica la presencia de pruebas funcionales, adecuadas y un tratamiento correcto de los errores.
Rendimiento y seguridad. Evalúa si su afecta negativamente al rendimiento del sistema y si no contiene amenazas potenciales para la seguridad.
Cumplimiento de requisitos y tareas. Comprueba si el código cumple los objetivos y requisitos establecidos en las especificaciones o en el ticket descrito.
Le pedí a Vitali que me contara un poco cómo era el proceso al principio de su carrera profesional, que se ha alargado ya más de dos décadas, y si tenía que utilizar una lista de control de revisión ya hecha.
Esto es lo que tenía que decir: "No, porque empecé mi carrera en 1999. Kent Ben publicó su Extreme Programming Explained en octubre de 1999. Conocí XP, incluida la Revisión de Código, unos años más tarde. Luego fue Clean Code: A Handbook of Agile Software Craftsmanship, de Robert C. Martin, en la década de 2010. Las listas de comprobación vinieron después".
A medida que la diligencia y las mejores prácticas se han estandarizado, las listas de comprobación no sólo son fáciles de conseguir, sino que todos los desarrolladores tienen flujos de trabajo internos quetienen en cuenta las revisiones.
Le pedí a Vitali que me contara un poco cómo era el proceso al principio de su carrera profesional, que se ha alargado ya más de dos décadas, y si tenía que utilizar una lista de control de revisión ya hecha.
Esto es lo que tenía que decir: “No, porque empecé mi carrera en 1999. Kent Ben publicó su Extreme Programming Explained en octubre de 1999. Conocí XP, incluida la Revisión de Código, unos años más tarde. Luego fue Clean Code: A Handbook of Agile Software Craftsmanship, de Robert C. Martin, en la década de 2010. Las listas de comprobación vinieron después”.
A medida que la diligencia y las mejores prácticas se han estandarizado, las listas de comprobación no sólo son fáciles de conseguir, sino que todos los desarrolladores tienen flujos de trabajo internos quetienen en cuenta las revisiones.
Los temas definitivos Aconsiderar para la revisión del código
Aunque las listas definitivas más completas tienen casi todo lo que se pueda imaginar, siendo realistas, la mayoría de las organizaciones que necesitan listas de comprobación para la revisión del código sólo puede permitirse centrarse en los aspectos más pertinentes del proceso.
Mi lista de control definitiva destaca las comprobaciones más críticas e indispensables que debe realizar durante el proceso de revisión del código para liberarlo con confianza. Incluye algo más que la lista de comprobación básica y profundiza en el proceso.
Vitali no estaba de acuerdo conmigo en que una lista de comprobación sea crucial para el proceso. Como él dijo: “¡Es solo leer código!”.
Sin más preámbulos, aquí está la lista de comprobación.
1. Funcionalidad
Comprobar que el código hace lo que se supone que debe hacer en la aplicación. Verificar que cumple los requisitos especificados en el proyecto. Algunas de las preguntas más habituales para evaluar la funcionalidad son
1.1. ¿Se han cumplido todos los requisitos?
1.2. ¿Existen casos extremos y posibles escenarios de error que una nueva adición no pueda manejar?
1.3. ¿Se ajusta su desempeño a las especificaciones del proyecto?
2. Cumplimple los estándares de codificación, legibilidad y mantenimiento
Asegurate de que lo que envías se ajusta a las convenciones de codificación establecidas. Comprueba que tienes el formato adecuado, está bien organizado y es fácil de leer.
Unas convenciones de nomenclatura coherentes y una sangría estructurada contribuyen a crear un documento lógicamente estructurado, legible y un codigo base fácil de leer. Incluir comentarios es esencial para ayudar a los compañeros a entender el propósito y la funcionalidad del código, sobre todo en las secciones más complejas.
El cumplimiento de las normas de codificación es crucial para mantener la integridad y calidad de una base de código. Un proceso de revisión basado en listas de comprobación, ya sea establecido por una organización o personalizado para un proyecto concreto, proporciona un marco unificado que los desarrolladores deben seguir.
El cumplimiento de estas normas no sólo garantiza una revisión exhaustiva, sino que también minimiza la posibilidad de errores en el código base.
El mantenimiento es otro aspecto crítico. Un código fácil de entender, bien documentado y estructurado de forma coherente es mucho más fácil de mantener a lo largo del tiempo.
Esto reduce el esfuerzo necesario para futuras actualizaciones, correcciones de errores y adiciones de funciones, lo que en última instancia prolonga la vida útil del software y lo hace más adaptable a los requisitos cambiantes.
Al centrarse en la mantenibilidad, se asegura de que el resultado siga siendo accesible y manejable tanto para los desarrolladores actuales como para los futuros.
3. Estructura y diseño del código
Comprueba si tu trabajo sigue las directrices arquitectónicas y los patrones de diseño establecidos. Comprueba que las funciones y clases tienen un tamaño y una complejidad razonables. Una lista de comprobación para la revisión de la calidad del código permite a los desarrolladores asegurarse de que lo que escriben es modular y mantenible.
Comprobar la arquitectura implica responder a preguntas como:
3.1 Modularidad y separación de intereses
3.2 ¿Se pueden configurar los parámetros pertinentes?
3.3 Escalabilidad
3.4 Mantenimiento
3.5 Gestión de la dependencia
3.6 Interoperabilidad
3.7 Tratamiento de errores
Revisar el diseño y la estructura del código haciendo centrándose en la seguridad, la configurabilidad y la gestión de las funciones es una excelente forma de que los desarrolladores evalúen la solidez y flexibilidad de la arquitectura, detecten posibles riesgos o deficiencias y tomen decisiones informadas para mejorar la capacidad de mantenimiento del código.
4. Rendimiento y eficacia
Comprueba si hay bucles innecesarios, algoritmos subóptimos o fugas de memoria que puedan dificultar su rendimiento. Entre las preguntas para centrarse en el rendimiento y la eficiencia se incluyen:
4.1. ¿Son adecuadas y eficientes las estructuras de datos y los algoritmos utilizados?
4.2. ¿Existen posibles cuellos de botella en el rendimiento?
4.3 Operaciones de E/S
4.4 Concurrencia y paralelismo
4.5 Carga lenta e inicialización
4.6 Gestión de los recursos
5. Gestión y registro de errores
Revisa el código para garantizar un tratamiento adecuado de los errores y los mecanismos de registro. Los métodos adecuados de gestión de errores garantizan una mayor rapidez en las pruebas, la resolución de problemas y la fácil identificación de errores al depurar el código.
6. Seguridad
La seguridad es crucial en todas las fases del proceso de desarrollo. Los procesos deben contar con auditorías y pruebas en torno a la seguridad. Los problemas de seguridad deben abordarse para garantizar una protección adecuada contra inyecciones SQL, ataques de denegación de servicio o acceso no autorizado a datos sensibles. Las consideraciones clave incluyen:
6.1. Averiguar si existen fugas de datos
6.2. Averiguar si algún patrón de codificación puede hacer que la aplicación sea vulnerable a las amenazas.
7. Cobertura de las pruebas
Asegúrate de e que las pruebas de unidad, de integración y del sistema cubren los casos y funcionalidades esenciales. Céntrate en las siguientes áreas clave:
7.1. ¿Se están superando las pruebas y están actualizadas?
7.2 Tipos de pruebas.
7.3 Ejecución de las pruebas.
7.4 Independencia de las pruebas
7.5 Vacíos de cobertura
8. Reutilización del código y dependencias
Comprueba que el código reutiliza correctamente las bibliotecas, componentes y marcos de trabajo existentes. Confirma que todas las dependencias se gestionan correctamente y están actualizadas. Comprueba que se han eliminado todas las dependencias innecesarias.
9. Documentación
Comprueba que el código incluye la documentación adecuada con comentarios en línea y descripciones de métodos. La documentación de alto nivel es necesaria para proyectos complejos o de mayor envergadura. Asegúrate de que la documentación se actualiza en consecuencia y en línea con cualquier cambio en los requisitos del sistema.
Vitali hace hincapié en puntos clave, afirmando la importancia de "la limpieza y legibilidad del código". Destaca que un trabajo mal estructurado y complicado supone un reto para el mantenimiento y la futura ampliación.
Además, subraya la importancia de las pruebas, en particular las unitarias, para obtener resultados autoexplicativos. Este enfoque simplifica considerablemente el proceso de refactorización.
Las ideas de Vitali V. resuenan con fuerza, en consonancia con las mejores prácticas de desarrollo y mantenimiento.
Crea tu propia lista de control de revisión mientras estudias en EngXCurso de Revisión de códigos
Los desarrolladores pueden acceeder a cursos preparatiorios para convertirse en miembros eficientes, fiables y valiosos de cualquier equipo del que formen parte.
Para perfeccionar tus habilidades como revisor, puedes acceder a este EngX Code Review course para elevar la calidad de su código.
Al final de la unidad, serás capaz de:
Autoevaluar tu capacidad de revisión e identifica las posibilidades de mejora.
Ampliar tus conocimientos en procesos de revisión
Aplicar lo aprendido en ajustes practicos
Maximizar los beneficios del curso para el desarrollo personal, del equipo y de la organización.
El curso abarca los fundamentos de la revisión, cómo establecer y aplicar un proceso de revisión (incluidos los recursos para crear una plantilla de revisión de códigoque puedes utilizar en casi cualquier sitio), así como revisar las mejores prácticas.
Al final, podrás crear tu propia lista de comprobación. Vitali V. tiene interés en señalar que los alumnos del curso "no tendrán necesariamente que crear sus propias listas de comprobación, aunque estarán preparados para hacerlo si es necesario".
En su lugar, "se familiarizarán con los principios generales de la revisión de código, tendrán una plantila básica derevisión del código fácilmente accesible, y estarán preparados para discutir el proceso de revisión, incluidas las normas, convenciones y listas de comprobación, con sus compañeros de equipo en los proyectos".