Hola, les saluda Luis y para hoy les traigo este nuevo tutorial.
Índice
Una guía para hacer que su código sea más fácil de mantener y robusto
Las revisiones de código son una parte integral del proceso de desarrollo. Ayudan a garantizar que está creando herramientas sólidas y fáciles de mantener. Los beneficios de las revisiones de código incluyen aumentar la visibilidad de un proyecto, compartir conocimientos entre los miembros del equipo y, lo más importante, detectar errores y mejorar la capacidad de mantenimiento.
Cualquier desarrollador que someta su código a revisión quiere comentarios constructivos. Los comentarios no deben limitarse a notas sobre estilo, interlineado o nombres.
El enfoque principal de una revisión de código debe ser proporcionar comentarios constructivos que hagan que el código sea más legible, fácil de mantener y sin errores.
Aquí están las 10 cosas principales a tener en cuenta en cada revisión de código.
1. Funcionalidad
¿El código hace lo que pretendía el desarrollador? En primer lugar, el revisor del código es responsable de verificar si se cumplen los objetivos definidos en la revisión del código. ¿Los cambios han abordado todas las funciones o correcciones de errores?
2. Diseño
En un mundo ideal, cualquier cambio en el diseño del software se habría discutido y evaluado antes de la implementación. Por desgracia, no vivimos en un mundo perfecto, por lo que puede haber ocasiones en las que el diseño no se haya discutido de antemano y se necesite una refactorización extensa para llevar los cambios de código al estándar.
- Verifique si el patrón de diseño propuesto coincide con los cambios en la revisión del código. ¿Cómo se divide la lógica del programa entre clases y cómo interactúan estas clases entre sí?
- ¿El código se adhiere a los principios de diseño orientado a objetos ?
- ¿El código de la interfaz de usuario está separado del código lógico? ¿Se dividen los componentes de una manera que tenga sentido?
- ¿Los archivos del proyecto están organizados de forma intuitiva? Por ejemplo, ¿los archivos de la interfaz de usuario, las imágenes, los scripts, las clases y los encabezados están todos en carpetas separadas?
3. Identificar el código repetido
No se repita (SECO)
El código repetido es una receta para errores repetidos, mayor complejidad y gastos generales innecesarios. Don’t Repeat Yourself (DRY) es un mantra común entre los desarrolladores de software.
Razones para evitar el código repetido
- Hace que la base de código sea más larga y más difícil de mantener.
- Un mantenedor podría potencialmente arreglar un error en un lugar pero no en el otro.
- El código repetido significa que será necesario ejecutar un número repetido de pruebas.
Como arreglar
- Si la funcionalidad se repite en una clase, este código debe trasladarse a una sola función.
- Si este código repetido se usa en varios proyectos, el código debe agregarse a un submódulo o proyecto separado, al que hacen referencia todos los proyectos.
- ¿Existe una funcionalidad repetida en varias clases? Asegurarse de que se utilice la herencia reducirá el número de funciones repetidas.
4. Considere el tiempo de ejecución de los algoritmos
El tiempo de ejecución de un algoritmo depende del número de operaciones ejecutadas y se puede expresar en notación Big O. Cuantas más operaciones, más tiempo se tarda en ejecutar la aplicación.
- ¿Hay operaciones innecesarias? Deben eliminarse todos los cálculos innecesarios.
- ¿El algoritmo realiza un trabajo repetido? ¿Podemos almacenar en caché los datos mediante la memorización para evitar ejecutar el mismo cálculo más de una vez?
- Identifica bucles anidados. ¿Hay alguna forma de simplificar las operaciones sin usarlas?
- ¿Cuál es el costo de búsqueda al acceder a los datos? ¿Existe una estructura de datos que pueda utilizarse para reducirlo?
5. Eliminar todos los valores codificados en el código
Los valores codificados son un firme «no». Si es necesario que existan valores codificados en el proyecto, utilice constantes y nombres de variables descriptivos.
- Las constantes específicas de una clase deben agregarse como variables de clase estáticas.
- Las constantes configurables deben formar parte de una clase de configuración.
- Las constantes que no se pueden configurar y que se comparten entre clases deben estar en un archivo constante y solo se deben incluir cuando sea necesario.
6. Manejo de errores
¿El código contiene un manejo completo de errores ?
- Las excepciones deben manejar entradas no válidas debido a entradas de usuario, restricciones de hardware, problemas de red, etc.
- Las afirmaciones deben validar las condiciones para ayudar a detectar errores y validar casos de prueba.
7. Asignación de memoria
Asignación de memoria puede ser propenso a errores si malloc()
o free()
se utilizan mal. Aquí puede encontrar una lista detallada de los errores de software más peligrosos debido a la asignación de memoria .
- Se producirán pérdidas de memoria si los objetos no utilizados en la memoria nunca se liberan. Esto hará que la aplicación utilice más memoria de la que necesita y potencialmente ralentizará el sistema.
- La liberación prematura ocurre cuando se libera un objeto que todavía está siendo utilizado por el programa. El resultado es un puntero obsoleto, que provocará que las llamadas posteriores a malloc se bloqueen libremente.
- Un objeto se puede liberar dos veces liberando un objeto que ya está libre. Una vez más, las futuras llamadas a malloc y free pueden fallar.
Es menos probable que tenga problemas de asignación de memoria cuando trabaje con lenguajes como Python que tienen recogida de basura incorporada.
8. Comentarios
Si no está claro por qué existe una parte del código, es una buena indicación de que se necesita un comentario.
- Los comentarios deben ser concisos y prácticos.
- Los comentarios deben explicar por qué existe el código, no qué hace el código.
- Palabras clave de comentario IDE tales como
TODO
,FIXME
,CHECKME
,PENDING
, etc deben ser utilizados para identificar categorías específicas de los comentarios.
9. Coherencia
El estilo en toda la base de código debe ser coherente en términos de nombres, espacios y corchetes. Idealmente, su equipo ya ha establecido las pautas de estilo.
- ¿La función, la variable y el nombre de la clase son coherentes?
- Si no hay una guía de estilo, el código debe mantener la coherencia con el resto del código base.
10. Programación paralela segura
Si el código contiene programación paralela, es esencial verificar si hay interbloqueos y condiciones de carrera . Estos problemas pueden ser difíciles de probar simplemente ejecutando el código, por lo que es fundamental que otro desarrollador lo examine.
Recursos adicionales
A continuación, se muestran algunas herramientas de revisión de código estándar:
Pautas de estilo de codificación:
Conclusión
Espero que este artículo le haya dado más información sobre lo que debe buscar al revisar el código.
Si sigue las pautas de este artículo, las revisiones de código pueden reducir los errores y garantizar la coherencia, la eficiencia y el mantenimiento.
Si actualmente no necesita revisiones de código en su equipo, espero que este artículo lo haya convencido del importante papel que desempeñan en el desarrollo y mantenimiento de sistemas sólidos.
Gracias por leer.
Añadir comentario