Con el crecimiento de los procesos de adopción tecnológica en el mundo y la complejidad de los sistemas, surge la necesidad de contar con personas fuertes en habilidades de desarrollo así como buenas prácticas de programación que garanticen la fiabilidad de los sistemas que construyen no solo desde la funcionalidad sino también desde la calidad de su código. Esto implica un gran reto: “¿Cómo formar programadores con habilidades excepcionales en programación?”.
Con programadores expertos coincidimos en que existen dos caminos para la excelencia en programación, el primero consiste en enfocarse en el estudio y profundización en los lenguajes de programación, el segundo camino y no menos importante consiste en desarrollar buenas prácticas de programación, con el fin de escribir código limpio con altos estándares de calidad.
Es cierto que algunos desarrolladores por su formación consideran estas prácticas innecesarias dado que limitan su libertad al codificar y no aportan mucho valor, nada está más lejos de la realidad que esto. A continuación veremos algunos ejemplos y evaluaremos el impacto en los procesos de desarrollo.
Código | Problema |
Tenemos el siguiente fragmento de código public void StringToChar(String cadena){ } | Si bien es cierto que el código se ejecuta debidamente y su sintaxis aparentemente es correcta, tenemos el riesgo de que en la ejecución esté presente una “NullPointerException” para el caso en que “cadena” sea Null. |
Solución 1: muchos desarrolladores optan por agregar una condición donde se valide que cadena sea diferente de Null así if(cadena =! null && cadena.equalsIgnoreCase(“Hola”)){ | Solución 2: es probable que no inyecte la nueva condición en el código si no que por el contrario la invierta con lo cual no tendrá que preocuparse por dicho error if(“hola mundo”.equalsIgnoreCase(cadena){ |
Implicaciones: – Adiciona complejidad a la aplicación. – Obliga al compilador a evaluar más código. – Aumenta el peso de la aplicación | Implicaciones: – Código más legible y fácil de mantener. – Disminuye el riesgo de errores. – Ahorro de memoria y tiempo de ejecución. – Aplicación más liviana. |
En el caso anterior si bien es cierto que ambas soluciones son factibles y funcionan correctamente, es claro que la solución 2 es una solución con un desarrollo más óptimo y fue dada por un profesional más experimentado, al tiempo, es una solución intuitiva para un desarrollador con buenas prácticas, lo que incidirá drásticamente en que su desarrollo será mucho más ágil. El anterior fue un ejemplo de pequeñas dimensiones, sin embargo para el caso de aplicaciones más complejas, el impacto es proporcional y en algunos casos identificar esta nullPointerException puede implicar un buen tiempo de soporte (reprocesos y tiempo).
La calidad del software y/o la calidad del código, toma fuerza como un atributo fundamental en el desarrollo de toda aplicación y aunque no es visible para el usuario, toma alta relevancia en el proceso y más aún si se trabaja en entornos colaborativos donde el código no solo debe ser funcionalmente aceptable, si no también debe existir una garantía de que se apliquen buenas prácticas y se implementen estándares definidos por los equipos con el fin de llevar la probabilidad de fallos y/o errores a su menor expresión.
“Calidad significa hacer lo correcto cuando nadie está mirando”, Henry Ford |
¿Qué beneficios aportan las buenas prácticas a un programador?
Las buenas prácticas nos ayudan a disminuir el tiempo de soporte, mantenimiento y prevención de errores, así como el tiempo de desarrollo en equipos colaborativos, dado que sus miembros pueden entender fácilmente el código, incluso realizar nuevos desarrollos sin tener que comprender en su totalidad el código, solo siguiendo la metodología planteada. Adicionalmente se evitan retrasos que pueden llevar al fracaso total del proyecto.
Con el fin de adoptar las mejores prácticas de codificación y garantizar un código limpio, reutilizable, escalable, se han desarrollado herramientas en el mercado que implementan técnicas como el análisis estático de código fuente que permiten al desarrollador garantizar estas propiedades en su código, es decir permiten detectar la gran mayoría de problemas de desarrollo de software que nuestros proyectos puedan presentar.
Entre las reglas de codificación podemos encontrar:
- Detección de código duplicado.
- Detección de código muerto.
- Cobertura de test unitarios.
- Cobertura de comentarios en código.
- Alto acoplamiento.
- Complejidad ciclomática.
- No adecuación a estándares y convenciones de código.
- Vulnerabilidades conocidas de seguridad.
En conclusión podemos decir que si bien es cierto que en algunos casos las buenas prácticas en codificación no afectan directamente la funcionalidad en las aplicaciones, si generan gran impacto en los equipos que participan en el proceso, convirtiéndose en un factor determinante de calidad, profesionalismo y en el sello de su trabajo.
Te acompañamos en la implementación de proyectos de desarrollo.
We generate value through clear content, focused on the software development industry.