Estructura y Formato
Cuando hablamos de estructura y formato, nos referimos a la forma en que organizamos nuestro código y cómo lo presentamos. Aunque no afecta directamente el funcionamiento del código, una buena estructura y formato pueden hacer que el código sea más fácil de entender y mantener.
Lo mas importante no es seguir estricamente una guia de estilo, sino ser consistente con el proyecto en el que estamos trabajando. Si estamos trabajando en un proyecto que ya tiene una guia de estilo definida, debemos seguir esa guia. Si no la tiene, debemos definirla.
El formato especifico en cada proyecto sera dictado por alguna herramienta de formateo de codigo, como Prettier o ESLint. Estas herramientas nos permiten definir reglas de formato y aplicarlas de manera automatica.
Sin embargo, el orden y estrcutura son infinitamente variables, por lo que en Mindsight, nos basamos en los siguientes principios basicos para estructurar nuestro codigo de una manera mas consistente:
Separación vertical de conceptos
Conceptos similares deberian ser verticalmente cercanos y viceversa. Si un conjunto de funciones realiza una tarea en particular, hace sentido tenerlas juntas. No hay justificacion para tener una funcion semanticamente similar a otra dentro de otro archivo, o alejada de sus funciones relacionadas.
Densidad vertical del codigo
Similar a lo anterior, la densidad vertical del codigo nos indica la cercania de manera mas granular dentro del codigo. Si tenemos un conjunto de variables, declaraciones, funciones, etc., que estan relacionadas, estas deberian estar cercanas entre si dad su relacion.
Declaracion de variables cercanba a su uso
Las variables que se declaran en un bloque de codigo deberian ser usadas en ese mismo bloque, y lo mas cercano posible a su uso. No tiene sentido declarar una variable al principio de una funcion si esta no es usada hasta el final de la misma.
Cercania de funciones relacionadas
Funciones relacionadas deberain estar cercanas entre si, simple y sencillo.
Para el caso de funciones dependiente, osea de funciones que son utilizadas en otra funcion, la funcion llamada deberia estar debajo de la funcion que la llama.
Para funciones que se relacionan entre si de manera semantica o contextual, estas deberian estar cercanas entre si y ordenadas de la manera que mejor se estime conveniente segun el contexto, obedeciendo asi tambien el principio de separacion vertical de conceptos.
Orden piramidal de funciones
Las funciones mas importantes deberian aparecer primero, seguidas de las funciones que estas llaman, y asi sucesivamente. Esto nos permite tener una vision general del codigo y entender su flujo de ejecucion, y no centrarnos en los detalles que nos son tan relevantes.
Lineas de codigo cortas
Las lineas de codigo deberian tener la menor extension posible. Esto nos ayuda a mantener el codigo legible y a evitar scrolls horizontales.
Horizontalidad
Con respecto a la horizontalidad, existen dos principios que nos interesa destacar.
Uno es el no uso de de alineamiento horizontal, ya que esto puede hacer que el codigo sea dificil de leer y mantener. Este alineamiento puede en muchas ocasiones ser redundante, y quitar importancia a ciertas partes del codigo.
El otro es el uso de espacios en blanco. Los espacios en blanco son una herramienta muy util para separar u agrupar conceptos similares dentro de una misma linea. Por lo general los espacios en blanco se usan entre operadores y operandos, despues de las comas y entre caracteres especiales del lenguaje. No es necesario usar espacios para los parentesis, corchetes o llaves, ya que estos ya separan los conceptos.
Indentacion Consistente
Manten y respeta la indentacion del codigo dentro del proyecto. Una indentacion consistente nos ayuda a entender mejor el codigo y a identificar partes cruciales de este de mejor forma.