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.