Cláusulas de Guarda
Parte da seção Lógica e Fluxo do Journey de Java da Coddy — lição 38 de 59.
Cláusulas de guarda são instruções condicionais no início de um método que verificam condições inválidas e retornam cedo. Elas ajudam a tornar o código mais limpo e legível, lidando com casos de borda primeiro.
Vamos ver um método sem cláusulas de guarda:
public int divide(int num, int den) {
if (den != 0) {
if (num >= 0) {
return num / den;
} else {
return -1;
}
} else {
return -1;
}
}O mesmo método com cláusulas de guarda:
public int divide(int num, int den) {
if (den == 0) return -1;
if (num < 0) return -1;
return num / den;
}Após executar qualquer um dos códigos com divide(10, 2), o resultado é:
5
Desafio
FácilCrie um método chamado validatePassword que recebe um argumento:
- Uma
String(password) para validar
O método deve usar cláusulas de guarda para validar a senha e retornar uma string de mensagem com base nessas regras:
- Se
passwordfornull: retorne "Password cannot be null" - Se
passwordestiver vazia: retorne "Password cannot be empty" - Se o comprimento de
passwordfor menor que 8: retorne "Password must be at least 8 characters" - Se
passwordcontiver espaços: retorne "Password cannot contain spaces" - Se todas as verificações passarem: retorne "Valid password"
Folha de consulta
Cláusulas de guarda são instruções condicionais no início de um método que verificam condições inválidas e retornam cedo, tornando o código mais limpo e legível.
Sem cláusulas de guarda:
public int divide(int num, int den) {
if (den != 0) {
if (num >= 0) {
return num / den;
} else {
return -1;
}
} else {
return -1;
}
}Com cláusulas de guarda:
public int divide(int num, int den) {
if (den == 0) return -1;
if (num < 0) return -1;
return num / den;
}Experimente você mesmo
import java.util.Scanner;
public class Main {
public static String validatePassword(String password) {
// Escreva seu código aqui
}
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 lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Lógica e Fluxo
1Arrays Multidimensionais
Básicos de Arrays 2DAcessando Elementos de Arrays 2DLoops Aninhados com Arrays 2DResumo - Arrays 2DAdição e Subtração de MatrizesArrays EscalonadosArrays 3D e AlémPadrões Comuns de Arrays 2DResumo - Tudo Sobre Arrays2HashMap Parte 1
O que é um HashMap?Declarar um HashMapAcessando ValoresVerificar se a Chave ExisteModificando DicionáriosResumo - HashMap3HashMap Parte 2
Métodos do HashMapIterar com keySet()Iterar com entrySet()HashMap AninhadoResumo - Gerenciar ArmazémResumo - Operações do HashMap6Fluxo de Controle Avançado
Declarações RotuladasExpressão SwitchCorrespondência de PadrõesCláusulas de GuardaResumo - Fluxo de Controle9Projeto - Contador de Palavras Únicas
Entrada e Armazenamento de TextoProcessamento de Palavras