Campanha Anti IF

25 respostas
M

[size=16]Anti If Campaign[/size]
[size=12]Less IFs, More Power[/size]

Have you ever wondered how IFs impact your code? Avoid dangerous IFs and use Object Oriented Principles to build a code that is flexible, changeable and easily testable, and will get rid of a lot of headaches and weekends spent debugging!

Learn how to write effective code the easy way!

http://www.antiifcampaign.com

25 Respostas

D

desculpe o tipo de comentário…
mas… kkkkkkk essa foi boa… comédia

O

Realente dá pra diminuir o uso do if, mas pior do que um if desnecessário simples, é um com instanceof.

F

Achei interessante a campanha, mas fico pensando comigo, será que essa turma não tem + o que fazer ?
hahahah

M

Legal… vou mandar meu código sem if pra eles.

P

Stragegy? Rule Engine?

=)

E

Apoiado.

Vocês não sabem o que é dar manutenção em um legado com IF de 50 linhas…

J

Pois eu vou lançar uma campanha contra as atribuições! Chega de explorar o pobre do sinal de atribuição!

Freedom for =

L

filipenf:
Achei interessante a campanha, mas fico pensando comigo, será que essa turma não tem + o que fazer ?
hahahah

Se você olhar bem tem uma empresa por trás desta campanha com o logo dela espalhada por todo o site. No fundo no fundo o que eles
queriam é isso mesmo, que “a campanha” se espalhasse pois junto vai o nome da empresa.

É uma boa estratégia de marketing.

C

josenaldo:
Pois eu vou lançar uma campanha contra as atribuições! Chega de explorar o pobre do sinal de atribuição!

Freedom for =

É isso mesmo!!!

Já conseguimos a liberdade do ->, *, &
Agora é abolirmos a escravatura do =

o/

G

Abandone o “IF”

Adote um “GOTO”

:wink:

J

Grinvon:
Abandone o “IF”

Adote um “GOTO”

;)


Não… GOTO não!!! :frowning:

Edit: Abaixo o If. Faça switches.

J

jaboot:
Grinvon:
Abandone o “IF”

Adote um “GOTO”

;)

Não… GOTO não!!! :frowning:

Cara, usar GOTO é muito arriscado. Segue uma descrição de como fazer isso:

Pra fazer isso, voce tem que matar um gato preto, derramar o sangue sobre a documentação (com diagramas ER funciona melhor) recitar uma série de palavras da cabala demoníaca e furar um boneco vudu do seu gerente e outro do seu cliente. Então, rode o programa.
Extraído do Manual de Programação Demoníaca

Ah, quem usa GOTO não vai pro inferno, porque nem o inferno quer esse tipo de programador.

rssrsrrssrrsrs

T

Grinvon:
Abandone o “IF”

Adote um “GOTO”

;)

Wikipedia: GOTO - Algum desses “Gotos” foi adotado?

L

não entendi? pq?
instanceof não pode ficar dentro de uma condicional?
ele queria criar o componente do instanceof ou queria mudar algum atributo?

F

não entendi? pq?
instanceof não pode ficar dentro de uma condicional?
ele queria criar o componente do instanceof ou queria mudar algum atributo?

Um if com instanceof geralmente indica que você não está usando uma das principais e melhores características de OO, o polimorfismo.

A

Frederico,
Poderia por gentileza mostrar um exemplo?
Pois na minha mente veio o método equals onde usamos instanceof dentro de um if.

@Override public boolean equals(Object other){ if (other == null) return false; if (other == this) return true; if (!(other instanceof MyClass))return false; MyClass otherMyClass = (MyClass)other; //...testa outras propriedades aqui... }

F
asousaj:
Frederico, Poderia por gentileza mostrar um exemplo?
Suponhamos que no seu sistema PessoaFisica e PessoaJuridica estendem a classe Pessoa pois são uma especialização da mesma. Um exemplo simples seria substituir este código:
public void verificarDadosObrigatorios(Pessoa pessoa) {
		
		if(pessoa instanceof PessoaFisica) {
			PessoaFisica pf = (PessoaFisica) pessoa;
			if(pf.getCpf() == null || pf.getCpf().length() != 11) {
				throw new RuntimeException("CPF Inválido.");
			}
		}
		
		if(pessoa instanceof PessoaJuridica) {
			PessoaJuridica pj = (PessoaJuridica) pessoa;
			if(pj.getCnpj() == null || pj.getCnpj().length() != 14) {
				throw new RuntimeException("CNPJ Inválido.");
			}
		}
	}
Por este:
public void verificarDadosObrigatorios(PessoaFisica pf) {
		
		if(pf.getCpf() == null || pf.getCpf().length() != 11) {
			throw new RuntimeException("CPF Inválido.");
		}
	}
	
	public void verificarDadosObrigatorios(PessoaJuridica pj) {
		
		if(pj.getCnpj() == null || pj.getCnpj().length() != 14) {
			throw new RuntimeException("CNPJ Inválido.");
		}
	}
A

fredericomaia10:

Suponhamos que no seu sistema PessoaFisica e PessoaJuridica extendem a classe Pessoa pois são uma especialização da mesma. Um exemplo simples seria substituir este código:

Entendi.
Grato!

D

pra não usar if é só usar for ou while:

[sarcastic]
int i = 0;

for(; i == 0;){

//funciona igual if

break;
}

while(i==0){

//funciona igual if

break;
}
Z

ou usa o ternário

true? metodo1():metodo2()

kkk

F

Ou switch. =)

J

pois é… aproveitando o gancho desse tópico… estou com um problema usando o if e o switch case:

if (qtdePainel == 2) {
                         System.out.println("Estou Aqui ");
			   painel1 = new JPanel();
			 construirPainel1();
			 painel2 = new JPanel();
			 construirPainel2();
			 adicionaPainel1and2();
		}

Quando entro no if ele só constroi o painel 1, não dá erro , nem exceção… nada simplesmente so constroi o painel 1.
então para debug eu chamei os metodos de criação sem o if e criou todas as telas.

painel1 = new JPanel();
			 construirPainel1();
			 painel2 = new JPanel();
			 construirPainel2();
			 adicionaPainel1and2();

mas eu preciso criar estes painéis dinamicamente com if ou switch case… mas com o if e o switch case não funciona…

alguém tem alguma idéia ?

sds

j.silvestre

F

Poste o que há no código dos métodos:

construirPainel1(); painel2 = new JPanel(); construirPainel2(); adicionaPainel1and2();

V

Só um comentário. Esse é um dos usos válidos de instanceof num if.

O problema não é usar ou não um if, ou um instanceof, mas sim, usar um if onde o polimorfismo seria mais adequado.

J

Pessoal… achei o erro, o IF estava funcionando corretamente … o problema era meu que não estava atualizando as variaveis corretamente…

sds

j.silvestre

Criado 25 de junho de 2009
Ultima resposta 31 de jul. de 2013
Respostas 25
Participantes 20