EVGD: Códigos Toscos

[quote=kuchma]Nao sei se ja coloquei isso aqui, mas…

int a = Integer.parseInt("1");

Marcio Kuchma[/quote]

Boa! Já ví pior:

public void fazAlgo(int a, int b) {
   // validando parametros de entrada
   int c;
   int d;
   try {
        c = a;
        d = b;
   } catch(Exception e ) {
      log.erro("Erro ao validar os parametros de entrada", e);
   }
}

E o pior é que foi igual aquela velha historia do macaco. Um carinha fez isso e o resto da equipe foi na dele.
Resultado: TODOS os métodos estavam assim!

hhehehe…

Essa é classica:

if(isAlgumaCoisa == true){
//sfkljsdklfjklsdfkl
}

Estava lendo um post sobre onde colocar as regras de negocio e tal e lembrei de uma interessante que encontrei uma vez (revi o codigo algumas vezes pra ter certeza que era aquilo mesmo que meus olhos estavam vendo):

public class MyServlet extends HttpServlet { public void init() throws ServletException { ... } public void service(HttpServletRequest req, HttpServletResponse resp) throws IOException { ... } public void destroy() { ... } public String blah() { ... } }

public class Foo { public void bar() { ... MyServlet s = new MyServlet(); String str = s.blah(); ... } }

Marcio Kuchma

[quote=giulianocosta]hhehehe…

Essa é classica:

if(isAlgumaCoisa == true){
//sfkljsdklfjklsdfkl
}[/quote]

Acho que isso se encaixa mais no “estilo de código” do que código burro. O “true” é desnecesssário mas não faz mal algum.

Seria o mesmo que implicar com indentação do código de alguém ou algo parecido, tipo o indivídio que usa tab tirando uma onda de quem usa espaço, e o que usa a formatação automática da IDE tirando sarro dos dois.

[quote=Thiagosc][quote=giulianocosta]hhehehe…

Essa é classica:

if(isAlgumaCoisa == true){
//sfkljsdklfjklsdfkl
}[/quote]

Acho que isso se encaixa mais no “estilo de código” do que código burro. O “true” é desnecesssário mas não faz mal algum.

Seria o mesmo que implicar com indentação do código de alguém ou algo parecido, tipo o indivídio que usa tab tirando uma onda de quem usa espaço, e o que usa a formatação automática da IDE tirando sarro dos dois.[/quote]

Eu ainda não vi ninguém que achasse melhor usar “== true”. Sempre era falta de conhecimento.

[quote=diego_sl][quote=Thiagosc][quote=giulianocosta]hhehehe…

Essa é classica:

if(isAlgumaCoisa == true){
//sfkljsdklfjklsdfkl
}[/quote]

Acho que isso se encaixa mais no “estilo de código” do que código burro. O “true” é desnecesssário mas não faz mal algum.

Seria o mesmo que implicar com indentação do código de alguém ou algo parecido, tipo o indivídio que usa tab tirando uma onda de quem usa espaço, e o que usa a formatação automática da IDE tirando sarro dos dois.[/quote]

Eu ainda não vi ninguém que achasse melhor usar “== true”. Sempre era falta de conhecimento.[/quote]
depende, esse caso não é tão desastroso assim, pois tem gente que vem de outras linguagens, onde não tem esse recurso e acaba fazendo isso, concordo que seria uma forma desnecessária de representar uma expressão booleana,sao alguns bits a mais. Mas também não é uma forma errada, as vezes pra quem ta começando expressa mais facilmente.

Tem casos piores… como if (true)…

Como eu tenho uns bons anos de experiência com tecnologias e profissionais Microsoft, eu nem me assusto muito com isso. É até normal ver essas coisas.

O que eu me lembro de ter visto recentemente era algo como:

[code]String sqlQualquer;

sqlQualquer = “select coluna1 from tabela where” +
“coluna2 like ‘%alguma coisa %’” +
“and coluna2 like ‘% alguma coisa%’” +
“and coluna2 like ‘% alguma coisa %’”;[/code]

Sem falar no sql dentro do código, tinha mais umas 3 condições assim no like, todas elas substituíveis por uma única linha com and coluna2 like ‘%alguma coisa%’ (sem os espaços).
Engraçada foi a cara do programador que fez isso, quando viu que tinham alterado o código dele…

