EVGD: Códigos Toscos

poxa Daniel, ta complicada a situacao ai.

[quote=danieldestro]Parabéns! Alguns desenvolvedores me surpreendem cada dia mais.

E para quem não entendeu a “piada”:Relatorio rel = lookup(jndi); List<Item> lista = rel.gerarRelatorio(cod); // era só isso[/quote]

Eu acho que o salario do cara que escreveu isso é por quantidade de linha escrita. :shock:

Para enriquecer nosso acervo:

[code]/**

  • Método que corrige a descrição da situação.
  • @param listaItens List(Item)
  • @return String - descrição
    */
    public String situacao(List itens) {
    for (Item item: itens) {
    if (item.getSituacao().equalsIgnoreCase(“Pendente”)) {
    return “Pendente”;
    }
    }
    for (Item item: itens) {
    if (item.getSituacao().equalsIgnoreCase(“Recusado”)) {
    return “Recusado”;
    }
    }
    return “Liberado”;
    }[/code]

Super Hiper Ultra Puxa!

uhauhauhauhauhauhauhauh em um projeto que o louds trab e eu dei manutenção anos depois tinha lá um Welcome to ClassLoader from Hell no comentário uhauhauhauha o louds queria morrer com a pessoa que tava programando junto com ele uhauhauhauhauha :lol:

É assim que se faz construtor:

[code]public class Caraca {
public Caraca (List atributos) {
this.setCod((Long)atributos.get(0));
this.setData((Date)atributos.get(1));
this.setLocal((String)atributos.get(2));
this.setValor((Double)atributos.get(3));
this.setDescricao((String)atributos.get(4));
}

// atributos, getters e setters

}[/code]

O que um “desenvolvedor” deste tem na cabeça?

E tem gente que acha que certificação Java não vale nada. Eu acredito que ajuda a aumentar o nível de conhecimento e qualidade de quem estuda para a prova. Pelo menos isso (talvez) não aconteceria:

