Un código legible y elegante es reflejo de un programador brillante

Share

Escribir código es un arte: Dale una estética atractiva a tu obra

Crear código fuente es una tarea desafiante, especialmente cuando se trabaja en proyectos complejos dentro de un equipo de desarrollo para una determinada empresa, ya que la responsabilidad y la presión por lograr que todas las piezas encajen y funcionen correctamente, es mucho mayor que en un proyecto personal e individual. Para hacer que el proceso de desarrollo sea más efectivo y eficiente, es importante que los desarrolladores sigan convenciones de nomenclatura y estilo de codificación que hagan que el código sea fácil de leer, entender y mantener. Además, hay buenas prácticas que todo programador debe seguir para asegurarse de que su código sea de calidad y esté libre de errores, por lo tanto, en este post exploraremos esos estándares que se siguen para nombrar variables, funciones, clases y otros elementos en el código, los estilos recomendados para hacer más elegante la apariencia de las instrucciones y en general las más básicas de las buenas prácticas de programación, que todo aspirante a desarrollador debería conocer para escribir código limpio y fácil de comprender.

Identificación con camelCase y PascalCase

En primer lugar, es importante que los nombres de los elementos o estructuras que componen el código, sean descriptivos y concisos, para que otros desarrolladores puedan entender fácilmente lo que hace la variable, clase o función. Por ejemplo, si estamos escribiendo una función que obtiene la edad de un usuario, podemos nombrarla “obtenerEdad”. Esto hace que el código sea más fácil de leer y entender para otros desarrolladores que puedan trabajar en el proyecto en el futuro. Pero más allá del significado que expresan esos nombres, es también muy útil que la apariencia visual de esos títulos, permitan una fácil comprensión del significado que albergan.

En ese sentido, el uso de camelCase y PascalCase ayuda a que los nombres de variables y funciones sean más legibles. Los formatos camelCase y PascalCase son convenciones en que se utilizan letras mayúsculas para hacer más notorio el inicio de cada nueva palabra dentro del identificador, la diferencia entre uno y otro formato, es que en el primero la letra con que comienza el nombre se mantiene en minúscula, en cambio, en el segundo formato se usa mayúscula al inicio. Por ejemplo, si tenemos el identificador “nombredeusuario” alllevarlo a formato camelCase cambia a “nombreDeUsuario”, mientras que en PascalCase se transforma “NombreDeUsuario”.

Con esto se consigue, que los nombres sean más fáciles de leer y entender, además como parte de la misma convención, a modo de expansión del alcance de esta, se acostumbra emplear camelCase para variables y funciones, mientras que para las clases se usa el formato PascalCase. De tal modo que, resulte sencillo determinar, con base en su letra inicial, si un título corresponde a una clase o no. De igual manera, para el nombramiento de constantes, se suele utilizar exclusivamente letras mayúsculas a lo largo de todo el título, diferenciándolas así de las variables, las funciones y las clases.

Snake_case y Kebab-case como alternativas

Existen por supuesto otras alternativas para el formato de nombres que son también válidas, pero que no se encuentran tan difundidas y consolidadas como las nomenclaturas mencionadas anteriormente. La popularidad de estos estilos en función no solo de las preferencias de cada programador, sino también de las normas sintácticas del lenguaje empleado y los estándares de sus respectivas comunidades, por ejemplo el formato Snake_case es muy popular en lenguajes como Python y Ruby, este utiliza el carácter guion bajo para separar palabras, lo cual puede ser muy efectivo visualmente para facilitar la lectura y comprensión rápida del significado de los títulos. Otra opción similar, pero aún menos arraigada, es el uso del estilo llamado Kebab-case, que usa guiones como separadores de palabras.

La Notación húngara está en desuso

Algo que creo vale la pena mencionar acá, es la denominada notación húngara, la cual se enfoca principalmente en el nombramiento de variables y consiste en añadir un prefijo que describe el tipo de datos de la variable, que normalmente corresponde solo a la inicial de ese tipo de dato, luego de ese prefijo solo sé usa un nombre descriptivo. En el caso de tener una variable de tipo entero (Int) que almacene la edad del usuario, entonces el nombre sería iEdad, donde la primera letra corresponde al tipo de datos, esto permite saber rápidamente de que tipo dato en lenguajes de programación no tipados o débilmente tipados, pero actualmente se encuentra en desuso, en parte debido a que los editores de código de hoy en día, facilitan mucho que podamos saber el tipo de datos de una variable sin que tengamos que expresarlo en su nombre.