[quote]Os nomes de alguns métodos e objetos foram modificados, para preservar o programador e a empresa, senão, fica fácil saber de quem é a káca!

OBS: A lógica dos algoritmos foram preservadas, por questão de lógica! hã … quanto aos comentários, foram adicionados para sacanear mesmo…

DIVIRTA-SE …
[/quote]

ModuloImpl[] modulos;
Object obj = cacheBy.get(indice);

if (obj != null){
	modulos = (ModuloImpl[]) obj;
}
else{
	modulos = null;
}

//2a forma de se fazer (após a alteração)
ModuloImpl[] modulos = (ModuloImpl[]) cacheBy.get(indice);
//Acho que o cara acabou de aprender a usar expressão condicional ternária...
boolean x = (isValid(obj) ? true : false);

//2a forma de se fazer (até o Papai Noel sabe)
boolean x = isValid(obj);
/**
 * Pelo menos assim o cara garante que quando a variável str for nula,
 * o código não continuará a executar... é NullPointerException garantido !!!
 */
if(str.equals(null)) {
   // ...
}

//2a forma de se fazer (que mané, porque não fez assim)
if(str == null) {
   // ...
}
if(obj == null) {
   return false;
} else {
   return true;
}

//2a forma de se fazer (é verdade, nem todo mundo sabe que o resultado de uma expressão booleana será TRUE | FALSE)
return (obj == null);    
try {
	beginTransaction();
	salvarDadosA();
	salvarDadosB(cod);
} catch (Exception e){
	//Exception silenciada
} finally {
	try{
		/*
		 * Para quê o cara iniciou uma transação se ele sempre irá fazer o commit,
		 * independente do resultado.
             */
		commitTransaction();
	} catch (Exception e){
		//Exception silenciada
	}
}	
//Sem comentários...
//Digo, vou fazer um comentário sim... que cara mais poético hein??
//Hehehehehehe...
try {
	transaction.rollbackTransaction();
} catch (Exception f) { //reparem o nome do objeto Exception "f"
	//Exception silenciada
}

//Esse aqui também é interessante...
try {
	query.execute();
//Pra quê esta exception aqui no bloco catch ??
} catch (SQLException sql) {
	throw new QueryException(sql);
} catch (Exception e) {
	throw new QueryException(e);
} // só faltou incluir o bloco "Throwable" aí, eu matava o cara que fez isso!

//Será que gera exception se for alterado o conteúdo da variável de null para null ??
if (objXYZ != null) {
	objXYZ = null;
}
//Aaahhh bom... agora eu entendi... ou não... hehehe
objXYZ = new ObjetoXYZ();

//Legal é o comentário abaixo... hehehe
updateStatus(statusInformado); //acho que esta linha não precisa existir.
/**
 * Vou fazer o comentário depois para ficar mais interessante, antes, analisem o código!
 * depois leiam o comentário.
 */
public void doView(Request request, Response response) throws Exception, IOException {
    ....
    //Crio a string de retorno.
    String strRetorno = "";
    ....
}

// O detalhes principal é que o método retorna void, e 
// esta variável strRetorno  não é utilizada em nenhum 
// ponto do método. E pra ajudar ainda mais, esta classe 
// possuia mais de 2.000 linhas de código, e o único lugar 
// onde havia um comentário era nesta bendita linha...
// hehehe...
int valor = -1;
valor = Integer.valueOf(param).intValue();


//2a forma de se fazer (será que o cara não conhece a API??)
int valor = Integer.parseInt(param);
/*
 * esse aqui, se alguém conseguir saber o que se passava na kbc do
 * pobre coitado, mereçe um prêmio!!!! hehehe
 */
String strCod = request.getParameter("codSelect");
if (strCod != null && (strCod = strCod).length() > 0) {
	...
}
//Acho que o cara quer derrubar a VM...
private void fecharModulo() {
	fecharModulo();
}
/**
 * aonde ele aprendeu isso?
 * @see java.io.FileFilter#accept(File)
 */
public boolean accept(File file) {
   if (filename.getName().substring((filename.getName().length() - 4), filename.getName().length()).compareTo(EXTENSAO) == 1) {
      return true;
   } else {
      return false;
   }
}