if ( codigo.equals(new Long(0)) ) { // ... }

Qual a dificuldade de fazer algo tão simples como:

if( codigo == 0L ) { // ... }
???

[quote=danieldestro]E tem gente que acha que certificação Java não vale nada. Eu acredito que ajuda a aumentar o nível de conhecimento e qualidade de quem estuda para a prova. Pelo menos isso (talvez) não aconteceria:

if ( codigo.equals(new Long(0)) ) { // ... }

Qual a dificuldade de fazer algo tão simples como:

if( codigo == 0L ) { // ... }
???[/quote]

Mas se a variável codigo for uma String, o código não estaria correto?

:roll:

[quote=danieldestro]
Qual a dificuldade de fazer algo tão simples como:

if( codigo == 0L ) { // ... }
???[/quote]

Vai que o cara tirou certificação de Java 1.4, aí ele não saberia disto…hehe

[quote=Yky Mattshawn]Mas se a variável codigo for uma String, o código não estaria correto?

:roll: [/quote]

Absolutamente não, como você quer comparar uma String com um objeto Long?

Vi esses dias isso, simples e direto:

if(false){
//código aqui(sim, código!)
}else{
//mais código
}

[quote=Rafael Nunes][quote=Yky Mattshawn]Mas se a variável codigo for uma String, o código não estaria correto?

:roll: [/quote]

Absolutamente não, como você quer comparar uma String com um objeto Long?[/quote]

Ah, pois é, falei besteira, o equals da String compara só se o objeto passado também for uma String, achei que comparava com o toString() de qualquer parâmetro.

Mesmo assim, acredito que numa situação específica o código fosse aceitável, visto:

      System.out.println((new Long(0)) == (new Long(0))); // false
      System.out.println((new Long(0)) == 0L); // true

Se o código foi escrito antes do Java 1.5 (com auto boxing/unboxing), um equals seria a maneira correta para comparar os dois objetos (levando em conta que, numa circunstância específica, ele “precisa” usar Long e não tipos primitivos).

[quote=Yky Mattshawn]System.out.println((new Long(0)) == (new Long(0))); // false System.out.println((new Long(0)) == 0L); // true [/quote]

Não vejo porque alguém faria isso, a não ser em exemplo de exercício para aprender Java.

Info: o projeto nasceu no Java 5.

E mesmo no Java 1.4, por boa prática:

if( codigo.longValue() == 0L ) {}

Oque acha???

Não seria melhor isso?

if (codigo.equals(0L))

[quote=Schuenemann]Não seria melhor isso?

if (codigo.equals(0L))[/quote]

No java 1.4< isso não funciona. E no Java 5 por que não utilizar boxing? ‘codigo == 0L’

E contriibuindo:

metodoProcedural(){ transacao1.begin(); transacao1.setAutoCommit(false); transacao1.insert(); transacao2.begin(); transacao2.select(); //select dos dados da transacao1 transacao2.close(); transacao1.commit(); transacao1.close(); } }

[quote=danieldestro][quote=Yky Mattshawn]System.out.println((new Long(0)) == (new Long(0))); // false System.out.println((new Long(0)) == 0L); // true [/quote]

Não vejo porque alguém faria isso, a não ser em exemplo de exercício para aprender Java.

Info: o projeto nasceu no Java 5.

E mesmo no Java 1.4, por boa prática:

if( codigo.longValue() == 0L ) {}

Oque acha???[/quote]

Concordo contigo. Entretanto, insisto: o que eu tentei dizer é que o código apresentado, num projeto Java 1.4, seria aceitável. Ou seja, o cara pode não ter feito o que é mais indicado (de acordo contigo, não seguiu as “boas práticas”), ainda assim, o código dele está “correto”, o que não quer dizer que seja o que todos devem fazer.

O que penso, em conclusão: o código não está errado.

Verdade, não há problema com literais.

É que recentemente tive problema com um código do tipo:

if (ap1.getId() == ap2.getId())

E isso só funcionava para valores dentro do cache.

Também contribuindo:

boolean preto;
//(código)
if (preto = !preto) { ... }

Isso mesmo, o cara fez a atribuição no próprio if (e não foi sem querer).

[quote=Yky Mattshawn]Concordo contigo. Entretanto, insisto: o que eu tentei dizer é que o código apresentado, num projeto Java 1.4, seria aceitável. Ou seja, o cara pode não ter feito o que é mais indicado (de acordo contigo, não seguiu as “boas práticas”), ainda assim, o código dele está “correto”, o que não quer dizer que seja o que todos devem fazer.
O que penso, em conclusão: o código não está errado.[/quote]

Correto? Bem… fazer uma coisa com um código menos legível, menos claro e menos performático, do que uma outra solução mais adequada, pra mim não significa estar “correto”.

Fazer de qualquer jeito, ou fazer com qualidade?

[quote=danieldestro]Correto? Bem… fazer uma coisa com um código menos legível, menos claro e menos performático, do que uma outra solução mais adequada, pra mim não significa estar “correto”.
Fazer de qualquer jeito, ou fazer com qualidade?[/quote]

Afff, tu está fazendo uma tempestade em um copo d’água, cara.

Abstenho-me de continuar.

Para um efetivo tratamento de exceções:

private Object lookup(String jndi) throws NamingException, ServiceLocatorException { try { return ServiceLocator.getInstance().getEJB(jndi); } catch (ServiceLocatorException e) { throw new ServiceLocatorException(e); } }

[code]/**
* Formata a data
* Formato “MMMAA”(JAN08)
*
* @return String
*/
public String getData() {

	String formato = "MMM/yy"; 
	SimpleDateFormat sdf = new SimpleDateFormat(formato); 		
	return removeChar(sdf.format(new Date()), '/').toUpperCase(); 	
}


/**
 * Remove o caracter desejado de uma String
 * 
 * @param str
 * @return
 */
private String removeChar(String str, char c) {

   String aux = "";
	
   for (int i = 0; i < str.length(); i++) {
	   if(str.charAt(i) != c)
	        aux += str.charAt(i);
   }
   
   return aux;
}[/code]

Sugestão

public String getData() { SimpleDateFormat sdf = new SimpleDateFormat("MMMyy"); return sdf.format(new Date()).toUpperCase(); }