Boa tarde senhores,
fui fazer um teste numa empresa e tinha uma questão para refaturar, esse if para o menor numeros de linhas possiveis.
Como vocês fariam?
if (a ==b)
c = true;
}else{
c = false;
}
Boa tarde senhores,
fui fazer um teste numa empresa e tinha uma questão para refaturar, esse if para o menor numeros de linhas possiveis.
Como vocês fariam?
if (a ==b)
c = true;
}else{
c = false;
}
Saca só: a == b é uma comparação, e isso pode ser true ou false. Pois bem, vc pode fazer isso:
boolean c = (a ==b);
ue entao erraram pq a tecnica de refatoring , o objetivo nao eh diminuir o nro de linhas… e sim melhorar a compreensao do codigo e qto mais linhas ou menos linhas nao quer dizer que o codigo da ruim ou bom. E sim a compreensao dele. É tanto que há codigos apos refatorados ficam maiores que a versao anterior, porem a facilidade de compreensao para outro programador se torna mais facil…
por exemplo a resposta do colega peczenyj
nao satisfaz o processo de refatoracao, ta dificil de ler isso ai…
qualquer duvida sobre refactoring:
http://camilolopes.wordpress.com/2008/08/11/boas-praticas-com-refactoring/
flw
Acho que é uma questão de ponto de vista, eu consegui ler perfeitamente, assim como alguns colegas.
É claro que vc pode apelar para
boolean c= false;
if(a==b) c= true;
ou
c = (a == b) ? true : false;
ou
[code] Map<Boolean,Boolean> m = new Hashtable<Boolean,Boolean>();
m.put(true,true);
m.put(false,false);
boolean x = m.get(1==1);
System.out.println(x);
[/code]
falar que ta dificil de ler… c = (a == b)
é um ofensa auhauhauah … o.O … totalmente simples… desde que C A e B façam sendotido no programa… o maximo que daria pra melhrorar e trocando o nome da variável… mais com certeza é mais facil de ler queif (a ==b)
c = true;
}else{
c = false;
}
da pra trocar o nome da variavel … ai quem sabe ficaria melhor… mais mesmo assim… falar que não ta facil de ler, é uma ofensa ate pra programador iniciante…
Tem um caso que acho bastante comum a refatoração aumentar o numero de linhas de código. Quando voce tem if/elses encadeados ou switch. Quando voce os troca por OO a classe aumenta mas fica bem mais legivel e com uma manutenção melhor.
[quote=LPJava]ue entao erraram pq a tecnica de refatoring , o objetivo nao eh diminuir o nro de linhas… e sim melhorar a compreensao do codigo e qto mais linhas ou menos linhas nao quer dizer que o codigo da ruim ou bom. E sim a compreensao dele. É tanto que há codigos apos refatorados ficam maiores que a versao anterior, porem a facilidade de compreensao para outro programador se torna mais facil…
por exemplo a resposta do colega peczenyj
nao satisfaz o processo de refatoracao, ta dificil de ler isso ai…
qualquer duvida sobre refactoring:
http://camilolopes.wordpress.com/2008/08/11/boas-praticas-com-refactoring/
flw[/quote]
O exemplo citado é simples para avaliar se a refatoração está boa ou ruim. Conforme o peczenyj postou, existe algumas formas diferente de reescrever isso, mas o cleber_zeh disse - “… para o menor numeros de linhas possiveis” - então boolean c = (a ==b); seria uma resposta. Não acho complicado de ler, mas alguns podem achar independente de ser um iniciante ou experiente.
Talvez o termo refatoração do tópico não ficou legal para o exemplo.
Att.
Na verdade, acho que a questão do if é irrelevante pois o compilador e a JVM vão trabalhar praticamente da mesma forma pra qualquer refactoring que não seja escabroso.
Porem o contexto desse if é que pode ser interessante.
[quote=peczenyj]Na verdade, acho que a questão do if é irrelevante pois o compilador e a JVM vão trabalhar praticamente da mesma forma pra qualquer refactoring que não seja escabroso.
Porem o contexto desse if é que pode ser interessante.[/quote]
assim realmente fui infeliz na sua sugestao mais tb acredito que [quote]Talvez o termo refatoração do tópico não ficou legal para o exemplo.[/quote]
eu acredito que o compilador nao vai trabalhar de forma diferente com ou sem refactoring.