EVGD: Códigos Toscos


if (this != null)
 //continua

sério… muito sério.

[quote=mario.fts][code]

if (this != null)
//continua

[/code]

sério… muito sério.[/quote]

É que em C++ às vezes você precisa de fazer esse tal teste “if (this != NULL)”. O carinha deve ter sido programador C++ em alguma vida passada :stuck_out_tongue:

[quote=thingol][quote=mario.fts][code]

if (this != null)
//continua

[/code]

sério… muito sério.[/quote]

É que em C++ às vezes você precisa de fazer esse tal teste “if (this != NULL)”. O carinha deve ter sido programador C++ em alguma vida passada :P[/quote]

Ah, é??? Em C++ tem isso ou você está zuando??? Se tiver explica porque…rssrsrsr

T+

Vou explicar direitinho por quê.

Como vocês devem saber, em C++ e C# o default não é chamar um método dependendo da classe do objeto (isso em C++ se chama um método "virtual"), e sim dependendo do tipo da variável (mais ou menos o que ocorre, em Java, quando se chama um método "estático").

Isso quer dizer que é possível invocar um método sem ter um objeto válido. Algo como:

class Cliente {
public:
     void setNome (const std::string& valor) { nome = valor; }
private:
     std::string nome;
};
...
Cliente *cl = NULL; 
cl->setNome ("José");

O que deve ocorrer em C++ é algo como o nosso conhecido NullPointerException, só que mais assustador.
Mas você pode fazer uma coisa como:

     void setNome (const std::string& valor) { 
           if (this == NULL) throw new std::exception ("Trying to call setNome upon an uninitialized object");
           nome = valor; 
     }

se você for mais medroso.

Você pode até atribuir ao this, se usar um compilador antigo. Hoje em dia os compiladores não são tão toscos e não permitem mais isso.

[quote=paulog]Enquanto isso na minha empresa…

for (int i = 0; i < 100; ++i) {
    try {
        recurso.close();
    } catch (Throwable e) {}
}

Alguém queria ter certeza que o recurso iria ser fechado. :slight_smile:
Se eu colocar o for até 50, será que melhora a performance?[/quote]

É para fechar muito bem fechado. Ao menos não tem um sleep no meio.

[quote=Feijão]Para mim uma verdadeira obra de arte:

public int qdadePorPessoaPorEventoPorSessao(Timestamp sessaoDate) { sessaoDate = updateDataEventoIfUniqueEvento(sessaoDate); int count = 0; try { for (SessaoPessoa sessaoPessoa : EventoBusiness.getInstance().getSessaoPessoaByEvento(new Integer(codigoEvento))){ if (sessaoPessoa.getPk().getCodPessoa().intValue()== new Integer(codigoAssinatura).intValue() && sessaoPessoa.getPk().getCodEvento().compareTo(new Integer(codigoEvento))==0 && sessaoPessoa.getPk().getDatSessao().compareTo(sessaoDate) ==0){ count++; } } return new Integer(count); } catch(Exception e){ e.printStackTrace(); } return new Integer(0); } [/quote]

Cada getPk é uma consulta ao banco?

É irritante ver código com esses new Integer().

Você não viu o código nojento que eu estava trabalhando esses dias. Devia ter pelo menos uns dez mil new Integer() espalhados.
Aliás, dava para postar o projeto inteiro neste tópico. :roll:

Código “doado” por um amigo que já não aguenta mais encontrar tosquices todos os dias:

