Refatorar

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://www.refactoring.com

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://www.refactoring.com

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.