Menu
Coddy logo textTech

Cláusulas de Guardia

Parte de la sección Lógica y Flujo del Journey de Java de Coddy — lección 38 de 59.

Las cláusulas de guardia son declaraciones condicionales al principio de un método que verifican condiciones inválidas y retornan temprano. Ayudan a hacer el código más limpio y legible al manejar los casos límite primero.

Veamos un método sin cláusulas de guardia:

public int divide(int num, int den) {
   if (den != 0) {
       if (num >= 0) {
           return num / den;
       } else {
           return -1;
       }
   } else {
       return -1;
   }
}

El mismo método con cláusulas de guardia:

public int divide(int num, int den) {
   if (den == 0) return -1;
   if (num < 0) return -1;
   return num / den;
}

Después de ejecutar cualquiera de los códigos con divide(10, 2), el resultado es:

5

challenge icon

Desafío

Fácil

Crea un método llamado validatePassword que tome un argumento:

  1. Una String (password) para validar

El método debe usar cláusulas de guardia para validar la contraseña y devolver una cadena de mensaje basada en estas reglas:

  • Si password es null: return "Password cannot be null"
  • Si password está vacío: return "Password cannot be empty"
  • Si la longitud de password es menor que 8: return "Password must be at least 8 characters"
  • Si password contiene espacios: return "Password cannot contain spaces"
  • Si todas las comprobaciones pasan: return "Valid password"

Hoja de referencia

Las cláusulas de guardia son declaraciones condicionales al principio de un método que verifican condiciones inválidas y retornan temprano, haciendo el código más limpio y legible.

Sin cláusulas de guardia:

public int divide(int num, int den) {
   if (den != 0) {
       if (num >= 0) {
           return num / den;
       } else {
           return -1;
       }
   } else {
       return -1;
   }
}

Con cláusulas de guardia:

public int divide(int num, int den) {
   if (den == 0) return -1;
   if (num < 0) return -1;
   return num / den;
}

Pruébalo tú mismo

import java.util.Scanner;

public class Main {
    public static String validatePassword(String password) {
        // Escribe tu código aquí
    }
    
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String password = scanner.nextLine();
        if (password.equals("null")) {
            password = null;
        }
        System.out.println(validatePassword(password));
    }
}
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Lógica y Flujo