é verdade que minha maneira de implementar com 17 ifs em um metodo esta errado?
[quote=mariazinhahappy]é verdade que minha maneira de implementar com 17 ifs em um metodo esta errado?[/quote]Não é uma boa prática.
O melhor é você definir e repensar seu método.
Esse livro é muito bom para quem precisa desse tipo de coisa: Use a Cabeça - Orientação a Objeto.
nao é errado se fosse errado nao existia IF…
mas a alternativa é usar SWITCH…
;]
http://www.tiexpert.net/programacao/java/switch-case-default.php
[quote=charleston10]nao é errado se fosse errado nao existia IF…
mas a alternativa é usar SWITCH…[/quote]
Mais alguém precisa estudar orientação à objetos…
http://c2.com/cgi/wiki?SwitchStatementsSmell
Não é EXATAMENTE errado, mas com certeza não é uma boa prática… o código tem que ser auto explicativo, a leitura dele deve ser fluida… como dizem por ai: “Qualquer um faz código que um computador entenda, mas apenas bons profissionais fazem código que pessoas entendem”… ou algo semelhante…
Assiste esse vídeo, é um pequeno resumo do livro Clean Code do Uncle Bob… vai abrir um pouco sua visão sobre isso:
entao posso usar o swtich break no lugar dos 17 ifs? é melhor?
17 ifs? Você ta testando o que?
Com certeza deve haver uma lógica mais apropriada e simples para seu código.
Tá… tá errado.
Posta o código aqui e fale o que ele faz, que a gente pode ajudar melhor.
Certamente esse seu codigo precisa de uma refatoração .
Sugiro o livro do Martin Fowler Refatoração
Trocar if por swtich não ira resolver o problema.
Realmente códigos com muitos if, não são nem um pouco “elegantes”.
Você deve estudar bem Orientação a Objetos, seja em java, c++, ou qualquer outra linguagem.
Entender o que é acoplamento estático e dinâmico, ou seja saber aproveitar do mecanismo de polimorfismo que linguagens orientadas a objetos
oferecem.
Após estar fluente nos conceitos básicos de OO, ler sobre padrões de projetos, existe muitos livros sobre o assunto, e pode ter certeza
que ira escrever códigos de qualidade.
[quote=ViniGodoy][quote=charleston10]nao é errado se fosse errado nao existia IF…
mas a alternativa é usar SWITCH…[/quote]
Mais alguém precisa estudar orientação à objetos…
http://c2.com/cgi/wiki?SwitchStatementsSmell[/quote]
Não comentei que eu iria fazer 17 verificações de condições no Switch apenas comentei que é uma alternativa que
tem outro modo de fazer verificações com estrutura condicional.
Eu não faria isso, de alguma outra forma eu pensaria nem que fosse 3h para tentar minimizar o máximo possível de
código.
Até pq não sei oq ele ta tentando fazer, se é programação estruturada ou orientação a objetos, nao tem como falar
pra usar POO sendo qe nao sei… seria mais facil ele postrar o código…
;]
Essas perguntas estão meio estranhas, kkkkkk!!!
[quote=charleston10]
Não comentei que eu iria fazer 17 verificações de condições no Switch apenas comentei que é uma alternativa que
tem outro modo de fazer verificações com estrutura condicional.
Eu não faria isso, de alguma outra forma eu pensaria nem que fosse 3h para tentar minimizar o máximo possível de
código.
Até pq não sei oq ele ta tentando fazer, se é programação estruturada ou orientação a objetos, nao tem como falar
pra usar POO sendo qe nao sei… seria mais facil ele postrar o código…
;][/quote]
Mesmo que fosse programação estruturada, ainda cheira mal 17 ifs seguidos. Geralmente você pode resolver melhor usando alguma estrutura associativa, ponteiros, ou outras coisas similares.
[quote=ViniGodoy][quote=charleston10]
Não comentei que eu iria fazer 17 verificações de condições no Switch apenas comentei que é uma alternativa que
tem outro modo de fazer verificações com estrutura condicional.
Eu não faria isso, de alguma outra forma eu pensaria nem que fosse 3h para tentar minimizar o máximo possível de
código.
Até pq não sei oq ele ta tentando fazer, se é programação estruturada ou orientação a objetos, nao tem como falar
pra usar POO sendo qe nao sei… seria mais facil ele postrar o código…
;][/quote]
Mesmo que fosse programação estruturada, ainda cheira mal 17 ifs seguidos. Geralmente você pode resolver melhor usando alguma estrutura associativa, ponteiros, ou outras coisas similares.[/quote]
Ou simplesmente verificar a possibilidade de usar o padrão Strategy. Inclusive, o próprio ViniGodoy apresentou um exemplo de leitura e compreensão simples.
Dá uma olhada: http://www.guj.com.br/java/55885-como-nao-utilizar-if-ou-switch#293436
Uma dica Maria, tente pensar mais orientado a objetos, parece que tudo está muito estruturado na sua cabeça. Analise com calma seu código, pode haver melhores alternativas.
Uma dica é utilizar-se de recursos pré estabelecidos, como um check style.
O PMD é uma ótima ferramenta.
Em geral, as ferramentas de check style conseguem auxiliar em casos como este, com muitas verificações lógicas em um método, excesso de linhas, falta de padronização, falhas ao atender as convenções de nomenclatura e especificações do Java.
Dá trabalho, mas é bem interessante e útil.
A regra geral que eu uso é tentar manter métodos tão curtos e objetivos quanto possível.
Fazendo isso você percebe que a reusabilidade de código vira algo natural.
Uma função deveria fazer somente uma coisa, se suas funções fazem mais do que isso, pode ser uma boa ideia repensá-las.
Um macete pra conseguir isso é você tentar nomear a função, se for difícil pensar em um nome pra dizer o que ela faz, ela provavelmente está fazendo mais do que uma coisa.
(Todas as dicas que dei aqui eu li no livro Clean Code)
Pra saber se um código precisa ser refatorado eu olho para o teste unitário. Qt mais complexo o teste, mais o método precisa ser refatorado. =]
O nome do livro já diz tudo.
se for encadeado, máximo de 2 ou 3 ifs… se nao for encadeado, só pensar em outra maneira de colocar seu código como usando switch, recursividade sei la…
17 ifs ta errado… imagina a manutenção disso depois
[quote=emanuelmm]Pra saber se um código precisa ser refatorado eu olho para o teste unitário. Qt mais complexo o teste, mais o método precisa ser refatorado. =]
[/quote]Se a pessoa não sabe que 17 ifs é uma péssima prática nem imagino como ficariam os testes… Acho que 35 métodos para cada método testado… -_-’’