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
Desafío
FácilCrea un método llamado validatePassword que tome un argumento:
- 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));
}
}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
1Arreglos Multidimensionales
Básicos de Arreglos 2DAccediendo a Elementos de Arreglos 2DBucles Anidados con Arreglos 2DResumen - Arreglos 2DSuma y Resta de MatricesArreglos IrregularesArreglos 3D y Más AlláPatrones Comunes de Arreglos 2DResumen - Todo Sobre Arreglos4HashSet Parte 1
¿Qué es un HashSet?Agregando un elementoEliminando un elementoComprobando si existe un elementoVacío y tamañoLimpiar y clonarResumen - HashSet7Manejo Básico de Errores
Básicos de Try-CatchBloque FinallyLanzamiento de ExcepcionesExcepciones Personalizadas2HashMap Parte 1
¿Qué es un HashMap?Declarar un HashMapAcceder a ValoresVerificar si una Clave ExisteModificar DiccionariosResumen - HashMap3HashMap Parte 2
Métodos de HashMapIterar con keySet()Iterar con entrySet()HashMap AnidadoResumen - Gestionar AlmacénResumen - Operaciones de HashMap6Flujo de Control Avanzado
Sentencias EtiquetadasExpresión SwitchCoincidencia de PatronesCláusulas de GuardiaResumen - Flujo de Control9Proyecto - Contador de Palabras Únicas
Entrada y Almacenamiento de TextoProcesamiento de Palabras