/**
 * Que tal fazer assim?
 * @see java.io.FileFilter#accept(File)
 */
public boolean accept(File file) {
   String filename = file.getName();
   return filename.endsWith(EXTENSAO)
}
...
if (rs.getString("TIPO_CAMPO").equals("NR")){
	ps.setString(1, fvp.getValue());
} else {
	ps.setString(1, fvp.getValue());
}
...

"Até um programador de Pascal faria desse jeito!"
...
ps.setString(1, fvp.getValue());
...
//código comentado...

function validaData(campo) {
   var passou = true;
   ...
   if (isDataValida(campo.value)) {
      //É bom ter certeza de que o valor da variável é true... hehehe
      passou = true;
   }
   //Se o método isDataValida() retornar false, passou será alterado para false...
   //E de quebra o código dentro do else{...} nunca será executado.
   else if (passou = false) {//ao invés de usar "==" o cara usou "="
      alert('Data inválida.');
      //Essa alteração abaixo na variável passou nunca será utilizada...
      passou = false;
      return false;
   }
   ...
   //É bom ter certeza que o interpretador não vai errar na hora de avaliar um booleano...
   if (passou == true) {
      if (!isDataEmIntervalo(campo.value)) {
         alert('Data inválida.');
         //Essa alteração abaixo na variável passou nunca será utilizada...
         passou = false;
         return false;
      }
   }

   /*
    * Condição de controle de xunxo, quando tudo mais falhar neste código atrapalhado...
    */
   if(!passou){
      alert('Data inválida.');
      //Essa alteração abaixo na variável passou nunca será utilizada...
      passou = false;
      return false;
   }

   return true;
}

Pode até ter coisa interessante nesse teu post, coutinho. Mas quem vai ler esse negócio todo aí é o vigia… :mrgreen:

Na minha mania maldita de bater o olho em código fonte de sites que eu acho tosco, só pra ver quantas tabelas encadeadas tem, acabei por encontrar isso:

