É… o problema não é só os 17 ifs…
É melhor trancar esse tópico,pelo que eu to vendo vai gerar flames comparados aos de Java versus PHP.
[quote=rogelgarcia]Nova arquitetura, agora suporta qualquer tipo de condição. As outras estruturas, não coloquei aqui para não ficar lotando…
[code]
class Usuario {
Date nascimento;
int numeroFilhos;
}
enum Classificacao {
A(new ClassificadorA()),
B(new ClassificadorB()),
C(new ClassificadorC()),
LIMBO(new ClassificadorLimbo());
Classificador classificador;
Classificacao(Classificador classificador){
this.classificador = classificador;
}
public static Classificacao get(Usuario usuario) {
for (Classificacao c : values()) {
if(c.classificador.isClassificacao(c, usuario)){
return c;
}
}
throw new RuntimeException("resultado inesperado");
}
}
interface Classificador {
public boolean isClassificacao(Classificacao c, Usuario usuario);
}
class ClassificadorA implements Classificador{
public boolean isClassificacao(Classificacao c, Usuario usuario) {
return EtapaDaVida.get(usuario.nascimento) == EtapaDaVida.JOVEM;
}
}
class ClassificadorB implements Classificador{
public boolean isClassificacao(Classificacao c, Usuario usuario) {
return EtapaDaVida.get(usuario.nascimento) == EtapaDaVida.ADULTO;
}
}
class ClassificadorC implements Classificador{
public boolean isClassificacao(Classificacao c, Usuario usuario) {
return EtapaDaVida.get(usuario.nascimento) == EtapaDaVida.IDOSO || usuario.numeroFilhos > 2;
}
}
class ClassificadorLimbo implements Classificador{
public boolean isClassificacao(Classificacao c, Usuario usuario) {
return true;
}
}
public class Example2 {
public static void main(String[] args) {
Map<Classificacao, List<Usuario>> grupos = new HashMap<Classificacao, List<Usuario>>();
for(Classificacao etapa: Classificacao.values()){
grupos.put(etapa, new ArrayList());
}
//aqui é onde viria o ninho de ifs
for (Usuario usuario : getListaUsuarios()) {
Classificacao classificacao = Classificacao.get(usuario);
grupos.get(classificacao).add(usuario);
}
}
public static ArrayList<Usuario> getListaUsuarios() {
return new ArrayList<Usuario>();
}
}
[/code][/quote]
Esse aqui ficou muito bom!
Se ficar verboso de mais, a chance da gambiarra ocorrer aumenta.
[quote]na boa? Ainda prefiro assim do que aninhar 300 ifs.
Desculpe, mas ainda assim penso que não existe motivo para 17 ifs seguidos… [/quote]
Isso depende. Eu não vi o fonte do autor do post. Se o patrão dele disse que é possivel melhorar, eu acredito. Provavelmente as condicionais que ele está usando são simples.
Quanto o problema dos IFs serem SEMPRE retirados não concordo pelos motivos que eu já citei.
Pessoal só tá expressando idéias e opiniões… É normal pessoas diferentes terem opiniões diferentes… Ninguém aqui está brigando…
Temos que aprender a conversar e respeitar as opiniões (como está ocorrendo aqui) ao invés de ficar trancando tópicos por medo de gerar flames…
Acho ainda que a discussão aqui, gera um resultado saudável… até para quem está lendo o fórum… Iniciantes por exemplo, podem ver exemplos de casos onde existem ifs, outros casos onde foi montada uma arquitetura, e até uma refatoração… É extremamente difícil achar exemplos assim na internet…
Por falar nisso… nem sei o motivo de trancarem tópicos só porque está “flamando”… Povo quer discutir… deixa discutir… heheheh
PS: Java é melhor que PHP. kkkk
Pessoal só tá expressando idéias e opiniões… É normal pessoas diferentes terem opiniões diferentes… Ninguém aqui está brigando…
Temos que aprender a conversar e respeitar as opiniões (como está ocorrendo aqui) ao invés de ficar trancando tópicos por medo de gerar flames…
Por falar nisso… nem sei o motivo de trancarem tópicos só porque está “flamando”… Povo quer discutir… deixa discutir… heheheh
PS: Java é melhor que PHP. kkkk
[/quote]
Também acho o java melhor,mas é melhor falar baixo pros fanboy não se sentirem ofendidos.
Pessoal só tá expressando idéias e opiniões… É normal pessoas diferentes terem opiniões diferentes… Ninguém aqui está brigando…
Temos que aprender a conversar e respeitar as opiniões (como está ocorrendo aqui) ao invés de ficar trancando tópicos por medo de gerar flames…
Acho ainda que a discussão aqui, gera um resultado saudável… até para quem está lendo o fórum… Iniciantes por exemplo, podem ver exemplos de casos onde existem ifs, outros casos onde foi montada uma arquitetura, e até uma refatoração… É extremamente difícil achar exemplos assim na internet…
Por falar nisso… nem sei o motivo de trancarem tópicos só porque está “flamando”… Povo quer discutir… deixa discutir… heheheh
PS: Java é melhor que PHP. kkkk
[/quote]
1+
Pessoal só tá expressando idéias e opiniões… É normal pessoas diferentes terem opiniões diferentes… Ninguém aqui está brigando…
Temos que aprender a conversar e respeitar as opiniões (como está ocorrendo aqui) ao invés de ficar trancando tópicos por medo de gerar flames…
Acho ainda que a discussão aqui, gera um resultado saudável… até para quem está lendo o fórum… Iniciantes por exemplo, podem ver exemplos de casos onde existem ifs, outros casos onde foi montada uma arquitetura, e até uma refatoração… É extremamente difícil achar exemplos assim na internet…
Por falar nisso… nem sei o motivo de trancarem tópicos só porque está “flamando”… Povo quer discutir… deixa discutir… heheheh
PS: Java é melhor que PHP. kkkk
[/quote]
o GUJ tá ficando ruim pelo exagero.
Já ví moderador aqui falar de coisas totalmente fora da TI e trancar tópicos só por desviar um pouco do assunto.
PS: Não… PHP é bem mais legal! Huahuahuahua
Gostei das suas idéias. As vezes agente acaba usando IFs porque não consegue visualizar forma melhor.
voce faria diferente como ??? ?
[quote=Luiz Augusto Prado]Quanto o problema dos IFs serem SEMPRE retirados não concordo pelos motivos que eu já citei. [/quote]Uma coisa é ter ifs, outra coisa é ter 17…
voce faria diferente como ??? ?[/quote]Ele já fez…
[quote=Luiz Augusto Prado][quote]Novamente, sério? Qual?
Qual o motivo se justifica a não usar algum pattern e usar toneladas de ifs independentes de objetos/strings?
Estou perguntando numa boa. Atualmente não imagino. [/quote]
Em algum momento vc pode ter que classificar em que tipo de objeto se enquadra um dado que acaba de chegar. Nessa hora vc vai precisar usar if. Vc, nem eu podemos imaginar a situação melhor agora porque isso depende da lógica de negócio. Vas vou supor uma bem simples…
o usuário vai se cadastrar em algum lugar e dependendo da idade dele eu vou colocar ele em uma classe diferente:
if( dadosDoUsuario.idade < 18 )
{
os dados vão para o objeto a
}
else if( dadosDoUsuario.idade >= 18 && dadosDoUsuario.idade<55 )
{
os dados vão para o objeto b
}
else if( dadosDoUsuario.idade >= 55 && dadosDoUsuario.idade<120 )
{
os dados vão para o objeto c
}
else
{
os dados vão pro limbo
}
[/quote]
esse caso seu da pra usar um switch bem bonitão…
pode até ser que exista situações que exigem várias verificações que não podem ser colocadas num switch mas nesse caso, a boa prática recomenda MUDAR o jeito que está fazendo
Imagina dar manutenção num código com 17 ifs? vc vai procurar 1 por 1 toda vez q for mudar algo? e se tiver que tirar algo? ou colocar algo q depende de uma condição que está ali? ia encadear dentro dos IFs? se envolver threads então…
Algumas vezes deve-se repensar na estratégia sim e evitar isso… fazer como o Bruno Laturner falou por exemplo de colocar as verificações em métodos… desse modo, seria mais facil uma manutenção no código depois… ou pode-se usar recursividade, switch, bibliotecas de auxilio, sei la…
Cara se tem uma coisa que eu realmente to esperando no Java 8,é o suporte a lambda expressions, que com certeza vai retirar bastante ifs dos códigos.
[quote=mariazinhahappy]meu codigo e esse aqui
[code]@Override
public Object lerArquivoTXTPrepararObjetosParaVirarXML_arvore() {
mae_VO mae = new mae_VO();
filha_VO filha = new filha_VO();
neta_VO neta = new neta_VO();
binesta_VO binesta = new binesta_VO();
try {
Scanner arquivo = new Scanner(new File("C:\\Projeto Revistas\\catalogacao_2013.log"));
while (arquivo.hasNext()) {
String linha = arquivo.nextLine();
// coisas que estao no começo
if (linha.contains("Revifilhaa Mãe") && linha.contains("Início da Execução")) {
mae.setDataFinal(linha);
mae.setDataInicial(linha);
mae.setDescricao(linha);
mae.setHoraFinal(linha);
mae.setHoraInicio(linha);
mae.setId(linha);
if (linha.contains("erro")) {
neta.setfilhaatus(Enumfilhaatus.ERRO);
} else if (linha.contains("atual")) {
neta.setfilhaatus(Enumfilhaatus.ATUAL);
} else
neta.setfilhaatus(Enumfilhaatus.U2013);
}
if (linha.contains("Revifilhaa Filha") && linha.contains("Início da Execução")) {
filha.setDataFinal(linha);
filha.setDataInicial(linha);
filha.setDescricao(linha);
filha.setHoraFinal(linha);
filha.setHoraInicio(linha);
filha.setId(linha);
if (linha.contains("erro")) {
neta.setfilhaatus(Enumfilhaatus.ERRO);
} else if (linha.contains("atual")) {
neta.setfilhaatus(Enumfilhaatus.ATUAL);
} else
neta.setfilhaatus(Enumfilhaatus.U2013);
}
if (linha.contains("Revifilhaa Neta") && linha.contains("Início da Execução")) {
neta.setDataFinal(linha);
neta.setDataInicial(linha);
neta.setDescricao(linha);
neta.setHoraFinal(linha);
neta.setHoraInicio(linha);
neta.setId(linha);
if (linha.contains("erro")) {
neta.setfilhaatus(Enumfilhaatus.ERRO);
} else if (linha.contains("atual")) {
neta.setfilhaatus(Enumfilhaatus.ATUAL);
} else
neta.setfilhaatus(Enumfilhaatus.U2013);
}
if (linha.contains("Revifilhaa Bisneta") && linha.contains("Início da Execução")) {
binesta.setDataFinal(linha);
binesta.setDataInicial(linha);
binesta.setDescricao(linha);
binesta.setHoraFinal(linha);
binesta.setHoraInicio(linha);
binesta.setId(linha);
if (linha.contains("erro")) {
neta.setfilhaatus(Enumfilhaatus.ERRO);
} else if (linha.contains("atual")) {
neta.setfilhaatus(Enumfilhaatus.ATUAL);
} else
neta.setfilhaatus(Enumfilhaatus.U2013);
}
// coisas que estao no final
if (linha.contains("Revista Mãe") && linha.contains("Executado com")) {
mae.getLifilhaaSuites().add(filha);
filha = new filha_VO();
}
if (linha.contains("Revista Filha") && linha.contains("Executado com")
&& linha.contains("2013")) {
filha.getLifilhaanetas().add(neta);
neta = new neta_VO();
}
if (linha.contains("Revista Bisneta") && linha.contains("Executado com")) {
neta.getLifilhaabinestas().add(binesta);
binesta = new binesta_VO();
}
}
} catch (Exception e) {
e.printStackTrace();
}
return mae;
} [/code] [/quote]
o certo seria retrabalhar como voce está desenvolvendo…
pensando aqui, poderia fazer da seguinte maneira:
criar uma interface FAMILIA com os métodos que as classes possuem em comum… depois ficaria bem mais facil trabalhar fazendo algo como:
Familia mae;
Familia filha;
// etc
// while...
if ( !linha.contains("Início da Execução") ) {
// faz as coisas como "Executado com"...
continue;
}
// chegou aqui, sabe que a linha tem "Início da Execução"
checkMae(linha);
checkFilha(linha);
// etc
// dentro desses métodos, voce faz algo como:
public void checkMae(linha) {
if ( !linha.contains("Mãe") ) {
return;
}
mae = new mae_VO( linha ); // aqui dentro voce cria todos os SET
checkStatus( linha, mae ); // aqui voce checa se tem erros e usa um método do objeto passado por parametro no SET
}
NÂO É A MELHOR MANEIRA. Pensei rapidamente nisso aqui agora… Mas fica bem mais tranquilo o código e essas ideias podem abrir a sua cabeça ou do pessoal
EU tenho que viajar hoje, mas ainda gostaria de deixar essa questão aberta.
Sim, entendo tudo o que dizem a respeito da facilidade da manutenção.
Mas mesmo retirando o excesso de IFs, os erros podem até se tornar mais fáceis de ocorrerem.
Eu vou mostrar isso no próximo post e gostaria de discutir isso com o pessoal aqui.
Quero saber como vcs evitam os tipos de erros e gambiarras que eu vou mostrar.
Exemplo do que ocorreu em um momento com o rogelgarcia :
if(usuario.numeroFilhos <= 2)
{
iterator.remove();
}
Ontem fui dormir remoendo o código do rogelgarcia , que achei muito legal (abre a cabeça), e tive um insight.
Uma regra geral para a retirada de excessos de IFs. É um problema “matemático”.
Assim que voltar dou o retorno aqui.
[quote=Luiz Augusto Prado]Quero saber como vcs evitam os tipos de erros e gambiarras que eu vou mostrar.
Exemplo do que ocorreu em um momento com o rogelgarcia :
if(usuario.numeroFilhos <= 2)
{
iterator.remove();
}
[/quote]TDD
[=
[quote=mariazinhahappy]meu codigo e esse aqui
[code]@Override
public Object lerArquivoTXTPrepararObjetosParaVirarXML_arvore() {
mae_VO mae = new mae_VO();
filha_VO filha = new filha_VO();
neta_VO neta = new neta_VO();
binesta_VO binesta = new binesta_VO();
try {
Scanner arquivo = new Scanner(new File("C:\\Projeto Revistas\\catalogacao_2013.log"));
while (arquivo.hasNext()) {
String linha = arquivo.nextLine();
// coisas que estao no começo
if (linha.contains("Revifilhaa Mãe") && linha.contains("Início da Execução")) {
mae.setDataFinal(linha);
mae.setDataInicial(linha);
mae.setDescricao(linha);
mae.setHoraFinal(linha);
mae.setHoraInicio(linha);
mae.setId(linha);
if (linha.contains("erro")) {
neta.setfilhaatus(Enumfilhaatus.ERRO);
} else if (linha.contains("atual")) {
neta.setfilhaatus(Enumfilhaatus.ATUAL);
} else
neta.setfilhaatus(Enumfilhaatus.U2013);
}
if (linha.contains("Revifilhaa Filha") && linha.contains("Início da Execução")) {
filha.setDataFinal(linha);
filha.setDataInicial(linha);
filha.setDescricao(linha);
filha.setHoraFinal(linha);
filha.setHoraInicio(linha);
filha.setId(linha);
if (linha.contains("erro")) {
neta.setfilhaatus(Enumfilhaatus.ERRO);
} else if (linha.contains("atual")) {
neta.setfilhaatus(Enumfilhaatus.ATUAL);
} else
neta.setfilhaatus(Enumfilhaatus.U2013);
}
if (linha.contains("Revifilhaa Neta") && linha.contains("Início da Execução")) {
neta.setDataFinal(linha);
neta.setDataInicial(linha);
neta.setDescricao(linha);
neta.setHoraFinal(linha);
neta.setHoraInicio(linha);
neta.setId(linha);
if (linha.contains("erro")) {
neta.setfilhaatus(Enumfilhaatus.ERRO);
} else if (linha.contains("atual")) {
neta.setfilhaatus(Enumfilhaatus.ATUAL);
} else
neta.setfilhaatus(Enumfilhaatus.U2013);
}
if (linha.contains("Revifilhaa Bisneta") && linha.contains("Início da Execução")) {
binesta.setDataFinal(linha);
binesta.setDataInicial(linha);
binesta.setDescricao(linha);
binesta.setHoraFinal(linha);
binesta.setHoraInicio(linha);
binesta.setId(linha);
if (linha.contains("erro")) {
neta.setfilhaatus(Enumfilhaatus.ERRO);
} else if (linha.contains("atual")) {
neta.setfilhaatus(Enumfilhaatus.ATUAL);
} else
neta.setfilhaatus(Enumfilhaatus.U2013);
}
// coisas que estao no final
if (linha.contains("Revista Mãe") && linha.contains("Executado com")) {
mae.getLifilhaaSuites().add(filha);
filha = new filha_VO();
}
if (linha.contains("Revista Filha") && linha.contains("Executado com")
&& linha.contains("2013")) {
filha.getLifilhaanetas().add(neta);
neta = new neta_VO();
}
if (linha.contains("Revista Bisneta") && linha.contains("Executado com")) {
neta.getLifilhaabinestas().add(binesta);
binesta = new binesta_VO();
}
}
} catch (Exception e) {
e.printStackTrace();
}
return mae;
} [/code] [/quote]
Olha… Pelo q sakei d seu código, pra melhorar a legibilidade tb, ao invés de só ifs, vc poderia usar com certeza “if e else if”.
[quote=andredecotia][quote=mariazinhahappy]meu codigo e esse aqui
[code]@Override
public Object lerArquivoTXTPrepararObjetosParaVirarXML_arvore() {
mae_VO mae = new mae_VO();
filha_VO filha = new filha_VO();
neta_VO neta = new neta_VO();
binesta_VO binesta = new binesta_VO();
try {
Scanner arquivo = new Scanner(new File("C:\\Projeto Revistas\\catalogacao_2013.log"));
while (arquivo.hasNext()) {
String linha = arquivo.nextLine();
// coisas que estao no começo
if (linha.contains("Revifilhaa Mãe") && linha.contains("Início da Execução")) {
mae.setDataFinal(linha);
mae.setDataInicial(linha);
mae.setDescricao(linha);
mae.setHoraFinal(linha);
mae.setHoraInicio(linha);
mae.setId(linha);
if (linha.contains("erro")) {
neta.setfilhaatus(Enumfilhaatus.ERRO);
} else if (linha.contains("atual")) {
neta.setfilhaatus(Enumfilhaatus.ATUAL);
} else
neta.setfilhaatus(Enumfilhaatus.U2013);
}
if (linha.contains("Revifilhaa Filha") && linha.contains("Início da Execução")) {
filha.setDataFinal(linha);
filha.setDataInicial(linha);
filha.setDescricao(linha);
filha.setHoraFinal(linha);
filha.setHoraInicio(linha);
filha.setId(linha);
if (linha.contains("erro")) {
neta.setfilhaatus(Enumfilhaatus.ERRO);
} else if (linha.contains("atual")) {
neta.setfilhaatus(Enumfilhaatus.ATUAL);
} else
neta.setfilhaatus(Enumfilhaatus.U2013);
}
if (linha.contains("Revifilhaa Neta") && linha.contains("Início da Execução")) {
neta.setDataFinal(linha);
neta.setDataInicial(linha);
neta.setDescricao(linha);
neta.setHoraFinal(linha);
neta.setHoraInicio(linha);
neta.setId(linha);
if (linha.contains("erro")) {
neta.setfilhaatus(Enumfilhaatus.ERRO);
} else if (linha.contains("atual")) {
neta.setfilhaatus(Enumfilhaatus.ATUAL);
} else
neta.setfilhaatus(Enumfilhaatus.U2013);
}
if (linha.contains("Revifilhaa Bisneta") && linha.contains("Início da Execução")) {
binesta.setDataFinal(linha);
binesta.setDataInicial(linha);
binesta.setDescricao(linha);
binesta.setHoraFinal(linha);
binesta.setHoraInicio(linha);
binesta.setId(linha);
if (linha.contains("erro")) {
neta.setfilhaatus(Enumfilhaatus.ERRO);
} else if (linha.contains("atual")) {
neta.setfilhaatus(Enumfilhaatus.ATUAL);
} else
neta.setfilhaatus(Enumfilhaatus.U2013);
}
// coisas que estao no final
if (linha.contains("Revista Mãe") && linha.contains("Executado com")) {
mae.getLifilhaaSuites().add(filha);
filha = new filha_VO();
}
if (linha.contains("Revista Filha") && linha.contains("Executado com")
&& linha.contains("2013")) {
filha.getLifilhaanetas().add(neta);
neta = new neta_VO();
}
if (linha.contains("Revista Bisneta") && linha.contains("Executado com")) {
neta.getLifilhaabinestas().add(binesta);
binesta = new binesta_VO();
}
}
} catch (Exception e) {
e.printStackTrace();
}
return mae;
} [/code] [/quote]
Olha… Pelo q sakei d seu código, pra melhor a legibilidade tb, ao invés de só ifs, vc poderia usar com certeza “if e else if”.[/quote]Novamente te pergunto, vale a pena ter esse monte de if?
[quote=Hebert Coelho][quote=andredecotia][quote=mariazinhahappy]meu codigo e esse aqui
[code]@Override
public Object lerArquivoTXTPrepararObjetosParaVirarXML_arvore() {
mae_VO mae = new mae_VO();
filha_VO filha = new filha_VO();
neta_VO neta = new neta_VO();
binesta_VO binesta = new binesta_VO();
try {
Scanner arquivo = new Scanner(new File("C:\\Projeto Revistas\\catalogacao_2013.log"));
while (arquivo.hasNext()) {
String linha = arquivo.nextLine();
// coisas que estao no começo
if (linha.contains("Revifilhaa Mãe") && linha.contains("Início da Execução")) {
mae.setDataFinal(linha);
mae.setDataInicial(linha);
mae.setDescricao(linha);
mae.setHoraFinal(linha);
mae.setHoraInicio(linha);
mae.setId(linha);
if (linha.contains("erro")) {
neta.setfilhaatus(Enumfilhaatus.ERRO);
} else if (linha.contains("atual")) {
neta.setfilhaatus(Enumfilhaatus.ATUAL);
} else
neta.setfilhaatus(Enumfilhaatus.U2013);
}
if (linha.contains("Revifilhaa Filha") && linha.contains("Início da Execução")) {
filha.setDataFinal(linha);
filha.setDataInicial(linha);
filha.setDescricao(linha);
filha.setHoraFinal(linha);
filha.setHoraInicio(linha);
filha.setId(linha);
if (linha.contains("erro")) {
neta.setfilhaatus(Enumfilhaatus.ERRO);
} else if (linha.contains("atual")) {
neta.setfilhaatus(Enumfilhaatus.ATUAL);
} else
neta.setfilhaatus(Enumfilhaatus.U2013);
}
if (linha.contains("Revifilhaa Neta") && linha.contains("Início da Execução")) {
neta.setDataFinal(linha);
neta.setDataInicial(linha);
neta.setDescricao(linha);
neta.setHoraFinal(linha);
neta.setHoraInicio(linha);
neta.setId(linha);
if (linha.contains("erro")) {
neta.setfilhaatus(Enumfilhaatus.ERRO);
} else if (linha.contains("atual")) {
neta.setfilhaatus(Enumfilhaatus.ATUAL);
} else
neta.setfilhaatus(Enumfilhaatus.U2013);
}
if (linha.contains("Revifilhaa Bisneta") && linha.contains("Início da Execução")) {
binesta.setDataFinal(linha);
binesta.setDataInicial(linha);
binesta.setDescricao(linha);
binesta.setHoraFinal(linha);
binesta.setHoraInicio(linha);
binesta.setId(linha);
if (linha.contains("erro")) {
neta.setfilhaatus(Enumfilhaatus.ERRO);
} else if (linha.contains("atual")) {
neta.setfilhaatus(Enumfilhaatus.ATUAL);
} else
neta.setfilhaatus(Enumfilhaatus.U2013);
}
// coisas que estao no final
if (linha.contains("Revista Mãe") && linha.contains("Executado com")) {
mae.getLifilhaaSuites().add(filha);
filha = new filha_VO();
}
if (linha.contains("Revista Filha") && linha.contains("Executado com")
&& linha.contains("2013")) {
filha.getLifilhaanetas().add(neta);
neta = new neta_VO();
}
if (linha.contains("Revista Bisneta") && linha.contains("Executado com")) {
neta.getLifilhaabinestas().add(binesta);
binesta = new binesta_VO();
}
}
} catch (Exception e) {
e.printStackTrace();
}
return mae;
} [/code] [/quote]
Olha… Pelo q sakei d seu código, pra melhor a legibilidade tb, ao invés de só ifs, vc poderia usar com certeza “if e else if”.[/quote]Novamente te pergunto, vale a pena ter esse monte de if?[/quote]
Hum…
Faça a leitura do código dela, e com base “nele” diga-nos como vc o implementaria… Na teoria todos sabemos o q um monte de ifs pode significar, na prática, temos o código acima para com base nele opinar.
Abraços,
André AS.
Hum…
Faça a leitura do código dela, e com base “nele” diga-nos como vc o implementaria… Na teoria todos sabemos o q um monte de ifs pode significar, na prática, temos o código acima para com base nele opinar.
Abraços,
André AS.
[/quote]Ei, você quem disse lá tras que monte de if pode não ser má prática. Por isso te refiz a pergunta:[quote=Hebert Coelho][quote=andredecotia]Tb recomendo o livro Clean Code.
Contudo, há situações, em q vão haver vários ifs, e nem por isso significaria má prática.[/quote]Sério? Qual?[/quote]Pode ser que o modo como você trate seus ifs melhore, mas eu ainda não consigo pensar em um.
Hum…
Faça a leitura do código dela, e com base “nele” diga-nos como vc o implementaria… Na teoria todos sabemos o q um monte de ifs pode significar, na prática, temos o código acima para com base nele opinar.
Abraços,
André AS.
[/quote]Ei, você quem disse lá tras que monte de if pode não ser má prática. Por isso te refiz a pergunta:[quote=Hebert Coelho][quote=andredecotia]Tb recomendo o livro Clean Code.
Contudo, há situações, em q vão haver vários ifs, e nem por isso significaria má prática.[/quote]Sério? Qual?[/quote]Pode ser que o modo como você trate seus ifs melhore, mas eu ainda não consigo pensar em um.[/quote]
Talvez eu não tenha sido claro, vou recolocar de outra forma: Vc poderia com base no q ela nos enviou, analisar, pensar e então, enviar uma opinião factível, visto q ela é estagiária, qlq. coisa muito abstrata é possível q não assimile…
Opinei sendo objetivo com base no q ela enviou. Se ficasse falando de TDD, livros Refactoring, apenas, acho q não ajudaria ela, tanto q, ela enviou o código pra esta finalidade, avaliarmos e com base nele podermos ser mais diretos. Desculpe, mas não foi o seu caso.