Medo de usar IF's ... rsrs

5 respostas
java
Lucas_Gustavo

Boa tarde pessoal… Estou Estudando e lendo alguns posts sobre o assunto do tão famigerado if()…

Vamos ao um exemplo bem chulo, porém prático… Um cadastro onde vão ser inseridas informações de Nome, Sobre Nome e idade… Caso eu queira fazer uma validação desses três antes de efetuar a gravação no BD, imagino que seria dessa forma com “if’s”;

if (txtNome.getText().equals("")) {
            JOptionPane.showMessageDialog(null, "Necessário informar Nome!", "Aviso", JOptionPane.WARNING_MESSAGE);
            txtNome.requestFocus();
            return;
        }
        
        if (txtSobreNome.getText().equals("")) {
            JOptionPane.showMessageDialog(null, "Necessário informar o Sobre Nome!", "Aviso", JOptionPane.WARNING_MESSAGE);
            txtSobreNome.requestFocus();
            return;
        }

        if (txtIdade.getText().equals("")) {
            JOptionPane.showMessageDialog(null, "Necessário informar a Idade!", "Aviso", JOptionPane.WARNING_MESSAGE);
            txtIdade.requestFocus();
            return;
        }

Primeiro como eliminar os if em um caso desse? Imaginem se eu tenho um cadastro com trocentas informações e queira validar todas??? Serão trocentos if’s… Eu realmente não penso em absolutamente nada! É uma questão apenas para estudar um pouco melhor a questão dos if’s que dizem ser uma má pratica de programação, apesar de eu discordar um pouco, se fosse uma má pratica ele não existiria… Mas enfim!..

Vida longa e prospera. :vulcan_salute:

5 Respostas

Lucas_Camara

Segue uma forma de fazer:

public static void main(String[] args) {
	String nome = "";
	String sobrenome = null;
	String idade = "";
	
	try {
		alertIfInvalid(nome, "Necessário informar Nome!");
		alertIfInvalid(sobrenome, "Necessário informar o Sobre Nome!");
		alertIfInvalid(idade, "Necessário informar a Idade!");
		
		JOptionPane.showMessageDialog(null, "OK", "Sucesso", JOptionPane.INFORMATION_MESSAGE);
	} catch(Exception ex) {
		JOptionPane.showMessageDialog(null, ex.getMessage(), "Aviso", JOptionPane.WARNING_MESSAGE);
	}
}

private static void alertIfInvalid(String value, String message) {
	if(value == null || value.isEmpty()) {
		throw new IllegalArgumentException(message);
	}
}

Ainda dá para incrementar utilizando os recursos do java 8+.

Lucas_Gustavo

Lucas… valeu pela dica brow, é uma ótima saída, interessante!!!.. vou continuar estudando o pq programadores odeiam os IFs rsrs!!! :vulcan_salute::grin:

javaflex

Nem sempre. Antes um bom if claro do que um código sofisticado demais que só o programador fodão que fez vai saber desvendar sem levar muito tempo.

Lucas_Gustavo

Isso é verdade JavaFlex… As vezes tentamos complicar demais as coisas pensando em ter um código limpe, porém de complexo entendimento para outros…

javaflex

Exato. Nesse caso ai nem foi questao de deixar de usar o if, mas não repetir código.

Criado 16 de janeiro de 2020
Ultima resposta 18 de jan. de 2020
Respostas 5
Participantes 3