Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current Restore this Version View Page History

« Previous Version 4 Current »

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.