[code]function vaiParaOProximoCampo(campoAtual) {

if (campoAtual.name == 'codPessoa') {
    if (campoAtual.value.length == 9) {
        document.oForm.emailPessoa.focus();
    }
} else if (campoAtual.name == 'diaNascimentoPessoa') {
    if (campoAtual.value.length == 2) {
        document.oForm.mesNascimentoPessoa.focus();
    }
} else if (campoAtual.name == 'mesNascimentoPessoa') {
    if (campoAtual.value.length == 2) {
        document.oForm.anoNascimentoPessoa.focus();
    }
} else if (campoAtual.name == 'anoNascimentoPessoa') {
    if (campoAtual.value.length == 4) {
        document.oForm.cpfPessoa.focus();
    }
} else if (campoAtual.name == 'cpfPessoa') {
    if (campoAtual.value.length == 11) {
        document.oForm.telefoneResidencialDDD.focus();
    }
} else if (campoAtual.name == 'cnpj') {
    if (campoAtual.value.length == 14) {
        document.oForm.telefoneResidencialDDD.focus();
    }
} else if (campoAtual.name == 'telefoneResidencialDDD') {
    if (campoAtual.value.length == 2) {
        document.oForm.telefoneResidencial.focus();
    }
} else if (campoAtual.name == 'telefoneResidencial') {
    if (campoAtual.value.length == 8) {
        document.oForm.telefoneComercialDDD.focus();
    }
} else if (campoAtual.name == 'telefoneComercialDDD') {
    if (campoAtual.value.length == 2) {
        document.oForm.telefoneComercial.focus();
    }
} else if (campoAtual.name == 'telefoneComercial') {
    if (campoAtual.value.length == 8) {
        document.oForm.telefoneCelularDDD.focus();
    }
} else if (campoAtual.name == 'telefoneCelularDDD') {
    if (campoAtual.value.length == 2) {
        document.oForm.telefoneCelular.focus();
    }
} else if (campoAtual.name == 'telefoneCelular') {
    if (campoAtual.value.length == 8) {
        document.oForm.senhaPessoa.focus();
    }
}[/code]

me = new ObjectFactory(); if (me == null) { throw new TechnicalException("Objeto 'ObjectFactory' nulo"); }

[quote=thingol][quote=danieldestro]Código “doado” por um amigo que já não aguenta mais encontrar tosquices todos os dias:

function vaiParaOProximoCampo(campoAtual) { ... [/quote]

Ainda se funcionasse…[/quote]

O cara deve ter confundido com pascal. rs

[quote=juliocbq][quote=thingol][quote=danieldestro]Código “doado” por um amigo que já não aguenta mais encontrar tosquices todos os dias:

function vaiParaOProximoCampo(campoAtual) { ... [/quote]

Ainda se funcionasse…[/quote]

O cara deve ter confundido com pascal. rs[/quote]

Dessa vez foi tosquice minha. O código é JavaScript, não Java, portanto dá para comparar strings com “==”. Mesmo assim esse código parece um pouco tosco.

Vi um que fiquei espanidiotizado.

O cara abaixo tinha medo de lançar uma Exception pra cima então decediu tentar denovo.

public int convertString(String string){
int num = 0;
try{
   num = Integer.parseInt(string);
}catch(Throwable t){
  return convertString(string);
}
return num;
}

hAUhAU

vi alguem na facul fazer:


int x=0;
int y = 5;
if(x==0){
      x=y;
}else
      x=y;

Vale PL/SQL?

CASE (SubStr(texto,cont,1)) WHEN '0' THEN texto := texto||SubStr(texto,cont,1); WHEN '1' THEN texto := texto||SubStr(texto,cont,1); WHEN '2' THEN texto := texto||SubStr(texto,cont,1); WHEN '3' THEN texto := texto||SubStr(texto,cont,1); WHEN '4' THEN texto := texto||SubStr(texto,cont,1); WHEN '5' THEN texto := texto||SubStr(texto,cont,1); WHEN '6' THEN texto := texto||SubStr(texto,cont,1); WHEN '7' THEN texto := texto||SubStr(texto,cont,1); WHEN '8' THEN texto := texto||SubStr(texto,cont,1); WHEN '9' THEN texto := texto||SubStr(texto,cont,1); ELSE texto := texto; END CASE;

Gente, esses dias peguei um:

if (1==1){
  //um código
} else  {
  //mais outro código =O
}

Essa é fresquinha, tirei agora aqui do fórum

StringBuilder erros=new StringBuilder();   
erros.append(System.getProperty ("line.separator")+suaString);  

Para quê usar o StringBuilder então, usa logo concatenação de strings

sugestão:


StringBuilder erros=new StringBuilder();   
erros.append(System.getProperty ("line.separator")).appned(suaString);  

E o que vocês acham disso? o cara usa constantes como variáveis globais. e isso se repete infinitas vezes pelo sistema… em que eu estou dando manutenção :evil:

    public class Constantes{
       public static final Long CODIGO_X = 0L;
    }
    public void executa(Long codigo) {
        
        Constantes.CODIGO_X = codigo;
        
        log.debug(Constantes.CODIGO_X, "QUALQUER COISA");

        //CODIGOS...
        
        log.debug(Constantes.CODIGO_X, "QUALQUER OUTRA COISA");
                
    }

p.s.: esse sai do mesmo lugar daonde o Destro tirou vááááááááááááários dos que ele mesmo já colocou aqui e que amigos ainda passam para ele…

edit 1: Alterei nomes de variáveis e classes.

Tenho que compartilhar com o mundo, pois obras de arte foram feitas para isso.
Se este método funciona não sei, mas os nomes são maravilhosos. Show de bola. Parabéns campeão!

public Sessao getCurrentSessaoByDateByNull(Timestamp sessaoDate) throws Exception {
	sessaoDate = updateDataEventoIfUniqueEvento(sessaoDate);
	for (Sessao sessao : sessoes){
		if (sessao.getDatSessao().compareTo(sessaoDate)==0){
			return sessao;
		}
	}
	return null;
}	

Certa fez, disseram para um determinado pogueiro que conheço, que colocar números mágicos no código era ruim, que o certo era definir constantes e acessar sempre as constantes, para deixar a manutenção no código mais fácil.

O resultado disso foi mais ou menos isso:

public static final int UM = 1; public static final int DOIS = 2; public static final int TRES = 3; public static final int QUATRO = 4; public static final int CINCO = 5; ...if (sessao.getUsuario().getIsso().fazAquilo().metodoBizarro() == QUARENTA_E_TRES) { ... }