Elegir entre un estilo u otro, puede ser tan sencillo como utilizar lo que está más en tendencia, aunque no es un pecado ir un poco a contracorriente usando un estilo no tan popular, si es ese el que en lo personal más nos gusta. Lo realmente importante acá es la consistencia, debemos utilizar los mismos formatos o estilos de nombres en todo el código, así evitaremos confusiones y errores. No olvidemos que escribir código que nadie más que nosotros mismos somos capaces de entender, no nos hace mejores programadores, por el contrario, facilitar la lectura y comprensión del código fuente de nuestros programas nos hace más profesionales.

Documentar con comentarios

Hasta ahora he estado mencionando lo importante que es crear nombres descriptivos para que sea legible nuestro código, sin embargo, conforme los programas se van volviendo más complejos, también se va volviendo casi imposible que únicamente con nombres descriptivos, sea posible descubrir a simple vista, cuál es el propósito de cada elemento, incluso para nosotros mismos luego de algún tiempo de haber escrito esas instrucciones. Por lo tanto, es muy importante documentar internamente el código, para lo cual es necesario emplear los comentarios, así podemos dejar notas descriptivas, las cuales serán pasadas por alto durante la compilación, pero podrán ser leídos por otros desarrolladores que accedan al código o por nosotros mismos en el futuro, cuando posiblemente hallamos olvidado algún detalle que ese comentario nos puede aclarar o refrescar.

Por supuesto que los comentarios no deben utilizarse en exceso, un código en el que la mayor cantidad de líneas las constituyen los comentarios, no es lo deseado, debemos intentar siempre que el código por sí mismo sea fácil de comprender sin necesidad de comentarios, utilizando estos únicamente para explicar aquello que no se puede expresar de otra forma, además siempre debemos tratar en lo posible de lograr que sean claros y concisos. Al igual que ocurre con las demás instrucciones del código, siempre que se consiga el mismo resultado, será considerado como un mejor trabajo de programación, aquel que tenga menor cantidad de líneas, pues este será más eficiente.

Correcta identación

La identación y el espaciado también son factores muy importantes para lograr que el código sea fácil de leer e interpretar por parte de otros programadores e incluso por el propio autor. Utilizar una tabulación o cuatro espacios para la indentación y dejar una línea en blanco entre las funciones y los otros bloques de código, es una práctica muy útil para la legibilidad; se trata de un método muy sencillo pero efectivo, que como cualquier otra cosa, debe utilizarse con sentido común y con homogeneidad, es decir que si entre una función y otra dejamos una línea de espaciado, luego debemos ser constantes y no dejar más o menos líneas en otro caso equivalente.

La identación se refiere, a la organización del código mediante la adición de espacios en blanco o tabulaciones en el inicio de las líneas de código (a modo de sangría), lo cual se utiliza para crear una estructura jerárquica y visualmente clara de las instrucciones que conforman el código, lo que facilita que a simple vista se pueda comprender cuáles sentencias forman parte de cada bloque y cuáles están subordinadas a otras. En general, la identación se utiliza para delimitar bloques de código, como estructuras de control de flujo (if, while, for, etc.) o definiciones de funciones. Al utilizar la identación de manera consistente, se pueden evitar errores comunes como la omisión o inclusión incorrecta de ciertas líneas de código dentro de un bloque, lo que puede afectar el funcionamiento del programa.

En cuanto a buenas prácticas de programación, hay unas cuantas más que no solo tienen que ver con la estética del código, sino con su funcionalidad y eficiencia de su desarrollo, como la realización de pruebas unitarias o la utilización de un sistema de control de versiones para evitar que se generen conflictos al realizar modificaciones al código fuente, pero en esta oportunidad solo quería mencionar las más básicas, las que deben conocer los novatos en la programación. Además, mi intención en este artículo ha sido centrarme en la estética, ya que es un factor que delata la inexperiencia de quienes se adentran en esta disciplina informática, en próximas ocasiones mencionaré otras convenciones y buenas prácticas de carácter más profesional.