La importancia de las convenciones de codificación: PascalCase, camelCase, snake_case y kebab-case
Nota: intencionadamente he denominado a cada convención de codificación de tal forma que nos permita identificar rápidamente cómo debe utilizarse. Lo habitual es encontrarlos como CamelCase, PascalCase, SnakeCase y KebabCase.
Como programadores de Software, nos habremos visto enfrascados no en pocas ocasiones en discusiones sobre el naming y el estilo y convención a utilizar de nuestro código: funciones y métodos, variables, propiedades, etc.
Puede que muchas veces atribuyamos esto a una manía (que a veces es cierto que existe) por imponer un determinado criterio, y otras veces lo atribuyamos a que hay gente que no sabe qué hacer con su tiempo libre, pero detrás de esto (intencionadamente o no) existe un porqué y una importancia de evitar problemas, y no me refiero sólo a que varios desarrolladores interpreten y entiendan correctamente el código que leen, sino a algunas situaciones que podemos pasar a veces por alto.
Cada lenguaje de programación no obstante tiene más o menos su propia forma (generalmente aceptada) de naming y convenciones de codificación.
De hecho, las convenciones de codificación tienen a veces relación con los lenguajes y plataformas que los ejecutan.
Lenguajes como Visual Basic (antes de .NET) tenía su estilo de codificación con notación húngara.
Con la llegada de .NET, tanto Visual Basic como C# han intentado adoptar una característica lo más homogénea posible, entre camelCase y PascalCase.
Pero en el caso particular de C# y Visual Basic hay un hándicap adicional en ambos y es el hecho de que C# es case sensitive, mientras que Visual Basic no.
Esto hace que el naming sea a priori más importante en el caso de C# que en el caso de Visual Basic.
Dicho de otro modo, independientemente de las convenciones a utilizar, las particularidades de cada lenguaje pueden hacer que una convención sea más útil en un lenguaje que en otro independientemente de que compartan plataforma de desarrollo.
Sin embargo y en el caso concreto de Visual Basic y C#, la lógica nos invita a unificar criterios.
Y como nunca llueve a gusto de todos, podemos encontrarnos con otros lenguajes como Go que permite que una variable, campo o método pueda ser llamado externamente si es PascalCase o internamente en el caso de camelCase, por lo que la convención aquí juega un papel clave.
Y por si tuviéramos poco, no es raro desarrollar una Web Api que devuelve un JSON en formato PascalCase y que cuando una porción de código de JavaScript la recibe, no la puede tratar correctamente porque la esperaba en camelCase.
Como podemos apreciar, una vez más las convenciones de codificación juegan un papel importante.
Llegados a esta parte del artículo, podemos ver que he hablado de dos convenciones de codificación que son las más habituales: camelCase y PascalCase, pero no es menos cierto que hay otras dos bastante utilizadas también: snake_case y kebab-case.
Incluso podemos encontrarnos con variantes como UpperCase + SnakeCase, que es como un híbrido de dos estilos.
Pero hay más.
Además de la particularidad del propio lenguaje de programación (Visual Basic, C#, Go, JavaScript, etc), podemos encontrarnos con algo que a veces pasa desapercibido, y es el entorno en el que se ejecutar o lee un fichero o una parte del mismo.
Tanto es así que si trabajamos en un Mac por ejemplo y más concretamente con el formato HFS+ case sensitive, la recomendación para evitar posibles problemas es usar LowerCase [lowercase] (del cuál no habíamos hablado aún).
Incluso en entornos basados en Linux se suele recomendar snake-case.
De esta forma, podemos evitar problemas con lenguajes cuyo naming no coincide con el formato que tiene el disco duro por ejemplo en Mac.
Llegados a este punto, creo que empezarás a tomar conciencia (espero) que las convenciones de codificación son a veces bastante más importantes de lo que podemos creer.
Muy posiblemente haya gente que las use sin tener en cuenta las posibilidades que he enumerado aquí, pero por eso quería escribir esta entrada.
Para que seamos conscientes de la importancia real que suponen a veces las convenciones de codificación.
El resumen de las diferentes convenciones que he tratado en el artículo quedarían de la siguiente forma:
camelCase => firstName PascalCase => FirstName SnakeCase => first_name KebabCase => first-name UpperCase + SnakeCase => FIRST_NAME lowercase => firstname
Happy Coding!
2 Responsesso far
Me parece apropiado hablar de esto, ya que muchos novatos (incluyéndome cuando empece en este mundo) teníamos malas practicas, y si considero el que no usen o respeten una convención de codificación es una mala practica, ocasionando así varias broncas de entender el código en trabajo en equipo. Como experiencia profesional puedo comentar que me ha ayudado el entender y saber diferenciar en un proyecto el tipo de convención al momento de integrarme a un trabajo.
¡Buen aporte!
necesito que me ayuden con algunas cosas estoy intentando a programar un software