[code]function VerificaEmail()
{
if (form_email.email.value == “”) {
alert(“Informe seu e-mail.”);
form_email.email.focus();
form_email.email.select();
return false;
} else {
prim = form_email.email.value.indexOf("@")
if(prim < 2) {
alert(“O e-mail informado parece não estar correto.”);
form_email.email.focus();
form_email.email.select();
return false;
}
if(form_email.email.value.indexOf("@",prim + 1) != -1) {
alert(“O e-mail informado parece não estar correto.”);
form_email.email.focus();
form_email.email.select();
return false;
}
if(form_email.email.value.indexOf(".") < 1) {
alert(“O e-mail informado parece não estar correto.”);
form_email.email.focus();
form_email.email.select();
return false;
}
if(form_email.email.value.indexOf(" “) != -1) {
alert(“O e-mail informado parece não estar correto.”);
form_email.email.focus();
form_email.email.select();
return false;
}
if(form_email.email.value.indexOf(“zipmeil.com”) > 0) {
alert(“O e-mail informado parece não estar correto.”);
form_email.email.focus();
form_email.email.select();
return false;
}
if(form_email.email.value.indexOf(“hotmeil.com”) > 0) {
alert(“O e-mail informado parece não estar correto.”);
form_email.email.focus();
form_email.email.select();
return false;
}
if(form_email.email.value.indexOf(”.@") > 0) {
alert(“O e-mail informado parece não estar correto.”);
form_email.email.focus();
form_email.email.select();
return false;
}
if(form_email.email.value.indexOf("@.") > 0) {
alert(“O e-mail informado parece não estar correto.”);
form_email.email.focus();
form_email.email.select();
return false;
}
if(form_email.email.value.indexOf(".com.br.") > 0) {
alert(“O e-mail informado parece não estar correto.”);
form_email.email.focus();
form_email.email.select();
return false;
}
if(form_email.email.value.indexOf("/") > 0) {
alert(“O e-mail informado parece não estar correto.”);
form_email.email.focus();
form_email.email.select();
return false;
}
if(form_email.email.value.indexOf("[") > 0) {
alert(“O e-mail informado parece não estar correto.”);
form_email.email.focus();
form_email.email.select();
return false;
}
if(form_email.email.value.indexOf("]") > 0) {
alert(“O e-mail informado parece não estar correto.”);
form_email.email.focus();
form_email.email.select();
return false;
}
if(form_email.email.value.indexOf("(") > 0) {
alert(“O e-mail informado parece não estar correto.”);
form_email.email.focus();
form_email.email.select();
return false;
}
if(form_email.email.value.indexOf(")") > 0) {
alert(“O e-mail informado parece não estar correto.”);
form_email.email.focus();
form_email.email.select();
return false;
}
if(form_email.email.value.indexOf("…") > 0) {
alert(“O e-mail informado parece não estar correto.”);
form_email.email.focus();
form_email.email.select();
return false;
}
}

return (true);

}[/code]

Sugiro uma atenção especial ao fato dele validar se eu sei ou não digitar hotmail… 'hotmeil.com"… muitissimo precavido

… Ainda há a "VerificaEmail2()", no mesmo source, que faz a mesma "verificação" pra um segundo inputbox

Ao menos o vigia vai entender o que não se deve fazer, ou melhor, procurar a não ser mais um Zé, criador de pérolas.

Ao menos ele. Hehehe :lol:

(profundamente ofendido com o “mais um Zé”…)

Ao menos ele. Hehehe :lol:

(profundamente ofendido com o “mais um Zé”…)[/quote]

Foi mal, ZehOliveira, nem reparei o seu nome … mas não me referi a você … :oops:

Nada contra aos ‘Zés’, até porque meu pai se chama José, e como vc mesmo sabe, pessoas usam ‘Zé’ para se referir a alguém. :wink:

quando tiver um tempinho, leia as pérolas, você vai se divertir… juitei isso a algum tempo, estava guardado comigo… achei que esse era o momento de compartilhar com o pessoal. Foi o maior trabalhão comentar e formatar o Texto, “QUASE UM TUTORIAL humoristico”

Ah, levando em consideração o aprendizado! :slight_smile:

Desculpas …

falows…

[code]public AlgumaCoisa meuMetodo(){
AlgumaCoisa a;

try {
a = OutraCoisa.SeiLa();
} catch (Exception e) {}

return a;

}[/code]

Muito bom ! Depois rola um NullPointerException e ninguem sabe por que!

NullPointerException??? O compilador vai chiar que a não foi iniciada.

Aos demais… TENTEM POSTAR UMA PÉROLA POR RESPOSTA, MESMO QUE SEJAM VÁRIAS… ASSIM A GENTE SABE QUE CADA UMA É DIFERENTE!

Boas pérolas pessoal.

A inteligência humana tem limites. A estupidez não!

Olha que máximo!

  Long id = DAOFactory.getCustomerDao().findById(customerId).getId();
  String name = DAOFactory.getCustomerDao().findById(customerId).getName();

Certa vez um colega meu, que havia sido chamado para consertar um sistema que simplesmente não funcionava, me enviou um código nos seguintes moldes:


Transaction t = tManager.getTransaction();

try{
   ...
}finally{
   try{
      t.rollback();
   }catch(Exception e) { logger.error(e); }
}

Quase que tenho um infarto do miocárdio. Eu não consigo nem começar a imaginar o que foi que se passou pela cabeça do cidadão que escreveu esse código.

[quote=danieldestro]Alguém me explica o que a primeira linha faz alí?

totalPaginas = 1; totalPaginas = (int) Math.ceil( ((double)quantidade) / ((double)totalExibido) );[/quote]

o cara ta alocando memoria pow
Hahahahaha!!!

Um colega aqui comentou de um código que o cara não tinha muita certeza se a variável era NULL, por isso ele fazia esse teste:


 if (a == null)
 {
   a=null;
 }

Em Oracle (SQL) eu já vi essa pérola:

 select null from dual; 

hauhauhau pior foi essa aki:

[code]

1: public class TesteFor {
2:
3: public static void main( String args[] ) {
4: for(int i=0; i<=10; i++) {
5: System.out.println( i );
6: }
7:
8: }
9:
10:} [/code]

uahuahuahu o cara achou q a numerçao da linha fazia parte do codigo…imagina se o programa tiver umas 2000 linhas e vc precisar adicionar uma bem no começo???

e ele falou q tinha instalado o java errado pq tava comerro nas variaveis…