Agrupación de acuerdo al scope
Para mejorar la lectura de bloques de código, variable y métodos seguiremos el siguiente orden de acuerdo a los tipos:
imports estáticos
imports
Bloque estático
Variables estáticas
Bloque de instancia
Variables de instancia
Métodos estáticos
Métodos de instancia
Monad Style
Con el paso del tiempo la programación funcional a ido creciendo y su popularidad se ha extendido hasta lenguajes como Java. A partir de la versión 8 con el ingreso de las interfaces funcionales y con esto las lambdas así como los streams inició una serie de cambios enfocados a programación funcional.
Anteriormente para recorrer un listado de números o cadenas con cierta validación teníamos lo siguiente:
List<Integer> numeros = List.of(1,4,23,6,78,2,5,9,20); for(Integer num : numeros){ if(num>10){ System.out.println(num); } }
y ahora podemos usar:
numeros.stream().filter(n -> n>10).forEach(n -> System.out.println(n));
funcionalmente realiza lo mismo, pero al tener el código de esta manera podríamos tener en una sola lineal la solución a todo un problema.
De igual manera en java se ha extendido mucho es el uso de los builders, con lo que antes teníamos:
Persona persona = new Persona(); persona.setNombre("Ivan"); persona.setApellido("Rodriguez"); persona.setEdad(40);
ahora podemos usar algo parecido a:
Persona persona = Persona.builder().nombre("Ivan").apellido("Rodriguez").edad(40).build();
con lo que también podríamos construir un objeto complejo en una sola línea.
Para poder mejorar la lectura se puede utilizar el estilo monad que en nuestro caso consiste en:
Agrega un salto de línea después de:
Un (
Una ,
Un {
Un > de una lambda
Y antes de:
Un .
con lo que tendríamos algo parecido a:
numeros .stream() .filter( n -> n>10) .forEach( n -> System .out .println( n));
y:
Persona persona = Persona .builder() .nombre( "Ivan") .apellido( "Rodriguez") .edad( 40) .build();
con esto lograremos leer el código mas fácilmente.
Saltos de línea adicionales
Para facilitar la lectura del código también podemos agregar algunos saltos de línea en:
Después de paquete de la clase
Después de los imports y antes de la definición de la clase
Después de la definición de la clase y la siguiente línea de código (variable, constructor, método, etc.)
Entre grupos de variables para separar variables de instancia, estaticas, constantes, etc.
Entre la ultima variable y el primer método
Después de {
Después de las variables locales y la siguiente sentencia
Antes de un return
Entre métodos
No debemos agregar salto de línea:
Al final del código de un archivo .java
Entre los } finales o entre la ultima declaración de una variable y el } final de la clase
Ejemplo:
package com.ivra.grpc.test.grpc.service.server.utils; import static java.lang.String.valueOf; import org.springframework.stereotype.Component; @Component public class FormatoSPIN { private static final String VARIABLE_ESTATICA; static { VARIABLE_ESTATICA = ""; } private String variableInstancia; { variableInstancia = ""; } public static void metodoEstatico(){ int variableLocal = 0; } public int metodo(){ int variableLocal = 0; try { int suma = variableLocal + 5; return suma; } catch (Exception e) { throw new RuntimeException(); } } }
Este es un ejemplo, no representa ninguna solución.
Add Comment