Foros aprenderaprogramar.com

Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: SonyEd en 11 de Enero 2018, 02:25

Título: Cómo el mismo código puede ser refactorizado para mayor claridad Java CU00657B
Publicado por: SonyEd en 11 de Enero 2018, 02:25
Buen día, quisiera saber si el código del ejercicio del curso gratuito básico de Java Pedir datos en Java por consola (teclado). Escape backslash. System.out.print. Salto de línea \n (CU00657B) está correcto. Gracias.

Código: [Seleccionar]
import java.util.Scanner;

public class PedirDatos{
    public static void main (String[] args){
        System.out.println("Introducir una cadena");
        String cadena="";
        Scanner entradaScanner = new Scanner(System.in);
        cadena = entradaScanner.nextLine();
        if(cadena.length()<5){
            if(cadena.substring(0,1).equals("a") || cadena.substring(0,1).equals("A")){
                System.out.println("La cadena introducida tiene menos de 5 caracteres y empieza por la letra \"a o A\"");
            }else{
                System.out.println("La cadena introducida tiene menos de 5 caracteres y no empieza por la letra \"a o A\"");   
            }
        }else{
            if(cadena.length()>4 && cadena.length()<16){
                if(cadena.substring(0,1).equals("a") || cadena.substring(0,1).equals("A")){
                    System.out.println("La cadena introducida tiene entre 5 y 15 caracteres y empieza por la letra \"a o A\"");
                }else{
                    System.out.println("La cadena introducida tiene menos de 5 caracteres y no empieza por la letra \"a o A\"");   
                }
            }else{
                if(cadena.length()>=15){
                    if(cadena.substring(0,1).equals("a") || cadena.substring(0,1).equals("A")){
                        System.out.println("La cadena introducida tiene mas de 15 caracteres y empieza por la letra \"a o A\"");
                    }else{
                        System.out.println("La cadena introducida tiene mas de 15 caracteres y no empieza por la letra \"a o A\"");   
                    }
                }
            }
        }
    }
}
Título: Re:Cómo el mismo código puede ser refactorizado para mayor claridad Java CU00657B
Publicado por: Alex Rodríguez en 14 de Junio 2018, 19:13
Hola, el código funciona dando los resultados esperados. Sin embargo no es un código que obtendría una buena calificación si fuera evaluado. Los motivos para ello son:

- Repetición de código: por ejemplo se repite más de una vez if(cadena.substring(0,1).equals("a") cuando realmente solo sería necesario una vez en el código

- Anidamiento de los if poco legible: en general cuanto más fácil de entender y claro sea el código, mejor. Si puede resolverse en 20 líneas en lugar de en 40, en general mejor.

Puede compararse la solución dada con esta otra https://aprenderaprogramar.com/foros/index.php?topic=2873.0 y observar gracias a qué estrategias se puede conseguir el mismo resultado de una forma más clara y utilizando menos líneas.

Saludos