Formatting - ajpaez/Learning GitHub Wiki

El propósito del formato

Lo principal, ser claros! Código formateado es comunicación. La legibilidad de tu código tendrá un efecto profundo en todos los cambios que se harán. El estilo de codificación y la legibilidad sentarán precedentes que continuaran afectando la mantenibilidad y la extensibilidad después de que el código original se haya modificado más allá del reconocimiento.

Formateo vertical

Comenzaremos con el tamaño en vertical de nuestro código. Este tamaño está estrechamente relacionado con el tamaño de la clase. Aunque esto no debería ser una tajante y rápida regla, es muy deseable. Clases pequeñas son usualmente fáciles de entender que las clases grandes.

Espacio vertical

Cada línea representa una expresión o clausula, y cada grupo de líneas representa una idea completa, estas ideas deberán separarse entre ellas con una línea en blanco. Eliminar esta espacio hará que tengamos un efecto notablemente oscuro en la legibilidad de nuestro código.

Densidad vertical

Si el espacio separa conceptos, la densidad vertical implica cercanía en la asociación de ideas. Por lo que, líneas de código estén relacionado deberán tener una mayor densidad vertical entre ellas

Distancia vertical

En este apartado intentaremos evitar el desplazarnos arriba y abajo por una clase buscando una función, o que pierdas tiempo intentando encontrar las funciones relacionadas con una función principal. Los conceptos o ideas que estén estrechamente vinculados deberán mantener una distancia vertical mínima, en la medida de lo posible, es decir, que dichas funciones estén por su propia naturaleza en la misma clase. Su separación vertical media entre funciones relacionadas deberá ser relativa a la importancia entre ellas para entender cada una por separado. Lo que buscamos es evitar dar vueltas por todo nuestro código para encontrar y entender estás funciones relacionadas.

Declaración de variables

Las variables deberán declararse tan cerca como sea posible de donde vayan a ser usadas. Las variables para bucles deberán ser declaradas dentro del propio bucle

Variables de instancia

Deberán declararse al comienzo de la clase, esto no deberá incrementar la distancia vertical entre ellas.

Funciones dependientes

Si una función llama a otra, deberán estar verticalmente cerca, y la que llama debe de estar por encima de la que es llamada si es posible. De esta forma el lector sabrá de antemano que la definición de la función incluida en la que está leyendo estará cerca o poco después de la función que está leyendo.

Afinidad conceptual

Algunas partes del código están bien cerca de otras partes, entre ellos existe una afinidad conceptual. Cuanto más fuerte sea esta afinidad, menor deberá ser la distancia entre ellos. Esta afinidad está basada en una dependencia directa, como la llamada de una función a otra o en una función el uso de una variable. Esta afinidad también puede venir dada por varias funciones que realizan una operación similar o pequeñas variaciones de la misma tarea básica.

Orden vertical

En general estableceremos el orden de dependencias de llamadas hacia abajo, la función que es llamada debe de estar debajo de la función que la llama.

Formateo horizontal

Líneas cortas!!! Como normal general mantendremos el no necesitar nunca hacer scroll hacia la derecha

Espacio y densidad horizontal

Seguiremos las siguiente normas:

  • Separar ambas partes de una asignación del símbolo igual con un espacio en blanco.
     "java".replace(target, replacement);
  • No poner espacios entre el nombre de una función y la apertura de paréntesis.
  • Separar los argumentos en la llamada a una función con un espacio en blanco
    "java".replace(target, replacement);
  • Separar con un espacio en blanco la prioridad de los operadores:
    • Los factores no tendrán espacio entre ellos porque estos operadores ya tienen una alta prioridad
    • Los términos estarán separados por un espacio en blanco porque la suma y resta tiene una baja prioridad
    int a = x*y + w/z;

Alineación horizontal

Mantén un tamaño inferior al que tu vista puede llegar a la hora de declarar variables (modificadores, tipo y nombre de la misma) No alinees las declaraciones en horizontal según la longitud de los modificadores o de sus nombres.

Indentación

La indentación horizontal de tus líneas es importante para poder identificar en todo momento en que sección/parte de tu código te encuentras, así como, el scope al que pertenece una variable o un fragmento de código.

Rompiendo la indentación

Algunas veces es tentador romper la indentación con un bloque if o bucles while de una sola línea. Vuelve atrás y no lo hagas. No rompas la indotación.

⚠️ **GitHub.com Fallback** ⚠️