EVGD: Códigos Toscos

971 respostas
danieldestro

Mais um EVGD (Então Você Gostaria De…), porém este trata de registrar as pérolas da tosquice da programação Java.

Compartilhem suas experiências conosco e vamos dar boas risadas e ver como não se programa.

Na verdade, o foco deste tópico é vermos algumas práticas não recomendadas, a fim de vermos como evitar erros comuns na programação.

971 Respostas

danieldestro

while( true ) { publicacaoPorPeriodo = cursor.next(); if( publicacaoPorPeriodo == null ) { // é fim do cursor? break; } list.addPublicacao(publicacaoPorPeriodo); }

O que será que um cara pensa fazendo um código como o de cima?

Era bem melhor fazer:

while( (publicacaoPorPeriodo = cursor.next()) != null ) { list.addPublicacao(publicacaoPorPeriodo); }

Não é?

danieldestro

Olhem para este if()… hahaahahaahaha…

bean = new PublicacoesBean(); bean.setPublicacoes( list ); if( bean != null ) { //... }

danieldestro

Porque diabos colocar um return deste de um finally?

public int nomeDoMetodo() { try { // ... } catc( Exception e ) { //... trata } finally { filePost.releaseConnection(); return (status == HttpStatus.SC_OK); } }

danieldestro

Pérola nível 5: O cara simplesmente cria um novo array a cada iteração do ResultSet e copia a array antiga para a nova. Matem-no, por favor.

// total de linhas retornadas
int totalLinhas = 0;

// leia as informações de cada distribuidor
while (rs.next()) {
  // incremente o total de linhas
  totalLinhas++;
  // crie uma nova lista com novo tamanho
  PublicacaoBean[] listaTemp = new PublicacaoBean[totalLinhas];
  // copie os dados  armazenados para nova lista
  if(totalLinhas > 1) {
    System.arraycopy(listaPublicacoes,0,listaTemp,0,totalLinhas-1);
  }
  // atualize a lista original
  listaPublicacoes = listaTemp;
  //... mais código tosco aqui
}
Mauricio_Linhares

Rapaz, dessa vez pegaram pesado mesmo com você né Daniel?

Que projetinho bizarro esse viu :stuck_out_tongue:

danieldestro

Alguém me explica o que a primeira linha faz alí?

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

oliveirarenan

E esse código aqui...montando a grid na action....rsrs

ClasseX classeX = new ClasseX ();
 classeX .addColumn("Tipo Réu", "%dsTipo" );		
 classeX .addColumn("Sequência", "%cdSequencia" );
 classeX .addColumn("Documento", "%cdDocumento" );
 classeX .addColumn("Nome", "%dsNome" );		
 classeX .addColumn("Período", "%periodo" );		
 classeX .addColumn("Advogado", "%dsNomeAdvogado" );		
 classeX .addColumn("OAB", "%cdOABAdvogado" );		
 classeX .addColumn("UF", "%cdSiglaUFDocumentoAdvogado" );	
 
 classeX .setTitle("Detalhes");
 classeX .setSubTitle("Réu");
 classeX .setWindowHeight("400");
 classeX .setWindowWidth("500");
 
 TableGrid grid = new TableGrid();
 GridText label;
 GridText field;
 
 grid.setTitle( new GridText("Réu", "ttltab1") );
 grid.setMultiSelection( true ); 
 grid.setVisibleCheckBox( true, "ttltab2" );
 grid.setVisibleError( false, "ttltab2" );
 grid.setVisibleStatus( false, "ttltab2" );
 grid.setVisibleStatus( true, "ttlTab2" );
 grid.setMaxRecordsShown( 5 );
 grid.setMaxPagesBlock( 5 );
 grid.setPaginacao( true, "ttltab1", ACAO_PAGINACAO );
 grid.processPage( "0" );
 grid.setImageGridPath( "/gcpj/imagens/" );
 grid.setImagePath("/imagens/");
 
 if(pIndTipoOperacao.equalsIgnoreCase("A")){
 
 label = new GridText("Nº Documento", "ttlTab2");
 field = new GridText("cdDocumento", "txtTab1");
 grid.addColumn(new GridColumn(label, field, 140));
 
 label = new GridText("Nome", "ttlTab2");
 field = new GridText("dsNome", "txtTab1");
 grid.addColumn( new GridColumn( label, field, 370, "", "", 
    "javascript:abrirPopUpDetalhes('%cdCodigoReu', '%cdCodigoGCC', '%cdCodigoFilialGCC', '%cdCodigoControleGCC', 
    '%cdIndicativoOrigemTabela','%dsTipo', '%flagFunc', '%cdEmpresaIncorporada' )"));
 
 label = new GridText("Seq.", "ttlTab2");
 field = new GridText("cdSequencia", "txtTab1");
 grid.addColumn( new GridColumn(label, field, 46));
 
 } else {
 
 label = new GridText(" Documento", "ttlTab2");
 field = new GridText("cdDocumento", "txtTab1");
 grid.addColumn(new GridColumn(label, field, 130));
 
 label = new GridText("Nome", "ttlTab2");
 field = new GridText("dsNome", "txtTab1");
 grid.addColumn( new GridColumn( label, field, 340, "", "", 
    "javascript:abrirPopUpDetalhes('%cdCodigoReu', '%cdCodigoGCC', '%cdCodigoFilialGCC', '%cdCodigoControleGCC', 
    '%cdIndicativoOrigemTabela', '%dsTipo', '%flagFunc', '%cdEmpresaIncorporada' )"));
 
 label = new GridText("Período", "ttlTab2");
 field = new GridText("dataIni", "txtTab1");
 grid.addColumn(new GridColumn(label, field, 30));
 
 label = new GridText("", "ttlTab2");
 field = new GridText("dataFim", "txtTab1");
 grid.addColumn(new GridColumn(label, field, 30));
 
 label = new GridText("Tipo", "ttlTab2");
 field = new GridText("dsTipo", "txtTab1");
 grid.addColumn(new GridColumn(label, field, 150));
 
 label = new GridText("Seq.", "ttlTab2");
 field = new GridText("cdSequencia", "txtTab1");
 grid.addColumn(new GridColumn(label, field, 39));

:roll: :roll: :roll: :roll: :roll: :roll: :roll:

T

danieldestro:
while( true ) { publicacaoPorPeriodo = cursor.next(); if( publicacaoPorPeriodo == null ) { // é fim do cursor? break; } list.addPublicacao(publicacaoPorPeriodo); }

O que será que um cara pensa fazendo um código como o de cima?

Era bem melhor fazer:

while( (publicacaoPorPeriodo = cursor.next()) != null ) { list.addPublicacao(publicacaoPorPeriodo); }

Não é?

É, mas eu tive de participar de um projeto em que as regras do Checkstyle objetava contra atribuições dentro de expressões. Ou seja, tive de fazer algo muito parecido com o que o autor da digníssima expressão teve de fazer :frowning:

danieldestro

Um boa documentação é sempre necessária, mas isto…

/* finalize a query */ stmt1.close(); /* finalize a query */ stmt2.close(); /* finalize a query */ stmt3.close(); /* finalize a query */ stmt5.close(); /* finalize a query */ stmt6.close(); /* finalize a query */ stmt7.close(); /* finalize a query */ stmt8.close(); /* finalize a query */ stmt9.close();

luiz_ross
E dale tosquice
public Object[] transSAGT(String p_bit62) throws RemoteException {
        Object[] aoRetorno = new Object[3];
        String[] asPacote = (String[]) enviaMsg(p_bit62, "SAGT");
        String s = null;
        aoRetorno[0] = asPacote[0];
        ArrayList asDados = new ArrayList();
        if (aoRetorno[0].equals("011")) {
            String[][] as;
            String sTring1 = "";
            String sTring2 = "";
            int qtdeServicos = 0;

            for (int i = 1; i < asPacote.length; i++) {
                qtdeServicos = (asPacote[i].length() - 70) / 51;
                if (qtdeServicos > 0) {
                    as = new String[qtdeServicos][12];
                    for (int x = 70, z = 0; x <= asPacote[i].length() - 51; x += 51, z++) {
                        int j = 0;
                        int w = 0;
                        s = asPacote[i].substring(x, x + 51);
                        if ((s.trim()).equals(""))
                            break;
                        as[z][0] = asPacote[i].substring(j, (w = j + 6));
                        as[z][1] = asPacote[i].substring((j = w), (w = j + 2));
                        as[z][2] = asPacote[i].substring((j = w), (w = j + 4));
                        as[z][3] = asPacote[i].substring((j = w), (w = j + 3));
                        as[z][4] = asPacote[i].substring((j = w), (w = j + 55));
                        j = 0;
                        w = 0;
                        as[z][5] = s.substring((j = w), (w = w + 3));
                        as[z][6] = s.substring((j = w), (w = w + 3));
                        as[z][7] = s.substring((j = w), (w = w + 10));
                        as[z][8] = s.substring((j = w), (w = w + 10));
                        as[z][9] = s.substring((j = w), (w = w + 15));
                        as[z][10] = s.substring((j = w), (w = w + 8));
                        as[z][11] = s.substring((j = w), (w = w + 2));
                    }
                    asDados.add(as);
                }
            }
        }

        aoRetorno[1] = asDados;
        aoRetorno[2] = asPacote[asPacote.length - 1].substring(15, 55);

        return aoRetorno;
    }
danieldestro

E já que começamos errado, vamos terminar errado…

// 17/01/2005 - XYZ Technology // Faltou dar um close nos statements 4, 11, 12 e 13. // Obs.: O certo seria fechar os statements no finally, // mas como os autores da versão inicial fizeram tudo // assim, decidi manter. // O stmt10, também não estava sendo fechado, porém ela // deixou de ser utilizada graças a uma nova alteração na // especificação de 24/09/2004 que solicitou a sua exclusão // no processo. stmt4.close(); stmt11.close(); stmt12.close(); stmt13.close();

kuchma

Nao sei se ja coloquei isso aqui, mas…

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

Marcio Kuchma

jack_ganzha

Eu criei um post parecido com esse no JavaFree por causa de codigos muito “particulares” que vi em um projeto. No fim das contas, alguns problemas são mais pontuais e fáceis de resolver. Dificil é quando existem erros graves na arquitetura. Exemplo de codigo dentro de uma classe de negocio:

public Bah doSomething() {
	Bah result = Bah.DEFAULT;
	if (condition()) {
		try {
			result = bahHandler.getBah();
		} catch (BahException e) {
			
			if (!bahGui.showConfirmDialog(MessagesBah
					.getString("msg.bah"))) {
				throw new BahException();
			}
		}
	}
	return result;
}

E, Daniel, não me surpreenderia se vc dissesse que unit tests são artigo raro ou inexistente nesse tipo de projeto. :frowning:

valeuz…

danieldestro

Apesar de eu saber o que são Unit Tests, aqui eu diria: “Unit o quê???”

jack_ganzha

E outra pequena contribuição sobre como criar estruturas de dados, erhm… enfim:

public class Bah {

   private String name1;
   private Date date1;

   private String name2;
   private Date date2;

   private String name3;
   private Date date3;

   private String name4;
   private Date date4;

   private String name5;
   private Date date5;

   private String name6;
   private Date date6;

   ... // outros atributos.
}

valeuz…

thiago.correa

kuchma:
Nao sei se ja coloquei isso aqui, mas…

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

Marcio Kuchma

ahahahah, isso que eu chamo de ser precavido.

Z
int ano = ;

if(new Integer(ano).toString().lenght() != 4) {
     // faça alguma coisa se o numero do ano nao tiver 4 digitos
}
Por que não:
if(ano < 1000 || ano > 9999) {
    // faça alguma coisa se o numero do ano nao tiver 4 digitos
}
????
J.E.Z

essa eh pra quem conhece C++…

FEITO POR UM PROFESSOR SUBSTITUTO EM SALA DE AULA:

Como mostrar o endereço de um pointer:

int *a;

*a = 2;

 // Segundo a explicação o & mostra endereço
 // e o * o conteúdo, e ele queria mostrar o 
 // endereço do conteúdo... vai entender!?

printf("%d", &*a);

Cada um é cada um neh!?

C
public Exception sendMail() {
    try {
      // envia o email
    } catch(Exception e) {
       return e;
    }
    return null;
}

E então:

Exception e = sendMail(); if (e != null) { throw e; } else { // continua }

C

kuchma:
Nao sei se ja coloquei isso aqui, mas…

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

Marcio Kuchma

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!

G

hhehehe…

Essa é classica:

if(isAlgumaCoisa == true){

//sfkljsdklfjklsdfkl

}
kuchma

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

Thiagosc

giulianocosta:
hhehehe…

Essa é classica:

if(isAlgumaCoisa == true){

//sfkljsdklfjklsdfkl

}</blockquote>

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.

plentz

Thiagosc:
giulianocosta:
hhehehe…

Essa é classica:

if(isAlgumaCoisa == true){

//sfkljsdklfjklsdfkl

}</blockquote>

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.

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

Fabricio_Cozer_Marti

diego_sl:
Thiagosc:
giulianocosta:
hhehehe…

Essa é classica:

if(isAlgumaCoisa == true){

//sfkljsdklfjklsdfkl

}</blockquote>

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.

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


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)

MarcioTavares

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:

String sqlQualquer;

sqlQualquer = "select coluna1 from tabela where" +
	"coluna2 like '%alguma coisa %'" +
	"and coluna2 like '% alguma coisa%'" +
	"and coluna2 like '% alguma coisa %'";

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...

C

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 …

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);
} //  faltou incluir o bloco "Throwable" , 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;
}
Z

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

V

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:

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);

}

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

C

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.

Z

Ao menos ele. Hehehe :lol:

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

C

Ao menos ele. Hehehe :lol:

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

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…

peczenyj
public AlgumaCoisa meuMetodo(){
   AlgumaCoisa a;

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

   return a;

}

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

danieldestro

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!

C

Olha que máximo!

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

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.

benflodin

danieldestro:
Alguém me explica o que a primeira linha faz alí?

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

o cara ta alocando memoria pow
Hahahahaha!!!

boaglio

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;
deniswsrosa

hauhauhau pior foi essa aki:

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:}

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...

danieldestro

Pra quem lembra, BASIC, que rolava no TK85, tinha que colocar os números nas linhas.

Então você numerava assim:

10 …
20 …
30 …

Quando precisava acrescentar algo entre 10 e 20 inseria como 21, 22 …

Tosquera!!!

J

Essa é uma lógica sem lógica que encontrei num Forms em produção de uma grande empresa a qual fiz manutenção.

IF A = 1 THEN B:= 2; ELSE B:= 2; END IF;

J

Um dia um colega me chamou e perguntou:

"Mas por que não entra no IF ?? "

Segue o IF:

if (a == 1 && a ==2) {

   .....
   .....
  
}

E olha que o cara ficou um bom tempo decifrando....

Não é mole não !!!!!!!!

dudaskank
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);

vai ver que ele queria evitar de se confundir e cometer esse erro aí hehehe

return (obj != null);

:D

G

SELECT UPPER(P.IDADE)
,UPPER(P.DT_NASCIMENTO)
,UPPER(P.NM_PESSOA)
FROM PESSOA P

peczenyj

Po, uma vez eu achei um codigo fortran que tinha, no inicio, um IF e um GOTO.

o IF tinha uma condição que era “impossivel” de ser verdade. mas uma vez removida esta linha o programa - 5 mil linhas - não funcionava corretamente.

Aparentemente nenhum GOTO posterior ia praquela linha… mistério…

F

peczenyj:
Po, uma vez eu achei um codigo fortran que tinha, no inicio, um IF e um GOTO.

o IF tinha uma condição que era “impossivel” de ser verdade. mas uma vez removida esta linha o programa - 5 mil linhas - não funcionava corretamente.

Aparentemente nenhum GOTO posterior ia praquela linha… mistério…

Hahaha, já tive problema parecido só que em C++ e na verdade era um memory leak. Ao colocar o trecho tudo acabava se encaixando e o memory leak não detonava nada ao tirar o codigo inútil o memory leak acontecia.

jack_ganzha
julianostr:
if (a == 1 && a ==2) {

   .....
   .....
  
}
Já vi uma bem parecida:
if(x > 10 && x < 2) {
	// faz alguma coisa.
}
Achei tão estranho que tive que ler mais de uma vez.

valeuz...

kuchma

jack_-_ganzha:
Já vi uma bem parecida:

if(x > 10 && x < 2) { // faz alguma coisa. }
Achei tão estranho que tive que ler mais de uma vez.

Ah pessoal - deixem de ser tao ceticos. Talvez o cara estivesse apostando numa situacao de concorrencia extrema onde a thread fosse interrompida e a variavel sofresse uma modificacao antes de sua retomada pelo processador. :mrgreen:

Incrivel como tem codigo tosco por ai. Como ja diria uma antiga professora minha de Estatistica: nao ganho bem mas me adivirto muitcho.

Marcio Kuchma

Sami_Koivu

Hmm, acho que seria interessante cada um postar o código mais tosco que ele mesmo já escreveu. :slight_smile: Vamos lá, quem é o primeiro? :mrgreen:

No momento não consigo lembrar de nada muito “legal”, mas faz alguns anos eu escrevi um wrapper para a classe Calendar com a opção para a data ser indefinido. Caso em que, a referência para o objeto Calendar era null. Nesse caso, o método toString() retornava a String “null”.

Ou seja, mais ou menos assim:

public String toString() {
        if (this.calendar == null) {
            return "null";
        }

        return this.calendar.toString();
    }

Consegui totalmente confundir um colega que estava fazendo mudanças no sistema, debugando o código e imprimindo o valor de uma referência a esta classe wrapper e pensando que a referência era null (quando, na verdade, só a data contido no objeto era null).

[]s,
Sami

thiago.correa

Alguma luz!!!

//até aqui tudo bem!
        form.setRelatorio( false );
				
		....
        //agora, para que o retardado fez isso (detalhe os '...' substituem uma única linha       
        if ( form.isRelatorio() ) {
			report = "express";
        }
Thiagosc
thiago.correa:
Alguma luz????!
//até aqui tudo bem!
        form.setRelatorio( false );
				
		....
        //agora, para que o retardado fez isso (detalhe os '...' substituem uma única linha       
        if ( form.isRelatorio() ) {
			report = "express";
        }

Isso tá com cara de problema introduzido na manutenção. Vai ver que o desenvolvedor original fez o "if", e depois alguém querendo evitar aquela situação mudou o valor para "false", que é o caminho mais fácil, ao invés de entender melhor o programa e modificar o que fosse necessário no lugar certo.

Anderson_Leite

Vai ficar grande, mas juro q encontrei isso numa JSP…

<%
	String var_T1_1  = "disabled";
	String var_T1_2  = "readonly";
	String var_T2_1  = "disabled";
	String var_T2_2  = "readonly";
	String var_T3_1  = "disabled";
	String var_T3_2  = "readonly";
	String var_T3_3  = "readonly";
	String var_T6_1  = "disabled";
	String var_T6_2  = "readonly";
	String var_T6_3  = "readonly";
	String var_T7_1  = "disabled";
	String var_T7_2  = "disabled";
	String var_T7_3  = "disabled";
	String var_T7_4  = "disabled";
	String var_T7_5  = "disabled";
	String var_T7_6  = "disabled";
	String var_T7_7  = "disabled";
	String var_T7_8  = "disabled";
	String var_T7_10 = "disabled";
	String var_T7_11 = "disabled";
	String var_T8_1  = "readonly";
	String var_T9_1  = "disabled";
	String var_T9_2  = "readonly";
	String var_T9_3  = "disabled";

	String perfil_aux = "0";
	perfil_aux = (perfil.substring(1,2));

	if ("1".equals(perfil_aux)) 	{
		var_T1_1  = "";
		var_T1_2  = "";
		var_T2_1  = "";
		var_T2_2  = "";
		var_T3_1  = "disabled";
		var_T3_2  = "readonly";
		var_T3_3  = "";
		var_T6_1  = "";
		var_T6_2  = "";
		var_T6_3  = "readonly";
		var_T7_1  = "";
		var_T7_2  = "";
		var_T7_3  = "";
		var_T7_4  = "";
		var_T7_5  = "";
		var_T7_6  = "";
		var_T7_7  = "";
		var_T7_8  = "";
		var_T7_10 = "disabled";
		var_T7_11 = "disabled";
		var_T8_1  = "";
		var_T9_1  = "";
		var_T9_2  = "";
		var_T9_3  = "";
		usuBloqueado=getBloqueio(manipulateObjectsBean.getUsuarioDoc());
	}

	if ("2".equals(perfil_aux)) 	{
		var_T1_1  = "disabled";
		var_T1_2  = "readonly";
		var_T2_1  = "disabled";
		var_T2_2  = "readonly";
		var_T3_1  = "";
		var_T3_2  = "";
		var_T3_3  = "readonly";
		var_T6_1  = "disabled";
		var_T6_2  = "readonly";
		var_T6_3  = "readonly";
		var_T7_1  = "disabled";
		var_T7_2  = "disabled";
		var_T7_3  = "disabled";
		var_T7_4  = "disabled";
		var_T7_5  = "disabled";
		var_T7_6  = "disabled";
		var_T7_7  = "disabled";
		var_T7_8  = "disabled";
		var_T7_10 = "disabled";
		var_T7_11 = "disabled";
		var_T8_1  = "";
		var_T9_1  = "disabled";
		var_T9_2  = "readonly";
		var_T9_3  = "disabled";
		
	}

	if ("3".equals(perfil_aux)) // AP Normal
	{
		var_T1_1  = "disabled";
		var_T1_2  = "readonly";
		var_T2_1  = "disabled";
		var_T2_2  = "readonly";
		var_T3_1  = "disabled";
		var_T3_2  = "readonly";
		var_T3_3  = "readonly";
		var_T6_1  = "disabled";
		var_T6_2  = "readonly";
		var_T6_3  = "readonly";
		var_T7_1  = "";
		var_T7_2  = "";
		var_T7_3  = "";
		var_T7_4  = "";
		var_T7_5  = "";
		var_T7_6  = "";
		var_T7_7  = "";
		var_T7_8  = "";
		var_T7_10 = "disabled";
		var_T7_11 = "disabled";
		var_T8_1  = "";
		var_T9_1  = "disabled";
		var_T9_2  = "readonly";
		var_T9_3  = "disabled";
	}

	if ("4".equals(perfil_aux)) // Controller
	{
		var_T1_1  = "disabled";
		var_T1_2  = "readonly";
		var_T2_1  = "disabled";
		var_T2_2  = "readonly";
		var_T3_1  = "disabled";
		var_T3_2  = "readonly";
		var_T3_3  = "readonly";
		var_T6_1  = "disabled";
		var_T6_2  = "readonly";
		var_T6_3  = "";
		var_T7_1  = "";
		var_T7_2  = "";
		var_T7_3  = "";
		var_T7_4  = "";
		var_T7_5  = "";
		var_T7_6  = "";
		var_T7_7  = "";
		var_T7_8  = "";
		var_T7_10 = "disabled";
		var_T7_11 = "disabled";
		var_T8_1  = "";
		var_T9_1  = "disabled";
		var_T9_2  = "readonly";
		var_T9_3  = "disabled";
	}

	if ("5".equals(perfil_aux)) // AP Diretoria
	{
		var_T1_1  = "disabled";
		var_T1_2  = "readonly";
		var_T2_1  = "disabled";
		var_T2_2  = "readonly";
		var_T3_1  = "disabled";
		var_T3_2  = "readonly";
		var_T3_3  = "readonly";
		var_T6_1  = "disabled";
		var_T6_2  = "readonly";
		var_T6_3  = "readonly";
		var_T7_1  = "";
		var_T7_2  = "";
		var_T7_3  = "";
		var_T7_4  = "";
		var_T7_5  = "";
		var_T7_6  = "";
		var_T7_7  = "";
		var_T7_8  = "";
		var_T7_10 = "disabled";
		var_T7_11 = "disabled";
		var_T8_1  = "";
		var_T9_1  = "disabled";
		var_T9_2  = "readonly";
		var_T9_3  = "disabled";
	}

	if ("6".equals(perfil_aux)) 
	{
		var_T1_1  = "disabled";
		var_T1_2  = "readonly";
		var_T2_1  = "disabled";
		var_T2_2  = "readonly";
		var_T3_1  = "disabled";
		var_T3_2  = "readonly";
		var_T3_3  = "readonly";
		var_T6_1  = "disabled";
		var_T6_2  = "readonly";
		var_T6_3  = "readonly";
		var_T7_1  = "";
		var_T7_2  = "";
		var_T7_3  = "";
		var_T7_4  = "";
		var_T7_5  = "";
		var_T7_6  = "";
		var_T7_7  = "";
		var_T7_8  = "";
		var_T7_10 = "";
		var_T7_11 = "";
		var_T8_1  = "";
		var_T9_1  = "disabled";
		var_T9_2  = "readonly";
		var_T9_3  = "";
	}

	if ("7".equals(perfil_aux)) 
	{
		var_T1_1  = "disabled";
		var_T1_2  = "readonly";
		var_T2_1  = "disabled";
		var_T2_2  = "readonly";
		var_T3_1  = "disabled";
		var_T3_2  = "readonly";
		var_T3_3  = "readonly";
		var_T6_1  = "disabled";
		var_T6_2  = "readonly";
		var_T6_3  = "";
		var_T7_1  = "";
		var_T7_2  = "";
		var_T7_3  = "";
		var_T7_4  = "";
		var_T7_5  = "";
		var_T7_6  = "";
		var_T7_7  = "";
		var_T7_8  = "";
		var_T7_10 = "disabled";
		var_T7_11 = "disabled";
		var_T8_1  = "";
		var_T9_1  = "disabled";
		var_T9_2  = "readonly";
		var_T9_3  = "disabled";
	}

	if ("8".equals(perfil_aux)) 
	{
		var_T1_1  = "disabled";
		var_T1_2  = "readonly";
		var_T2_1  = "disabled";
		var_T2_2  = "readonly";
		var_T3_1  = "disabled";
		var_T3_2  = "readonly";
		var_T3_3  = "readonly";
		var_T6_1  = "disabled";
		var_T6_2  = "readonly";
		var_T6_3  = "readonly";
		var_T7_1  = "";
		var_T7_2  = "";
		var_T7_3  = "";
		var_T7_4  = "";
		var_T7_5  = "";
		var_T7_6  = "";
		var_T7_7  = "";
		var_T7_8  = "";
		var_T7_10 = "disabled";
		var_T7_11 = "disabled";
		var_T8_1  = "readonly";
		var_T9_1  = "disabled";
		var_T9_2  = "readonly";
		var_T9_3  = "disabled";
	}

	if ("9".equals(perfil_aux)) 
	{
		if ("MANUTENCAO_ITINERARIO_AV".equals(atividade_manutencao))
		{
			var_T1_1  = "disabled";
			var_T1_2  = "readonly";
			var_T2_1  = "";
			var_T2_2  = "";
			var_T3_1  = "disabled";
			var_T3_2  = "readonly";
			var_T3_3  = "readonly";
			var_T6_1  = "disabled";
			var_T6_2  = "readonly";
			var_T6_3  = "readonly";
			var_T7_1  = "disabled";
			var_T7_2  = "disabled";
			var_T7_3  = "disabled";
			var_T7_4  = "disabled";
			var_T7_5  = "disabled";
			var_T7_6  = "disabled";
			var_T7_7  = "disabled";
			var_T7_8  = "disabled";
			var_T7_10 = "disabled";
			var_T7_11 = "disabled";
			var_T8_1  = "";
			var_T9_1  = "disabled";
			var_T9_2  = "readonly";
			var_T9_3  = "disabled";
		} else if ("MANUTENCAO_TAXA_CONVERSAO_AV".equals(atividade_manutencao)) {
			var_T1_1  = "disabled";
			var_T1_2  = "readonly";
			var_T2_1  = "disabled";
			var_T2_2  = "readonly";
			var_T3_1  = "disabled";
			var_T3_2  = "readonly";
			var_T3_3  = "readonly";
			var_T6_1  = "disabled";
			var_T6_2  = "readonly";
			var_T6_3  = "readonly";
			var_T7_1  = "disabled";
			var_T7_2  = "disabled";
			var_T7_3  = "disabled";
			var_T7_4  = "disabled";
			var_T7_5  = "disabled";
			var_T7_6  = "disabled";
			var_T7_7  = "disabled";
			var_T7_8  = "disabled";
			var_T7_10 = "disabled";
			var_T7_11 = "disabled";
			var_T8_1  = "";
			var_T9_1  = "disabled";
			var_T9_2  = "readonly";
			var_T9_3  = "disabled";
		} else if ("MANUTENCAO_CANCELAMENTO_ADIANTAMENTO_AV".equals(atividade_manutencao)) {
			var_T1_1  = "disabled";
			var_T1_2  = "readonly";
			var_T2_1  = "disabled";
			var_T2_2  = "readonly";
			var_T3_1  = "disabled";
			var_T3_2  = "readonly";
			var_T3_3  = "readonly";
			var_T6_1  = "disabled";
			var_T6_2  = "readonly";
			var_T6_3  = "readonly";
			var_T7_1  = "disabled";
			var_T7_2  = "disabled";
			var_T7_3  = "disabled";
			var_T7_4  = "disabled";
			var_T7_5  = "disabled";
			var_T7_6  = "disabled";
			var_T7_7  = "disabled";
			var_T7_8  = "disabled";
			var_T7_10 = "disabled";
			var_T7_11 = "disabled";
			var_T8_1  = "";
			var_T9_1  = "disabled";
			var_T9_2  = "readonly";
			var_T9_3  = "disabled";
		} else {
			var_T1_1  = "disabled";
			var_T1_2  = "readonly";
			var_T2_1  = "disabled";
			var_T2_2  = "readonly";
			var_T3_1  = "disabled";
			var_T3_2  = "readonly";
			var_T3_3  = "readonly";
			var_T6_1  = "disabled";
			var_T6_2  = "readonly";
			var_T6_3  = "readonly";
			var_T7_1  = "disabled";
			var_T7_2  = "disabled";
			var_T7_3  = "disabled";
			var_T7_4  = "disabled";
			var_T7_5  = "disabled";
			var_T7_6  = "disabled";
			var_T7_7  = "disabled";
			var_T7_8  = "disabled";
			var_T7_10 = "disabled";
			var_T7_11 = "disabled";
			var_T8_1  = "";
			var_T9_1  = "disabled";
			var_T9_2  = "readonly";
			var_T9_3  = "disabled";
		}
	}

	if ("10".equals(perfil_aux)) // Teste Entrada de Dados
	{
		var_T1_1  = "";
		var_T1_2  = "";
		var_T2_1  = "";
		var_T2_2  = "";
		var_T3_1  = "";
		var_T3_2  = "";
		var_T3_3  = "";
		var_T6_1  = "";
		var_T6_2  = "";
		var_T6_3  = "";
		var_T7_1  = "";
		var_T7_2  = "";
		var_T7_3  = "";
		var_T7_4  = "";
		var_T7_5  = "";
		var_T7_6  = "";
		var_T7_7  = "";
		var_T7_8  = "";
		var_T7_10 = "";
		var_T7_11 = "";
		var_T8_1  = "";
		var_T9_1  = "";
		var_T9_2  = "";
		var_T9_3  = "";
	}

	if ("0".equals(perfil_aux)) // Consulta (Padrao)
	{
		var_T1_1  = "disabled";
		var_T1_2  = "readonly";
		var_T2_1  = "disabled";
		var_T2_2  = "readonly";
		var_T3_1  = "disabled";
		var_T3_2  = "readonly";
		var_T3_3  = "readonly";
		var_T6_1  = "disabled";
		var_T6_2  = "readonly";
		var_T6_3  = "readonly";
		var_T7_1  = "disabled";
		var_T7_2  = "disabled";
		var_T7_3  = "disabled";
		var_T7_4  = "disabled";
		var_T7_5  = "disabled";
		var_T7_6  = "disabled";
		var_T7_7  = "disabled";
		var_T7_8  = "disabled";
		var_T7_10 = "disabled";
		var_T7_11 = "disabled";
		var_T8_1  = "readonly";
		var_T9_1  = "disabled";
		var_T9_2  = "readonly";
		var_T9_3  = "disabled";
	}
%>

<%
	if (("1".equals(perfil_aux)) || ("3".equals(perfil_aux)) || ("4".equals(perfil_aux)) || ("5".equals(perfil_aux)) || ("6".equals(perfil_aux)) || ("7".equals(perfil_aux)) || ("8".equals(perfil_aux)))
	{
		if ("0".equals(fase_aprovacao))
		{
			var_T7_1  = "";
			var_T7_2  = "";
			var_T7_3  = "";
			var_T7_4  = "";
			var_T7_5  = "";
			var_T7_6  = "";
			var_T7_7  = "";
			var_T7_8  = "";
			var_T7_10 = "";
			var_T7_11 = "";
		}

		if ("1".equals(fase_aprovacao))
		{
			var_T7_1  = "disabled";
			var_T7_2  = "";
			var_T7_3  = "";
			var_T7_4  = "";
			var_T7_5  = "";
			var_T7_6  = "";
			var_T7_7  = "";
			var_T7_8  = "";
			var_T7_10 = "";
			var_T7_11 = "";
		}

		if ("2".equals(fase_aprovacao))
		{
			var_T7_1  = "disabled";
			var_T7_2  = "disabled";
			var_T7_3  = "";
			var_T7_4  = "";
			var_T7_5  = "";
			var_T7_6  = "";
			var_T7_7  = "";
			var_T7_8  = "";
			var_T7_10 = "";
			var_T7_11 = "";
		}

		if ("3".equals(fase_aprovacao))
		{
			var_T7_1  = "disabled";
			var_T7_2  = "disabled";
			var_T7_3  = "disabled";
			var_T7_4  = "";
			var_T7_5  = "";
			var_T7_6  = "";
			var_T7_7  = "";
			var_T7_8  = "";
			var_T7_10 = "";
			var_T7_11 = "";
		}

		if ("4".equals(fase_aprovacao))
		{
			var_T7_1  = "disabled";
			var_T7_2  = "disabled";
			var_T7_3  = "disabled";
			var_T7_4  = "disabled";
			var_T7_5  = "";
			var_T7_6  = "";
			var_T7_7  = "";
			var_T7_8  = "";
			var_T7_10 = "";
			var_T7_11 = "";
		}

		if ("5".equals(fase_aprovacao))
		{
			var_T7_1  = "disabled";
			var_T7_2  = "disabled";
			var_T7_3  = "disabled";
			var_T7_4  = "disabled";
			var_T7_5  = "disabled";
			var_T7_6  = "";
			var_T7_7  = "";
			var_T7_8  = "";
			var_T7_10 = "";
			var_T7_11 = "";
		}

		if ("6".equals(fase_aprovacao))
		{
			var_T7_1  = "disabled";
			var_T7_2  = "disabled";
			var_T7_3  = "disabled";
			var_T7_4  = "disabled";
			var_T7_5  = "disabled";
			var_T7_6  = "disabled";
			var_T7_7  = "";
			var_T7_8  = "";
			var_T7_10 = "";
			var_T7_11 = "";
		}

		if ("7".equals(fase_aprovacao))
		{
			var_T7_1  = "disabled";
			var_T7_2  = "disabled";
			var_T7_3  = "disabled";
			var_T7_4  = "disabled";
			var_T7_5  = "disabled";
			var_T7_6  = "disabled";
			var_T7_7  = "disabled";
			var_T7_8  = "";
			var_T7_10 = "";
			var_T7_11 = "";
		}

		if ("8".equals(fase_aprovacao))
		{
			var_T7_1  = "disabled";
			var_T7_2  = "disabled";
			var_T7_3  = "disabled";
			var_T7_4  = "disabled";
			var_T7_5  = "disabled";
			var_T7_6  = "disabled";
			var_T7_7  = "disabled";
			var_T7_8  = "disabled";
			var_T7_10 = "";
			var_T7_11 = "";
		}

		if ("9".equals(fase_aprovacao))
		{
			var_T7_1  = "disabled";
			var_T7_2  = "disabled";
			var_T7_3  = "disabled";
			var_T7_4  = "disabled";
			var_T7_5  = "disabled";
			var_T7_6  = "disabled";
			var_T7_7  = "disabled";
			var_T7_8  = "disabled";
			var_T7_10 = "";
			var_T7_11 = "";
		}

		if ("10".equals(fase_aprovacao))
		{
			var_T7_1  = "disabled";
			var_T7_2  = "disabled";
			var_T7_3  = "disabled";
			var_T7_4  = "disabled";
			var_T7_5  = "disabled";
			var_T7_6  = "disabled";
			var_T7_7  = "disabled";
			var_T7_8  = "disabled";
			var_T7_10 = "disabled";
			var_T7_11 = "";
		}

		if ("11".equals(fase_aprovacao))
		{
			var_T7_1  = "disabled";
			var_T7_2  = "disabled";
			var_T7_3  = "disabled";
			var_T7_4  = "disabled";
			var_T7_5  = "disabled";
			var_T7_6  = "disabled";
			var_T7_7  = "disabled";
			var_T7_8  = "disabled";
			var_T7_10 = "disabled";
			var_T7_11 = "disabled";
		}

		if ("12".equals(fase_aprovacao))
		{
			var_T7_1  = "disabled";
			var_T7_2  = "disabled";
			var_T7_3  = "disabled";
			var_T7_4  = "disabled";
			var_T7_5  = "disabled";
			var_T7_6  = "disabled";
			var_T7_7  = "disabled";
			var_T7_8  = "disabled";
			var_T7_10 = "disabled";
			var_T7_11 = "disabled";
		}

		if ("6".equals(perfil_aux)) 		{
			if ("10".equals(fase_aprovacao))
			{
				var_T7_10 = "disabled";
				var_T7_11 = "";
			}
			else
			{
				if (("11".equals(fase_aprovacao)) || ("12".equals(fase_aprovacao)))
				{
					var_T7_10 = "disabled";
					var_T7_11 = "disabled";
				}
				else
				{
					var_T7_10 = "";
					var_T7_11 = "";
				}
			}
		}
		else
		{
			var_T7_10 = "disabled";
			var_T7_11 = "disabled";
		}
	}
%>
danieldestro

Vindo daqui: http://www.guj.com.br/posts/list/15/35435.java#188311

vácuo público da estática principal (args da corda []) { // este programa de Java imprime “Hello o mundo!” System.out.println {“Hello mundo! ”); }

fmeyer

http://flickr.com/photos/fmcamargo/187561305/

essa me doeu o utero quando vi :twisted:

amigos do governo … tstststs

farribeiro

danieldestro:
Vindo daqui: http://www.guj.com.br/posts/list/15/35435.java#188311

vácuo público da estática principal (args da corda []) { // este programa de Java imprime “Hello o mundo!” System.out.println {“Hello mundo! ”); }

Deixa eu entender… traduzido? :roll:

grprado

[quote=danieldestro]De uma consultoria que perdeu o projeto aqui, porque não gostaram do serviço deles.

ServicoDAL dal = new ServicoDAL();

Nossa não tinha lido isso ainda.

Esse DAL não tem nada a ver com um pattern né?

Por favor, responda que não :lol:

danieldestro

fmeyer:
http://flickr.com/photos/fmcamargo/187561305/
essa me doeu o utero quando vi :twisted:
amigos do governo … tstststs

Faltou:

finally { tipo_grafico = 0; }

danieldestro

Eu dei manutenção em um framework web made-in-house no mês passado e olha o que eu encontrei num ponto do código:

Date d = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy"); String data = sdf.format(d);

O engraçado é que em nenhuma parte do programa inteiro essas variáveis eram usadas.

Bom, fora 3 bugs de prender conexão que eu achei, que derrubava a comunicação com o BD 3 vezes por semana.

rmarin

Esse aqui é velho na empresa, todo mundo tem medo de fazer um refactor, aliás ninguém nem sabe o que é ou pra quê serve esse atributo.

String ___ = null;

...

if (st.hasMoreTokens()) {
    ___ = st.nextToken();
}

if (pan.length() <= 17 && ems.length() <= 3
        && tipoUsuario.length() == 1 && ___.length() <= 2) {
    tipoCartao = ParametersConstants.CARTAO_POLIMED;
} else {
    tipoCartao = ParametersConstants.CARTAO_ESTRANGEIRO;
}
danieldestro

Na falta de um bom nome, não use nenhum… :smiley:

rmarin

Na falta de um bom nome, não use nenhum… :smiley:

:stuck_out_tongue: , vendo por esse lado…

rmarin

Olha esse.

public void adicionaRegistro(String s, String s1, String s2, String s3, String s4, String s5, String s6, 
            String s7, String s8, String s9, String s10, String s11, String s12, String s13, 
            String s14, String s15, String s16, String s17, String s18, String s19, String s20, 
            String s21, String s22, String s23, String s24, String s25, String s26, String s27, 
            String s28, String s29, String s30, String s31, String s32, String s33, String s34, 
            String s35, String s36, String s37, String s38, String s39, String s40, String s41, 
            String s42, String s43, String s44, String s45)
        throws Exception
    { ...

Ah, pensaram que acabou? Esse foi somente o adiciona, tem o altera tampém. Claro que tem!

public void alteraRegistro(String s, String s1, String s2, String s3, String s4, String s5, String s6, 
            String s7, String s8, String s9, String s10, String s11, String s12, String s13, 
            String s14, String s15, String s16, String s17, String s18, String s19, String s20, 
            String s21, String s22, String s23, String s24, String s25, String s26, String s27, 
            String s28, String s29, String s30, String s31, String s32, String s33, String s34, 
            String s35, String s36, String s37, String s38, String s39, String s40, String s41, 
            String s42, String s43, String s44, String s45)
        throws Exception
    {

Ainda bem que o Altera recebe os mesmos 46 parametros, né?
Ah, e esse é só o maior, tem uma outra classe que tem dois métodos que recebem 44 Strings, no mesmo estilo, s1, s2, etc.

Eu juro por tudo que é mais sagrado que está em ambiente de produção. :smiley:

danieldestro

Ele já ouviu falar em OOP?

renatosilva

Do TheDailyWTF, reparem no change log :lol: :lol: :lol:

/* adds up all the column values for a specific row from an excel file.
 * 20050823 - BSR - v1.0 - Adds only columns a to z.
 * 20050909 - BSR - v2.0 - Added support for adding columns aa to zz.
 */
public long addUpAllExcelColumns(
  int a,  int b,  int c,  int d,  int e,  int f,  int g,  int h,  
  int i,  int j,  int k,  int l,  int m,  int n,  int o,  int p,  
  int q,  int r,  int s,  int t,  int u,  int v,  int w,  int x,  
  int y,  int z,
  
  int aa, int ab, int ac, int ad, int ae, int af, int ag, int ah, 
  int ai, int aj, int ak, int al, int am, int an, int ao, int ap, 
  int aq, int ar, int _as, int at, int au, int av, int aw, int ax, 
  int ay, int az,

  int ba, int bb, int bc, int bd, int be, int bf, int bg, int bh, 
  int bi, int bj, int bk, int bl, int bm, int bn, int bo, int bp,
  int bq, int br, int bs, int bt, int bu, int bv, int bw, int bx, 
  int by, int bz,
  
  int ca, int cb, int cc, int cd, int ce, int cf, int cg, int ch,
  int ci, int cj, int ck, int cl, int cm, int cn, int co, int cp,
  int cq, int cr, int cs, int ct, int cu, int cv, int cw, int cx,
  int cy, int cz,
  
  int da, int db, int dc, int dd, int de, int df, int dg, int dh,
  int di, int dj, int dk, int dl, int dm, int dn, int _do, int dp,
  int dq, int dr, int ds, int dt, int du, int dv, int dw, int dx,
  int dy, int dz,

  /* Snip 100 lines */
  
  int ya, int yb, int yc, int yd, int ye, int yf, int yg, int yh,
  int yi, int yj, int yk, int yl, int ym, int yn, int yo, int yp,
  int yq, int yr, int ys, int yt, int yu, int yv, int yw, int yx,
  int yy, int yz,

  int za, int zb, int zc, int zd, int ze, int zf, int zg, int zh,
  int zi, int zj, int zk, int zl, int zm, int zn, int zo, int zp,
  int zq, int zr, int zs, int zt, int zu, int zv, int zw, int zx,
  int zy, int zz)
{
    return 
      a+b+c+d+e+f+g+h+i+j+k+l+m+n+o+p+q+r+s+t+u+v+w+x+y+z+
      aa+ab+ac+ad+ae+af+ag+ah+ai+aj+ak+al+am+an+ao+ap+aq+ar+_as+at+au+av+aw+ax+ay+az+
      ba+bb+bc+bd+be+bf+bg+bh+bi+bj+bk+bl+bm+bn+bo+bp+bq+br+bs+bt+bu+bv+bw+bx+by+bz+
      ca+cb+cc+cd+ce+cf+cg+ch+ci+cj+ck+cl+cm+cn+co+cp+cq+cr+cs+ct+cu+cv+cw+cx+cy+cz+
      da+db+dc+dd+de+df+dg+dh+di+dj+dk+dl+dm+dn+_do+dp+dq+dr+ds+dt+du+dv+dw+dx+dy+dz+
      /* Snip 20 lines */
      ya+yb+yc+yd+ye+yf+yg+yh+yi+yj+yk+yl+ym+yn+yo+yp+yq+yr+ys+yt+yu+yv+yw+yx+yy+yz+
      za+zb+zc+zd+ze+zf+zg+zh+zi+zj+zk+zl+zm+zn+zo+zp+zq+zr+zs+zt+zu+zv+zw+zx+zy+zz;
}
rmarin

Bizarro!

E

No código-fonte de um compilador razoavelmente famoso:

public class X {
    private static X instance = new X();

    // sim, o nome é v em vez de getInstance
    public static X v() {
        return instance;
    }

    // ...

    public void doSomething(...) {
        // ...
        Method m = v().getMethod(...);
    }
}

Agora me explica: pq v().getMethod() em vez de getMethod()???

I

if (bStatus == false){ comandos = "copy etiqueta.txt lpt1"; child = Runtime.getRuntime().exec(comandos); Thread.sleep(500); bStatus = true; }

é daqui do forum… Quando eu vi isso quase chorei! pq ele não fez assim

if !(bStatus) { //e bla blabla }

renatosilva

Ahhh essa aí é fraca info_god :stuck_out_tongue:

I

aubhauihauihauiohauihauio é fraca mais quando eu vi deu um aperto no coração… O cara parece q nunca viu logica :smiley:

danieldestro

Eu não vejo nada demais em fazer:

if( a == false )

É por uma questão de clareza ou de gostar de escrever mais.

Mesmo porque a alternativa correta seria:

if( !a )

E não como você sugeriu.

rmarin

danieldestro:
Eu não vejo nada demais em fazer:

if( a == false )

É por uma questão de clareza ou de gostar de escrever mais.

Mesmo porque a alternativa correta seria:

if( !a )

E não como você sugeriu.


Acho que esse caso não é uma questão de “Burrice”, e sim de falta de conhecimento.
Normalmente quem está começando faz isso.

I

Pois eu ja acho totalmente desnecessario comparar boolean == boolean… Mais vai da cabeça de cada um…

E obrigado pela correção não tinha reparado que coloquei fora do parentese…

if (!(bStatus)) {

}

rmarin

Que me dizem deste modelo de getter?

public ArrayList getCargaCombo() {
        if (cargaCombo != null)
          return cargaCombo;
        else
          return null;
    }

Temos um sistema onde todos os getters são assim.

Será que é para ficar mais “claro”? :smiley: :stuck_out_tongue:

renatosilva

danieldestro:
Eu não vejo nada demais em fazer:

if( a == false )

É por uma questão de clareza ou de gostar de escrever mais.

Eu fazia isso no delphi antigamente :smiley:

danieldestro:
Mesmo porque a alternativa correta seria:

if( !a )

E não como você sugeriu.

Meu Deus! :lol: :lol: :lol:

rmarin:
public ArrayList getCargaCombo() { if (cargaCombo != null) return cargaCombo; else return null; }

Caraleo!!! Demorei pra entender uhauahuahauhauhauhauhauh :lol: :lol: :lol:

rmarin

Pois é!!! huauhauh…o sistema inteiro tá assim, :smiley: :smiley: :smiley:

danieldestro

Hehehehe… infame!

Acabei de pegar um sistema para analisar e vi que o cara gerou o EAR com dois JARs dentro:

  • classes12.jar (driver do oracle); e
  • j2ee.jar

Incrível!
Sendo que o ambiente já tem o ojdbc14.jar (driver Oracle novo). E o pior ainda. O cara colocou o “j2ee” dentro do sistema.

É como fazer um programa em VB e empacotar o Windows junto.

Afff… eu mereço!

Thiago_Senna

danieldestro:
Hehehehe… infame!

Acabei de pegar um sistema para analisar e vi que o cara gerou o EAR com dois JARs dentro:

  • classes12.jar (driver do oracle); e
  • j2ee.jar

Incrível!
Sendo que o ambiente já tem o ojdbc14.jar (driver Oracle novo). E o pior ainda. O cara colocou o “j2ee” dentro do sistema.

É como fazer um programa em VB e empacotar o Windows junto.

Afff… eu mereço!

aff, já vi tanto isso que acho normal.

kuchma
public class A {

    private static Hashtable table;

    public A() {
        table = new Hashtable();
        // ...
    }

    public static boolean validar(String str) {
        return table.contains(str);
    }

}

Marcio Kuchma

J2Alex
...
List list;
while (isQualquerCoisa) {
    list = new ArrayList();
    ...
    list.add(obj);
}
...

:roll:

peczenyj
public static xxx doIt(...) {
   ...
   return doIt1(...);
}

private static xxx doIt1(...){
  ...
  return doIt2(...);
}
...
private static xxx doIt53(...){
  ...
  return doIt54(...);
}

private static xxx doIt54(...){
  ...
  return the_information_finally;
}
cassio
peczenyj:
public static xxx doIt(...) {
   ...
   return doIt1(...);
}

private static xxx doIt1(...){
  ...
  return doIt2(...);
}
...
private static xxx doIt53(...){
  ...
  return doIt54(...);
}

private static xxx doIt54(...){
  ...
  return the_information_finally;
}

versão burra da recursividade...

peczenyj

ô, burro é pouco!

E

Jah encontrei um código assim em PHP

if (1==1) { // procedimentos... }

Era isso mesmo…rsrs por incrivel que pareça…

:roll:

danieldestro

Materpiece (obra-prima):

String strColunaAtual = ""; switch(contadorColunas) { case 0: strColunaAtual = "A"; break; case 1: strColunaAtual = "B"; break; case 2: strColunaAtual = "C"; break; case 3: strColunaAtual = "D"; break; case 4: strColunaAtual = "E"; break; case 5: strColunaAtual = "F"; break; case 6: strColunaAtual = "G"; break; case 7: strColunaAtual = "H"; break; case 8: strColunaAtual = "I"; break; case 9: strColunaAtual = "J"; break; case 10: strColunaAtual = "K"; break; case 11: strColunaAtual = "L"; break; case 12: strColunaAtual = "M"; break; case 13: strColunaAtual = "N"; break; case 14: strColunaAtual = "O"; break; case 15: strColunaAtual = "P"; break; case 16: strColunaAtual = "Q"; break; case 17: strColunaAtual = "R"; break; case 18: strColunaAtual = "S"; break; }

Acho que quando o autor deste pérola souber que o código abaixo faz a mesma coisa, ele vai se matar.

String strColunaAtual = ((char) (contadorColunas+65))+"";
Luiz_Aguiar

Que tal o cara precisar passar 4 inteiros como parâmetro de um método, ai pra não reinventar a roda ele passa um java.awt.Rectangle hehehe :slight_smile:

dudaskank

bom… se for um retângulo que ele vai passar até concordo rsrsrs :roll:

Luiz_Aguiar

Uma classe qualquer de lógica de nogócios de um sistema qualquer… nada referente a uma interface grafica não ou algo que faça desenhos na tela :stuck_out_tongue:

Thiago_Senna

O certo mesmo é criar uma classe chamada Quadrilatero, pois é mais genérico. Serve tanto pra quadrado como pra retângulo! :mrgreen:

S

O SWT está cheio disso.

Exemplo: métodos que calculam o tamanho de um widget retornam um Point, onde o x é o comprimento e o y é a largura.

T

Em um sistema que vi (que podia usar Java 5) o fulano simplesmente encapsulou ArrayList, sem pôr nenhuma funcionalidade adicional.

class ClasseCollection extends ArrayList {
    ... construtores reimplementados omitidos por brevidade ...
}

e usava ClasseCollection o tempo todo, em vez de usar List<MinhaClasse> = new ArrayList<MinhaClasse>().

dudaskank

O SWT está cheio disso.

Exemplo: métodos que calculam o tamanho de um widget retornam um Point, onde o x é o comprimento e o y é a largura.

Nossa, realmente, fizeram um equivalente ao java.awt.Point mas ficaram com preguiça de fazer algo como o java.awt.Dimension hehehe

thingol:
Em um sistema que vi (que podia usar Java 5) o fulano simplesmente encapsulou ArrayList, sem pôr nenhuma funcionalidade adicional.
Code:

class ClasseCollection extends ArrayList {

 construtores reimplementados omitidos por brevidade 

}

e usava ClasseCollection o tempo todo, em vez de usar List = new ArrayList().

Bom, quem sabe o cara copiou esse código de um sistema que usava java < 5 e achou melhor não mudar nada no código… hehe

jack_ganzha

Mais um exemplo super bacana:

import org.jfree.chart.labels.PieSectionLabelGenerator;
import org.jfree.chart.labels.PieToolTipGenerator;

import de.laures.cewolf.links.PieSectionLinkGenerator;

public abstract class ProcessadorGraficosPizza extends
		ProcessadorGraficosGenerico implements PieSectionLinkGenerator,
		PieToolTipGenerator, de.laures.cewolf.tooltips.PieToolTipGenerator,
		PieSectionLabelGenerator {
}

Sim, a classe é só isso. :evil:

valeuz…

danieldestro

O post original é este:http://www.guj.com.br/posts/list/71405.java
Mas resolvi colocar a pérola aqui.

Encontrei a seguinte rotina de validação do formato de placa de identificação de veículo (formato: XYZ1234).

public static boolean isValid(String placa) { String letras = extrairLetras(placa); String numeros = extrairNumeros(placa); if (letras == null || numeros == null) { return false; } if ( letras.length() != 3 || numeros.length() != 4 ) { return false; } // verifica se a variável letras contém apenas letras [A-Z] if (Character.isDigit(letras.charAt(0)) || Character.isDigit(letras.charAt(1)) || Character.isDigit(letras.charAt(2))) { return false; } // verifica se a variável numeros contém apenas números [0-9] if (!Character.isDigit(numeros.charAt(0)) || !Character.isDigit(numeros.charAt(1)) || !Character.isDigit(numeros.charAt(2)) || !Character.isDigit(numeros.charAt(3))) { return false; } return true; }

Como resolver este mesmo problema? Assim:

public static boolean isValid(String placa) { return placa.matches("[A-Z]{3}[0-9]{4}"); }

danieldestro

Mais uma pérola:

try { Class clazzNew = Class.forName(objNew.getClass().getName()); Class clazzOld = Class.forName(objOld.getClass().getName()); } catch( Exception e ) { e.printStackTrace(); }

Por que não fazer apenas isto?

Class clazzNew = objNew.getClass(); Class clazzOld = objOld.getClass();

rodrigoallemand

chicobento:
public Exception sendMail() { try { // envia o email } catch(Exception e) { return e; } return null; }
E então:

Exception e = sendMail(); if (e != null) { throw e; } else { // continua }

Else Forever por Gambi Design Pattern!!!
Desse tipo eu vejo de montão…
Mas a pior que eu já vi foi um comentário assim “Descomentar a linha abaixo após 31/08” e, impressionantemente, o sistema parou de funcionar em 1/9… vai entender… se eu não olho essa classe especificamente… sorte que eu só perdi 3 dias!!! auhauhauhauh

rodrigoallemand

thingol:
Em um sistema que vi (que podia usar Java 5) o fulano simplesmente encapsulou ArrayList, sem pôr nenhuma funcionalidade adicional.

class ClasseCollection extends ArrayList {
    ... construtores reimplementados omitidos por brevidade ...
}

e usava ClasseCollection o tempo todo, em vez de usar List<MinhaClasse> = new ArrayList<MinhaClasse>().

Calmae… isso não é nada!!!
Eu já vi FulanoList implements List e dentro dela, tinha um arrayList e todos os métodos faziam return arrayList.método();
O motivo: só pra retornar o objeto correto nas chamadas…
Detalhe: Era java 5!
O ClasseCollection extends ArrayList eu até entenderia… auhauhauhauh

marciobarroso

info_god:
if (bStatus == false){ comandos = "copy etiqueta.txt lpt1"; child = Runtime.getRuntime().exec(comandos); Thread.sleep(500); bStatus = true; }

é daqui do forum… Quando eu vi isso quase chorei! pq ele não fez assim

if !(bStatus) { //e bla blabla }

:shock: Eu acho que isso não compila … mas veja bem, eu acho. hehehehehe
Se você quis mostrar uma pérola, acabou criando outra.

[]'s

Y

danieldestro:
Porque diabos colocar um return deste de um finally?

public int nomeDoMetodo() { try { // ... } catc( Exception e ) { //... trata } finally { filePost.releaseConnection(); return (status == HttpStatus.SC_OK); } }

Mas esse nem roda neh? O retornó é int e a comparação faz um evaluate de um boolean. Neh não?

Ironlynx

Destro, seu codigo ficou anos-luz mais enxuto, mas e o sistema em qual ele vai ser utilizado?Regex não é a coisa mais rápida do mundo, ás vezes essa otimização pode “dar problemas”.Eu mesmo tô com um problema em um sistema cuja as máquinas tem pouca memória(há uma única “top” com 256MB de RAM… :frowning: )

T
huahuah e o pattern SILENCIATOR conhecem???

try{

//faz alguma coisa…

}

catch(IOException Ex){

//Silenciator

}
Ironlynx

Tecnoage, não zoa não pq uma vez eu vi um cara (do C++) que tinha traduzido Singleton para Solteirão.Imagina como o mundo é estranho cheio de objetos esquisitões por aí… :lol:

danieldestro

Estamos falando de servidores com 4 processadores e 4GB RAM.

ddduran

meu acho que nessa disputa um codigo que dei manutenção foi o campião
era um relatório web que escrevia num xls com POI

meu tinha mais de 2k de linhas todos em script let as mais de 30 variaveis com os nomes todos assim

String a;
int b;

...

String z2; // acabou o alfabeto
float z3;

ai o cara (pra não dizer outra coisa que o chamei quando tive q dar manutenção) para “modularizar” seu codigo fez o metodo no jsp (continua scriptlet) para preencher celulas abaixo

public void preenche(HSSFRow r, int c, String t, String ti) throws java.text.ParseException {
		HSSFCell cl; double v=0;
		c = r.getCell( (short) c);
		if (ti.equals("I")){	
			v = cell.getNumericCellValue();
			v = v + Integer.parseInt(t);
			c.setCellValue(v);
		}
		else if (ti.equals("D")){	
			v = cell.getNumericCellValue();
			v = v + Double.parseDouble(t);
			c.setCellValue(v);
		}
		else if (ti.equals("Date")){
			Date dtaData = null;
			SimpleDateFormat formatter;
			formatter = new SimpleDateFormat("hh:mm:ss");
			if(!t.equals("")){
				dtaData = formatter.parse(t);
				c.setCellValue(dtaData);
			}

		}
	}

nunca senti tando medo em mexer em um código
gostaria de poder postar todo o codigo, mas não posso.

Agora o melhor vinha no final desse arquivo jsp que tinha o seguinte codigo

<script>location.href = "Relatorio2.jsp";</script>

e era outro jsp igualzinho, detalhe isso foi até o Relatorio13.jsp

e ai será que da pra ganhar?

danieldestro

Porque alguém estende a classe java.util.Date, quando na verdade só cria redundância de semântica?
Note o método getStorageDate(). Campeão!!!

Além do que, os métodos [get/set] StorageDate e SystemDate significam a mesmíssima coisa.

Senhor, dai-me paciência!

//...

public class HDate extends Date {

    public HDate() {
        super();
    }

    public HDate(long millis) {
        this(new Date(millis));
    }

    public HDate(Date date) {
        setSystemDate(date);
    }

    public HDate(String data, String mascara) throws ParseException {
        SimpleDateFormat dateformat = new SimpleDateFormat(mascara);
        this.setTime(dateformat.parse(data).getTime());
    }

    public HDate(String data) throws ParseException {
        this(FormatHelper.parseAny(data));
    }

    public java.util.Date getStorageDate() {
        long millis = ( (long) this.getTime() / 1000 ) * 1000;
        this.setTime(millis);
        return this;
    }

    public java.util.Date getSystemDate() {
        return this;
    }

    public void setStoredDate(java.util.Date date) {
        this.setTime(date.getTime());
    }

    public void setSystemDate(java.util.Date date) {
        this.setTime(date.getTime());
    }

    public String toString() {
        return FormatHelper.getDataCompleta(this);
    }
}
T

Ironlynx:
Tecnoage, não zoa não pq uma vez eu vi um cara (do C++) que tinha traduzido Singleton para Solteirão.Imagina como o mundo é estranho cheio de objetos esquisitões por aí… :lol:

huahauhauhau foda!!! ahuaha mas esse silenciator foi encontrado em ambiente de produção. rsrsrs

danieldestro

Achei mais esta preciosidade:

public static Date parseDataHora(String ddmmyyyyHHmmss) throws ParseException { return new Date(FORMAT_DATE_TIME.parse(ddmmyyyyHHmmss).getTime()); }

Por que não simplificar assim?

public static Date parseDataHora(String dt) throws ParseException { return FORMAT_DATE_TIME.parse(dt); }

ViniGodoy

Que tal isso?

//Acho que tem um pau que acontece 
//mais vezes se apagar essas linhas. NAO APAGUE!
while (true)  
   break;

Ok… eu acredito em duendes.

[EDITED] Ah sim, esqueci de dizer… isso se repetia pelo menos umas 15 vezes pelo código…

Ironlynx

Ah, então o cara é relaxado… tem um mundo de RAM!!!Q inveja…

Daniel, essa é a famosa “programação com comentário embutido”…huahauha o cara pôs ddmmyyyyHHmmss para não esquecer dos parâmetros de formatação! :lol:

danieldestro

if (!form.getCod().equals(null) && !form.getCod().equals("")) { vo.setCod(new Long(form.getCod())); } else { vo.setCod(new Long(0)); }

Este programador não sabe o que está fazendo…

!form.getCod().equals(null) ??? Isto pode dar um belo de um NullPointerException.

danieldestro
vo.setData(new Date(new HDate(31/12/2699).getTime()));

Será que a falta de ASPAS na data vai fazer diferença??? O teste nunca nem passou perto daqui!
Fora os “milhares” de objetos que ficam criando à toa.

Marck

ViniGodoy:
Que tal isso?

//Acho que tem um pau que acontece 
//mais vezes se apagar essas linhas. NAO APAGUE!
while (true)  
   break;

Ok… eu acredito em duendes.

[EDITED] Ah sim, esqueci de dizer… isso se repetia pelo menos umas 15 vezes pelo código…

15 vezes?? Só???

Aqui temos isso 15 vezes por tela!
Pior que a documentação do Fox Pro já vem com esses exemplos…rs…
preciso de outro emprego urgente!

ViniGodoy

danieldestro:

!form.getCod().equals(null) ??? Isto pode dar um belo de um NullPointerException.

Só se o equals estiver implementado errado. equals com null sempre dá false.

Ainda sim, é tosco. É o mesmo que fazer:
if (true && !form.getCod().equals(""))

Aí era caso para == mesmo.

Marck

Pra que isso:

Faz um select que retorna 44.500 linha e guarda em um cursor!
select * from w_materiais_cores ,'xcursormat'
.
.
.

select * from xCursorMat where material = 'algumMaterial'

Depois filtra do cursor o que será preciso para o relatório.
Com mais algumas bizarrices o relatorio demorava 3 minutos p ser gerado, com a alteração, passou p 5 seg...

danieldestro

Logo o cara levará o prêmio Nobel da desprogramação:

public Object create(VO vo) { String query = new String(); // HÃM ??? query = "select max(cod+1) from a_tabela"; // Alguém me explica isto??? Vector cod = (Vector) dao.getSingleResult(query); vo.setCod(new Long(cod.get(0).toString())); // MEU DEUS DO CÉU vo.setData(new Date(new HDate().getTime())); // QUANTO MAIS OBJETOS CRIADOS MELHOR vo.setUsuario(" "); // BOA PRÁTICA COLOCAR ESPAÇO EM BRANCO dao.create(vo); return vo; }
Eu fiz comentários ácidos e sarcásticos no próprio código.

select max(cod+1) ??? Seria pelo menos select max(cod)+1.
Fora que o código não funcionaria com concorrência…

danieldestro

Posso desistir já???

String query = new String(); query = " select * from A_TABELA where 1 = 1 and COD >= :cod"; List<VO> vos = new ArrayList<VO>(); vos = dao.createNativeQuery(VO.class, query);

Ironlynx
Ah, falar dos outros é fácil, quero ver alguém ter coragem de falar dos proprios erros... aí vai, o código da minha primeira app web(e primeira versão do meu projeto final), olha essa JSP "que liiinda"(ECA!):
<%@ page language="java" import="com.siap.*,org.prevayler.*,java.io.*,com.thoughtworks.xstream.XStream;" %>
<% Prevayler prevayler=(Prevayler)this.getServletContext().getAttribute("prevayler");
SistemaAcademico siap=(SistemaAcademico)prevayler.prevalentSystem();
Usuario usuario=(Usuario)session.getAttribute("usuario");
 try{
 UsuarioRenovaCadastro u=new UsuarioRenovaCadastro();
   u.setUsuario(usuario);
   u.setNomeUsuario(request.getParameter("nome"));
   u.setEndereco(request.getParameter("endereco"));
   u.setBairro(request.getParameter("bairro"));
   u.setCidade(request.getParameter("cidade"));
   u.setEstado(request.getParameter("estado"));
   u.setCep(request.getParameter("cep"));
   u.setComentario(request.getParameter("comentario")); 
  
    XStream xstream = new XStream(); 
            xstream.alias("usuariorenovacadastro", UsuarioRenovaCadastro.class);
     String xml = xstream.toXML(u);
     PrintWriter saida = new PrintWriter(new FileOutputStream("c:/cadastro.xml",true));
			saida.write(xml);
            saida.close();
    }
  catch(Exception e){
   e.printStackTrace();
   System.out.println("Merda Exception!Não deu para gerar o XML!");
  }    
%>

<html><head><title>SIAP2004-Confirmação de Cadastro</title></head>
<body >
<CAPTION><font face="ariel" color="#000000"><marquee>
<b><i> SISTEMA DE INFORMAÇÕES ACADÊMICAS PREVALENTE </i></b></font></CAPTION></marquee>
<center><TABLE BORDER=30 width=80% CELLSPACING=150 BORDERCOLOR="blue">
<TR><TH COLSPAN=1><div align=center><h3>Resultado da Requisição:</h3></div>
<center><TABLE BORDER=0><caption>Mudanças Efetuadas:</caption>
<tr><th> Nome</th><th>Endereço</th><th> Bairro</th><th> Cidade</th><th> Estado</th><th> Cep</th></tr>

<tr> 
<th><%=request.getParameter("nome")%></th> 
<th><%=request.getParameter("endereco")%></th> 
<th><%=request.getParameter("bairro")%></th> 
<th><%=request.getParameter("cidade")%></th> 
<th><%=request.getParameter("estado")%></th> 
<th><%=request.getParameter("cep")%></th> 
</tr> 
<% ;
 %> 

</TH></TR>
</TABLE></center>
</table>
<center>
<INPUT TYPE="button" VALUE="Voltar" onClick="history.back()">
</center>
</body>
</html>
Isso é que é "isolamento"! :lol:
marcosbrandao
:lol:
julianostr:
if (a == 1 && a ==2) {

   .....
   .....
  
}
Talvez o atributo "a" tivesse dupla personalidade!!!! :lol: :lol:
marcosbrandao

Encontrei em um código aqui:

if (categSis.equals("AB")) {
    categSis = "B";
}else if(categSis.equals("AC")) {
    categSis = "C";
}else if(categSis.equals("A")) {
    categSis = "A";
}else if(categSis.equals("B")) {
    categSis = "B";
}else if(categSis.equals("C")) {
    categSis = "C";
} else if ...//e a cadeia continua
R

for (int i=0; i<16; i++) { if (i==0) { preencherCampo(0); } else if (i==1) { preencherCampo(1); } else if (i==2) { preencherCampo(2); } else if (i==3) { preencherCampo(3); } ... }

isso foi até o 15…

S

Não vou colocar o código, pois é meio grande, confuso e eu poderia ser plotado :lol:

Resumidamente, é isso:
Há um TreeMap <String, ArrayList>. A cada iteração de um for, os ArrayList dos for são preenchidos com inteiros e, no final, há uma comparação.

Detalhes:
1- Não se usa supertipos; ok
2- Nem generics; ok
3- Não há motivo algum para o Map ser ordenado.
4- O pior de tudo: no final das contas, daria no mesmo jogar tudo num List só.

A

Esta é uma de javascript.

no Javascript o objeto Date tem o metodo getMonth que retorna o mes atual, porém este retorna o mes começando do “0” então o sujeito para contornar isto teve a brilhante ideia :smiley:

// O getMonth do JavaScript retorna o mes errado.
function getMes(){
         var month  = new Date().getMonth();

         var meses = new Array();
         meses.push( 1  )
         meses.push( 2  )
         meses.push( 3  )
         meses.push( 4  )
         meses.push( 5  )
         meses.push( 6  )
         meses.push( 7  )
         meses.push( 8  )
         meses.push( 9  )
         meses.push( 10 )
         meses.push( 11 )
         meses.push( 10 )

         return meses[ month ];
}
danieldestro

Alguém me explica o que o cara que escreveu este método estava pensando?!?!?!?

public static double round(double arg, int n) {
        int ceilOrFloor = 0;
        if(n < 0){
            ceilOrFloor = 1; 
        }
        double arredondado = arg;
        arredondado *= (Math.pow(10, n));
        if (ceilOrFloor == 0) {
            arredondado = Math.ceil(arredondado);
        } else {
            arredondado = Math.floor(arredondado);
        }
        arredondado /= (Math.pow(10, n));
        
        DecimalFormat format = new DecimalFormat("#,##0.0000#");
        String str = format.format(arredondado);
        str = str.replace(',', '.');
        arredondado = Double.parseDouble(str);
        
        return arredondado;
    }

O que aquele trecho com o DecimalFormat faz ali???

Eu substituiria o método acima pelo trecho abaixo:

double n = Math.pow(10,3);
double b = Math.round( a*n ) / n;

Salvo engano se alguma regra bem específica determina que, se n for negativo, tem que fazer floor em vez de ceil, mas pleo uso no programa, me parece que não é o caso.

ps: Com n negativo não funciona. Erro na potência. Precisa colocar o absoluto de n.

Que Deus o abençoe!

danieldestro

Olhem o código:

Date dtAtual = new Date( new HDate(dtFormat.format( new Date(System.currentTimeMillis()) )).getTime() );

Análise semântica do que o cara fez:

Pega os milissegundos da hora atual do sistema
Cria um objeto Date para aquela hora
Formata o Date para String
Cria um HDate, que é uma extensão de Date, recebendo como argumento a data no formato String
Pega os milissegundos do HDate criado
Cria um Date com aqueles milissegundos

Traduzindo:

Date dtAtual = new Date();

Ele só queria fazer isto!

Candidato ao campeão mundial da tosquice.

danieldestro

O cara que fez isso deve ser programador VB.

form.setCodigo(new Long(0 + request.getParameter("codigo")));

Ele deve achar que em Java ?somar? Zero com String dá um inteiro, igual no VB.

danieldestro

Olha o tratamento de erro (catch e finally):

public Long obterProximoCodigo(String cod) { Long codigo = null; GeraCodigo registro; try { registro = dao.consultarPorCodigo(cod); codigo = registro.getNrPrxmo() + 1; registro.setNrPrxmo(codigo); bp.update(registro); } catch(RuntimeException e) { throw new BusinessException("erro.gera.codigo"); } finally { return codigo; } }

Fora que isso me cheira a problemas com concorrência.

luistiagos
public metodo() throws Exception {
 try{

      try{
             //codigo que lança IOException
          } catch(IOException e) {
              thow new IOException(e);
          } finally {

          }
   }catch(IOException e) {
      throw new IOException(e);
   } finally {
      
   }

 } 
}

Me digam… o que um cara desses tem na cabeça?

_
danieldestro

Errar é uma coisa. Cometer assassinatos na programação é outra.

danieldestro

Parabéns ao OCP* que escreveu este SQL:

select r.* from ( select * from TABELA o where 1=1 and o.COD >= ? and (to_date(o.DATA_INI, 'DD/MM/YYYY') <= to_date(sysdate,'DD/MM/YYYY')) and (to_date(o.DATA_FIM, 'DD/MM/YYYY') >= to_date(sysdate, 'DD/MM/YYYY')) order by o.COD desc ) r where rownum < 451

O mais legal é ele converter campos do tipo date e sysdate para DATE.
Além do que ele dá um order by de uma coluna que ele está informando o valor.
Fora o subselect só para pegar os primeiros 450 registros.

  • OCP = Oracle Certified Professional
davidbuzatto

Reparem a identação! Lindo não?

http://www.guj.com.br/posts/list/81711.java

Leozin

davidbuzatto:
Reparem a identação! Lindo não?

http://www.guj.com.br/posts/list/81711.java

mas acho que isso foi “problema” do editor daqui do guj

davidbuzatto

Leozin:
davidbuzatto:
Reparem a identação! Lindo não?

http://www.guj.com.br/posts/list/81711.java

mas acho que isso foi “problema” do editor daqui do guj

Eu queria acreditar nisso… Leia os posts :smiley:

Leozin

davidbuzatto:
Leozin:
davidbuzatto:
Reparem a identação! Lindo não?

http://www.guj.com.br/posts/list/81711.java

mas acho que isso foi “problema” do editor daqui do guj

Eu queria acreditar nisso… Leia os posts :D

PODE CRE HEIUAOHEUHAIEHHEUA

agora que ví :stuck_out_tongue: :stuck_out_tongue: :stuck_out_tongue: mal ae EHUOIAEA

peerless

Na faculdade, uma colega minha escreveu:

for i := 1 to 0 do begin ... end;

hehe… imagino o i, saindo todo empolgado para fazer o loop e… caploft!

Não, ela não pensou em usar downto. Era apenas uma inrolação em um trabalho de faculdade, para dizer que “fez” algo no caderno…

danieldestro

Será que isso funciona?
Testes? Para que testes?

public class AlgumEJB { public List<Pessoa> buscaPorNome(String nome) { // usando JPA retorna uma lista de pessoas } }

Vector pessoas = (Vector) ejb.buscaPorNome( parteDoNome ); for( int i=0; i<pessoas.size(); i++ ) { String nome = (String) ((Vector)pessoas.get(i)).get(0); String idade = (String) ((Vector)pessoas.get(i)).get(i); }

ramilani12

Posso citar eu mesmo?:

public void addIndicador(Indicador ind)
	{
		this.addIndicador(ind);
	}

Porque sera que esta lançando isso:

java.lang.StackOverflowError

Essa horario de verao influencia mesmo hein…

T

Este estilo de código costumo escrever em C++ porque:

  • Ele não tem o “labeled loop”
  • Usar “try/catch” até funciona em C++, mas a maior parte das APIs não lança exceções e sou obrigado a ficar checando o valor de retorno.
    Se eu fizesse isto aqui em Java, não pareceria tosco? Acho que todo mundo já viu um “while (true)”, mas poucos já viram um “while (false)”.
do {
    if (!SUCCEEDED (bla()) break;
    ble();
    if (!SUCCEEDED (bli()) break;
    blo();
    blu();
} while (false);
victorwss

thingol, o código que você colocou está faltando alguns fecha-perentêses.

Mas, é para casos como esse que linguagens como C e C++ usam o goto. :twisted:

danieldestro
Tosquera (má prática):
/**
     * Método que recebe uma lista com duas entidade e compara o conteudo campo a campo.
     * @param lista fornece as duas entidade para a comparação sendo que a primeira é a nova e a segunda a atual.
     * @return String delimitada por ponto e vírgula contendo o nome dos campos que são diferentes entre si.
     */
    public String compararEntidades(List lista) { /* .... */ }
Sugestão:
/**
 * Compara o conteúdo dos atributos dos dois objetos.
 * @param obj1 Objeto a ser comparado.
 * @param obj2 Objeto a ser comparado.
 * @return Array de String contendo os nomes dos atributos diferentes entre si em cada posição do array.
 */
public String[] compararEntidades(Object obj1, Object obj2) { /* .... */ }

Já simplifica a vida de quem usa.

neohacker

Essa não é nem comparada com as demais desse tópico, mas ainda vale a pena ser postada.

private void habilitaBotoes(boolean state) { if (state == true) { jtextefield.setEnable(true); // Serie de outros componentes sendo habilitados da mesma maneira } else { jtextefield.setEnable(false); // Serie de outros componentes sendo habilitados da mesma maneira } }

T

Meu detector de “tosquidão” dá um bip quando acha uma comparação do tipo “== true” ou “== false”. Normalmente é sinal de que alguma outra coisa vai acontecer.

ASOBrasil

Quando vocês acharem isso no código, ai sim vocês vão chorar!

...
public class XxxxxAction extends Action implements Serializable{
...
danieldestro

ASOBrasil:
Quando vocês acharem isso no código, ai sim vocês vão chorar!

... public class XxxxxAction extends Action implements Serializable{ ...

Isso… uma Action que pode ser persistida ou enviado pelo fio… hahahahaahah…

T

Isso se chama “fazer as coisas por inércia ou por magia, sem saber para que servem”.

Fazer todas as classes de seu projeto implementarem Serializable é de lascar, mas já vi gente boa que acaba fazendo isso, porque aprendeu que Serializable é algo mágico e bom, e que não dá nenhum problema usar mesmo quando não é necessário.

Confesso que magia é mais necessária em ambiente Microsoft que em ambiente Java, porque muita coisa no ambiente Microsoft é secreta e você é obrigado a fazer sua interpretação do que está escrito no MSDN, mas volta e meia eu vejo magia sendo usada em ambiente Java, onde teoricamente isso não seria tão necessário assim - afinal de contas, o fonte de 95% das coisas que você vai usar normalmente está disponível, e se não estiver, nada como um bom descompilador.

ASOBrasil

danieldestro:

Isso… uma Action que pode ser persistida ou enviado pelo fio… hahahahaahah…

É rir para não chorar! Pior que tem várias Actions fazendo isso.

eliziario

J.E.Z:
essa eh pra quem conhece C++…

FEITO POR UM PROFESSOR SUBSTITUTO EM SALA DE AULA:

Como mostrar o endereço de um pointer:

int *a;

*a = 2;

 // Segundo a explicação o & mostra endereço
 // e o * o conteúdo, e ele queria mostrar o 
 // endereço do conteúdo... vai entender!?

printf("%d", &*a);

Cada um é cada um neh!?

E só pra ser chato: embora usar stdio seja perfeitamente legal em C++, o apropriado, sob ponto de vista de estilo, em C++ é usar iostream. Ainda mais para um professor que estava dando aula de C++, esse printf é imperdoavelmente feio. Dê uma porrada nele por favor.

peczenyj
private static final long serialVersionUID = RandomUtils.nextLong();
danieldestro

O que mais tem por ai é gente fazendo as coisas sem saber o porquê.

Veja isso:

public class CadastroDelegate {
  private Cadastro cad;

  public CadastroDelegate() {
    this.cad = lookup("ejb/Cadastro");
  }

  public void cadastrar(Pessoa p) {
    if( p instanceof PessoaJuridica ) {
      cad.cadastrarPessoaJuridica( (PessoaJuridica) p );
    } else if( p instanceof PessoaFisica ) {
      cad.cadastrarPessoaFisica( (PessoaFisica) p );
    } else {
      //trata situação
    }
  }
}

Isso não é mais apenas um delegate.

danieldestro

FANTASTIC!!! (leia com sotaque francês)

/**
 * Método responsavel por possibilitar o uso de trim com strings nulas. 
 * O retorno, no caso da string tar um espaço em branco para poder inserir 
 * em banco de dados evitando erros de contrante, é uma string com espaço 
 * em branco.
 * @param valor -  a string qeu ser precisa retirar os espaços
 * @return - a string sem espaços ou uma string nula
 */
public static String stringTrimNulableReturnString(String valor){
        if(StringUtils.isEmpty(valor)){
            return valor;
        }else if(valor.trim().length() == 0){
            return valor;
        }
        return StringUtils.trim(valor);
}

    /**
     * Método responsável por transformar uma string em um long, no caso da string ter o valor zero, será retornado o zero
     * @param valor - a string a ser transformada
     * @return - O long transformado
     */
    public static Long stringToLongReturnZero(String valor){
        if(StringUtils.isBlank(valor)){
            return null;    
        }else if(StringUtils.isNumeric(valor)){
            return new Long(valor);            
        }
        return 0L;        
                
    }

    /**
     * método responsável por transformar um long em uma string
     * @param valor -  o long a ser transformado
     * @return - uma string transformada
     */
    public static String longToString(Long valor){
        String.valueOf(valor);
        if(valor == null || valor == 0 ){
            return "";
        }
        return valor.toString();   
    }

A melhor coleção de "utils" que já vi.

danieldestro

Agora entendi pra que servem as ENUMS… Enum de SQL…

public enum EnumQueries { FIND_ALL("select o from EntidadeLegal o"), FIND_BY_ID("select o from EntidadeLegal o where o.cod=:cod"), XYZ_FIND_ALL("select o from Xyz o"), FIND_BY_KKK("select a from KluKluxKlan a where a.kkk=:kkk"), // e ai vai mais uns 100 SQLs }

danieldestro

Parabéns! Alguns desenvolvedores me surpreendem cada dia mais.

Interface do EJB:@Remote public interface Relatorio { public List<Item> gerarRelatorio(Long codigo); }

Usando o EJB:List<Item> lista = new ArrayList<Item>(); Relatorio rel = lookup(jndi); Vector result = (Vector) rel.gerarRelatorio(cod); // HEIM ??? for(int j=0; j < result.size(); j++) { String nome = (((Vector)result.get(j)).get(0).toString()); // WTF ??? String email = (((Vector)result.get(j)).get(1).toString()); // O cara tá doido??? Item i = new Item( nome, email ); // Puuuuuttttzzzz lista.add( i ); }

Isso que dá trabalhar numa área de Garantia da Qualidade (QA) e Aderência aos padrões definidos. Você vê cada uma!

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

peczenyj

Afinal, um Vector e um ArrayList são completamente diferentes e totalmente incompatíveis!

E
danieldestro:
FANTASTIC!!! (leia com sotaque francês)
/**
 * Método responsavel por possibilitar o uso de trim com strings nulas. 
 * O retorno, no caso da string tar um espaço em branco para poder inserir 
 * em banco de dados evitando erros de contrante, é uma string com espaço 
 * em branco.
 * @param valor -  a string qeu ser precisa retirar os espaços
 * @return - a string sem espaços ou uma string nula
 */
public static String stringTrimNulableReturnString(String valor){
        if(StringUtils.isEmpty(valor)){
            return valor;
        }else if(valor.trim().length() == 0){
            return valor;
        }
        return StringUtils.trim(valor);
}

    /**
     * Método responsável por transformar uma string em um long, no caso da string ter o valor zero, será retornado o zero
     * @param valor - a string a ser transformada
     * @return - O long transformado
     */
    public static Long stringToLongReturnZero(String valor){
        if(StringUtils.isBlank(valor)){
            return null;    
        }else if(StringUtils.isNumeric(valor)){
            return new Long(valor);            
        }
        return 0L;        
                
    }

    /**
     * método responsável por transformar um long em uma string
     * @param valor -  o long a ser transformado
     * @return - uma string transformada
     */
    public static String longToString(Long valor){
        String.valueOf(valor);
        if(valor == null || valor == 0 ){
            return "";
        }
        return valor.toString();   
    }

A melhor coleção de "utils" que já vi.

Nossa nunca tinha visto tantas coisas "úteis" são tão úteis que eu nem entendi para que servem, mas beleza...

danieldestro

Sabe que isso não é uma verdade. Mas fazer aquilo é de matar.

rubinelli

A minha teoria é que o maluquinho viu o warning do Eclipse, e desconhecendo @SupressWarning, resolveu chutar o pau da barraca.

ramilani12

Sabe que isso não é uma verdade. Mas fazer aquilo é de matar.

Daniel seu trabalho deve ser divertido… :slight_smile:

luistiagos

Daniel pelo jeito ai no seu trampo ta cheio de POGramadores…

bombbr

Pelo menos está bem documentado...hahaha

"O retorno, no caso da string tar um espaço...."

Reparem no verbo TAR.

danieldestro:
FANTASTIC!!! (leia com sotaque francês) [code]/** * Método responsavel por possibilitar o uso de trim com strings nulas. * O retorno, no caso da string tar um espaço em branco para poder inserir * em banco de dados evitando erros de contrante, é uma string com espaço * em branco. * @param valor - a string qeu ser precisa retirar os espaços * @return - a string sem espaços ou uma string nula */ public static String stringTrimNulableReturnString(String valor){ if(StringUtils.isEmpty(valor)){ return valor; }else if(valor.trim().length() == 0){ return valor; } return StringUtils.trim(valor); }

.
.
.

A melhor coleção de "utils" que já vi.

faq

Na realidade esse tipo de código é feito com de muita criativadade e esforço, e se chama boicote.
O cara vai trabalhar, pega um engarrafamento, chega 10 minutos atrasado e tem o salário do dia cortado. Amanhã ele chega, uma hora antes só pra comitar esse tipo de coisa.

“Leia com sotaque francês.”

hehehehe

Paulo_Silveira

poxa Daniel, ta complicada a situacao ai.

marcosbrandao

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

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

danieldestro

Para enriquecer nosso acervo:

/**
 * Método que corrige a descrição da situação.
 * @param listaItens <b> List(Item)</b>
 * @return String - descrição
 */
public String situacao(List<Item> 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";
}

Super Hiper Ultra Puxa!

Eduardo_Bregaida

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:

danieldestro

É assim que se faz construtor:

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
}

O que um "desenvolvedor" deste tem na cabeça?

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 ) { // ... }
???

Y

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 ) { // ... }
???

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

:roll:

Rafael_Nunes

danieldestro:

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

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

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

Rafael_Nunes

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

:roll:

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

fguazzel

Vi esses dias isso, simples e direto:

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

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

:roll:

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

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).

danieldestro

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

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???

S

Não seria melhor isso?

if (codigo.equals(0L))

Rafael_Nunes

Schuenemann:
Não seria melhor isso?

if (codigo.equals(0L))

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(); } }

Y

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

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???

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.

S

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).

danieldestro

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.

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?

Y

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?

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

Abstenho-me de continuar.

danieldestro

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); } }

spycall
/**
	 * 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;
	}
Sugestão
public String getData() {
     SimpleDateFormat sdf = new SimpleDateFormat("MMMyy"); 
     return sdf.format(new Date()).toUpperCase();
}
peerless

Cara… o post do coutinho é sensacional!! hahahahahahahha

vanzella

Esse ja vi de kilo

if(1 > 2)
{
    //não faz nada
}
else
{
    consulta();
}

um dia ele aprende que exite um cara chamado “!” que serve pra negar

if(! (1 > 2))
{
    consulta();
}
nbluis

tipo… 1 > 2 ???
ou seja ele sempre consulta !!!
pra que negar ?

vanzella

nbluis:
tipo… 1 > 2 ???
ou seja ele sempre consulta !!!
pra que negar ?

hâm?

vanzella

a condição poderia ser qualquer coisa, não necessariamente “1>2” o proposito da tosquice é o else sem necessidade.

nbluis

isso

if(! (1 > 2))  {
  consulta();
}

quando 1 pode ser maior que 2 ?

simplismente.

consulta();
luistiagos

contribuindo:

este acabei de ver em uma action aqui na empresa:

if(form.getIndGravaDescontoEdi() == null) {
            dto.setIndGravaDescontoEdi(Boolean.FALSE);
        } else if(Boolean.FALSE.equals(form.getIndGravaDescontoEdi())) {
            dto.setIndGravaDescontoEdi(Boolean.FALSE);
        } else if(Boolean.TRUE.equals(form.getIndGravaDescontoEdi())) {
            dto.setIndGravaDescontoEdi(Boolean.TRUE);
        }
Leozin

luistiagos:
contribuindo:

este acabei de ver em uma action aqui na empresa:

if(form.getIndGravaDescontoEdi() == null) {
            dto.setIndGravaDescontoEdi(Boolean.FALSE);
        } else if(Boolean.FALSE.equals(form.getIndGravaDescontoEdi())) {
            dto.setIndGravaDescontoEdi(Boolean.FALSE);
        } else if(Boolean.TRUE.equals(form.getIndGravaDescontoEdi())) {
            dto.setIndGravaDescontoEdi(Boolean.TRUE);
        }

Santa mãe de deus misericórdia amém nos salve desse mundo de maléfias demoníacas fé em deus

danieldestro

Alguém já ouviu falar em sobrecarga de métodos? Fora as más práticas espalhadas por ai.

public void feio( byte tipo, String msg, HttpServletRequest req ) {
  String tipoMessage = "";  // para que isto???
  switch (tipo) {
    case CONSTANTS.MESSAGE:
      tipoMessage = "message";
      break;
    case CONSTANTS.WARNING:
      tipoMessage = "warning";
      break;
    default:
      tipoMessage = "erro";
      break;
  }
  ActionMessages actionMessages = new ActionMessages();
  actionMessages.add(tipoMessage, new ActionMessage(msg));
  saveMessages(request, actionMessages);
}

public void feio( byte tipo, String msg, HttpServletRequest req, String param ) {
  String tipoMessage = "";  // para que isto???
  switch (tipo) {
    case CONSTANTS.MESSAGE:
      tipoMessage = "message";
      break;
    case CONSTANTS.WARNING:
      tipoMessage = "warning";
      break;
    default:
      tipoMessage = "erro";
      break;
  }
  ActionMessages actionMessages = new ActionMessages();
  actionMessages.add(tipoMessage, new ActionMessage(msg, param));
  saveMessages(request, actionMessages);
}

Sobrecarga de queeee??? Como assim, por exemplo??? É mais fácil duplicar o código. Reuso com Copy & Paste.

Assim óóóoóóó... Eu explico:

public void feio( byte tipo, String msg, HttpServletRequest req ) {
  feio( byte tipo, String msg, HttpServletRequest req, null );
}

public void feio( byte tipo, String msg, HttpServletRequest req, String param ) {
  String tipoMessage = null;  // agora sim
  switch (tipo) {  // isto poderia ser melhorado, mas vou deixar assim
    case CONSTANTS.MESSAGE:
      tipoMessage = "message";
      break;
    case CONSTANTS.WARNING:
      tipoMessage = "warning";
      break;
    default:
      tipoMessage = "erro";
      break;
  }
  ActionMessages actionMessages = new ActionMessages();
  if( param != null ) 
    actionMessages.add(tipoMessage, new ActionMessage(msg, param));
  else
    actionMessages.add(tipoMessage, new ActionMessage(msg));
  saveMessages(request, actionMessages);
}

Aproveite o que já está pronto.

Reuso gente, REUSO!

neohacker

Um pouquinho de SQL pra vocês:

//não importa o que vem antes daqui //... and ( op.deal_closed_date >=TO_DATE ('<data do dia> 01:00:00 AM', 'dd/mm/yyyy hh:mi:ss PM') and op.DEAL_CLOSED_DATE<=TO_DATE ('<data do dia> 11:59:59 PM', 'dd/mm/yyyy hh:mi:ss PM')) and (( op.STATE = 2 OR op.STATE = 8 OR op.STATE = 11) OR op.STATE = 4)
Alguém me fala o que acontece depois da meia noite e observem a lógica com os OR …
simples assim:

and op.STATE in (2, 4, 8, 11)
victorwss

Olha só este método:
Ele pertence a uma classe que é resultado de noites sem dormir, prazo para ontem, síndrome do estudante e requisitos mal-definidos e mal-levantados. Observação: Este código está dentro de uma CellEditor.

/**
     * Método que faz as validações nos campos de desconto reais, desconto porcentual e preço liquido
     * todas as validações realizadas aqui sao baseadas no desconto em reais, que é repassado diretamente ou via calculo
     */
    private void validacoesItens(BigDecimal valorDescontoReais, ItensAbaConsultaVO itensAbaConsultaVO,
            DecimalField decimalFieldAtual, BigDecimal equivalenteVODecimalField) throws DatabaseException {

        if (itensAbaConsultaVO.getValorIpiItem() != null && itensAbaConsultaVO.getValorIpiItem().compareTo(BigDecimal.ZERO) > 0) {

            BigDecimal fatorIpi          = itensAbaConsultaVO.getProIpi().divide(new BigDecimal(100), 8, RoundingMode.HALF_UP);

            BigDecimal valorAcordado     = itensAbaConsultaVO.getValorView().subtract(valorDescontoReais);
            BigDecimal valorAcordadoSemIpi  = valorAcordado.divide(fatorIpi.add(BigDecimal.ONE), 8, RoundingMode.HALF_UP);
            BigDecimal diferencaValorAcordado = valorAcordado.subtract(valorAcordadoSemIpi);
            
            BigDecimal valorUnitarioSemIpi    = itensAbaConsultaVO.getValorView().divide(fatorIpi.add(BigDecimal.ONE), 8, RoundingMode.HALF_UP);
            BigDecimal diferencaValorUnitario = itensAbaConsultaVO.getValorView().subtract(valorUnitarioSemIpi);
            
            BigDecimal diferencaValorIpi = diferencaValorUnitario.subtract(diferencaValorAcordado);
            
            valorDescontoReais = valorDescontoReais.subtract(diferencaValorIpi);
        }

        if (valorDescontoReais.compareTo(itensAbaConsultaVO.getConValrDesconto()) != 0) {
            String descontoUsuario = "";
            BigDecimal valorDesconto = BigDecimal.ZERO;
            FaixaDescontoItemVO faixaDescontoItemVO = null;
            //flag que indicará se será realizada a gravação dos dados informados ou nao
            boolean grava = true;

            //busca o prazo medio que pode ser dado na consulta
            int prazoMedio = serviceDadosProduto.buscarPrazoMedioPorConsulta(consulta.getConSequencial());
            consulta.setConPrazoMedio(prazoMedio);
            //busca o valor de desconto maximo permitido para o item
            valorDesconto = serviceDadosProduto.buscarValorDesconto(consulta.getConPrazoMedio(), consulta.getConSequencial(), itensAbaConsultaVO.getProdCodgInterno(),funcionario.getFuncUsuario() );
            //busca o valor maximo de desconto permitido ao usuario
            descontoUsuario = serviceDadosProduto.buscarDescontoUsuarioPorEmpresa(funcionario.getEmpCodg());
            //busca a faixa de desconto, onde recebe-se o percentual e o tipo
            faixaDescontoItemVO = serviceDadosProduto.buscarFaixaDescontoItem(consulta,
                    itensAbaConsultaVO.getProdCodgInterno(), funcionario.getEmpCodg());

            //verifica se é permitido ao usuario dar descontos
            if (descontoUsuario.equalsIgnoreCase("S")) {
                if (itensAbaConsultaVO.getQuantidadePromocaoView() == null) itensAbaConsultaVO.setQuantidadePromocaoView(BigDecimal.ZERO);
                //verifica se quantidade em promoção é maior que zero
                if (itensAbaConsultaVO.getQuantidadePromocaoView().compareTo(BigDecimal.ZERO) > 0) {
                    Object msg = "Desconto bloqueado devido existir promoção para o item!";
                    JOptionPane.showMessageDialog(owner, msg, "Aviso", JOptionPane.WARNING_MESSAGE);
                    grava = false;
                } else {
                    //verifica se o valor de desconto informado é maior que o permitido
                    if (!(valorDescontoReais.compareTo(valorDesconto) <= 0)) {
                        Object msg = "O desconto informado é maior que o limite permitido!";
                        JOptionPane.showMessageDialog(owner, msg, "Aviso", JOptionPane.WARNING_MESSAGE);
                        grava = false;
                    }
                }
            }

            if (faixaDescontoItemVO != null) {
                //verifica se retorna 'N', ou seja, a empresa possui uma lista de
                //desconto, mas o produto nao possui uma faixa de desconto definida.
                if (faixaDescontoItemVO.getTipoDesconto().equalsIgnoreCase("N")) {
                    Object msg = "O produto não possui Faixa de Desconto para cobrir o prazo médio informado na Consulta!";
                    JOptionPane.showMessageDialog(owner, msg, "Aviso", JOptionPane.WARNING_MESSAGE);
                    grava = false;
                //verifica se retorna 'C', ou seja, o produto tem faixa de desconto
                //definido pela classificação do fornecedor.
                } else if (faixaDescontoItemVO.getTipoDesconto().equalsIgnoreCase("C")) {
                    BigDecimal porcentagemCalc = valorDescontoReais.multiply(new BigDecimal(100)).divide(itensAbaConsultaVO.getValorView(), 2, RoundingMode.HALF_UP);
                    if ((porcentagemCalc.compareTo(faixaDescontoItemVO.getPercentDesconto()) != 0 ) &&
                            porcentagemCalc.compareTo(BigDecimal.ZERO) != 0) {
                        Object msg = "O percentual de desconto informado está diferente ao permitido pela faixa de desconto da lista de preços (Desconto pela Classificação)!";
                        JOptionPane.showMessageDialog(owner, msg, "Aviso", JOptionPane.WARNING_MESSAGE);
                        grava = false;
                    }
                //verifica se retorna 'L', ou seja, o produto tem faixa de desconto
                //definido pela lista de preço.
                } else if (faixaDescontoItemVO.getTipoDesconto().equalsIgnoreCase("L")){
                    BigDecimal porcentagemCalc = valorDescontoReais.multiply(new BigDecimal(100)).divide(itensAbaConsultaVO.getValorView(), 2, RoundingMode.HALF_UP);
                    //verifica se o desconto dado é maior que o permitido
                    if (porcentagemCalc.compareTo(faixaDescontoItemVO.getPercentDesconto()) > 0) {
                        Object msg = "O percentual de desconto informado está superior ao permitido pela faixa de desconto da lista de preços!";
                        JOptionPane.showMessageDialog(owner, msg, "Aviso", JOptionPane.WARNING_MESSAGE);
                        grava = false;
                    }
                } else if (faixaDescontoItemVO.getTipoDesconto() != null) {
                    Object msg = "O tipo de desconto informado é invalido!";
                    JOptionPane.showMessageDialog(owner, msg, "Aviso", JOptionPane.WARNING_MESSAGE);
                    grava = false;
                }
            }

            if (grava) {
                itensAbaConsultaVO.setConValrDesconto(valorDescontoReais);
                atualizarDesconto(itensAbaConsultaVO);
            } else {
                decimalFieldAtual.setValue(equivalenteVODecimalField);
            }
        }
    }
rodrigoy
while (documento.getSupplier().iterator().hasNext()) {
			documento.getSupplier().iterator().next().estabeleceDependencias();
		}

Pergunta da programadora: Por que não sai do loop?

Leozin

eu já ví coisas assim:

public class XXX {

  public void YYY() { 
     // blablabla
  }

  // outro código...

  // No inicio ou no final da classe tinha sempre algo assim:

  /*
     Ez:1:7: E os seus pés eram pés direitos; e as plantas dos seus pés como a planta do pé de uma bezerra, e luziam como a cor de cobre polido
  */  

   //e assim por diante

  /*
     "Melhor é serem dois do que um, porque têm melhor paga do seu trabalho.
      Porque se um cair, o outro levanta o seu companheiro; mas ai do que estiver só; pois, caindo, não haverá outro que o levante.
      Também, se dois dormirem juntos, eles se aquentarão; mas um só, como se aquentará?
      E, se alguém prevalecer contra um, os dois lhe resistirão; e o cordão de três dobras não se quebra tão depressa".     
     Eclesiastes 4:9-12
  */  
}

Alguém já se deparou com códigos assim?!

danieldestro

Amém!

ramilani12

Leozin:


Alguém já se deparou com códigos assim?!

Já deparei com coisas do tipo:

Não mexa aqui senão vai dar um PAU!!!

Leozin

já ví também assim:

// Não sei porque, mas o cast não funciona
ou
// Funciona de vez em quando
ou
// Pense duas vezes antes de mexer aqui

um amigo meu viu um assim

// aqui começa o buraco do tatu
public void criptografar( String alvo ) throws Exception {
  // código maluco de criptografia do capeta
}

// fim do buraco do tatu

heuiaheuoiaiehiauheiaheiua, o código de criptografia devia ser assustador mesmo, não que seja código tosco, mas a complexidade que o cara fez deve ser de outro mundo HUIEhoeiuaheuia

danieldestro
Tabela: NEGOCIO
Campos:
  ID - NUMBER(10) NOT NULL
  DESC - VARCHAR2(100) 
  ... outros campos
  ID_NEGOCIO_PAI - NUMBER(10)  -> campo de auto-relacionamento não obrigatório
Classe (Entidade):
public class Negocio implements Serializable {
  private long id;
  private String desc;
  // ... outros atributos
  private long idNegocioPai;

  // getter e setters
}

Como o cara garante NULL com um campo usando long (primitivo)???

ramilani12

Ai cara testa se eh igual a null caso seja atribui 0 ou -1 … :slight_smile:

albertongai
Leozin:
já ví também assim:

um amigo meu viu um assim

// aqui começa o buraco do tatu
public void criptografar( String alvo ) throws Exception {
  // código maluco de criptografia do capeta
}

// fim do buraco do tatu

heuiaheuoiaiehiauheiaheiua, o código de criptografia devia ser assustador mesmo, não que seja código tosco, mas a complexidade que o cara fez deve ser de outro mundo HUIEhoeiuaheuia

caraca velho rachei o bico aqui! hahahaha.. quando eu tiver alguma pérola eu posto.

danieldestro

ramilani12:
danieldestro:


Como o cara garante NULL com um campo usando long (primitivo)???

Ai cara testa se eh igual a null caso seja atribui 0 ou -1 … :slight_smile:

ZERO não é NULL… o BD vai procurar por algum registro com ID=0 (ou -1) e vai dar pau de integridade referêncial. BOOOM!

ramilani12

danieldestro:
ramilani12:
danieldestro:


Como o cara garante NULL com um campo usando long (primitivo)???

Ai cara testa se eh igual a null caso seja atribui 0 ou -1 … :slight_smile:

ZERO não é NULL… o BD vai procurar por algum registro com ID=0 (ou -1) e vai dar pau de integridade referêncial. BOOOM!


.
Tipo no momento de recuperar o campo do Banco de Dados , mesmo assim ao tentar recuperar ele ira atribuir 0 caso campo no B.D esteja null.
Obvio que ao tentar inserir a integridade dos dados vai pro lixo.

danieldestro

LOGO… :wink:

spycall

Acabei de pegar esse, e o pior, FUI EU QUE FIZ.

listCompany.removeAll(list); listCompany.addAll(list);
Acho que eu estava bêbado.

victorwss

Hehe, já aconteceu comigo. Você olha para o código e pergunta “Quem foi o babaca que escreveu esse lixo?”. Mas, poucos segundos depois você descobre que foi você mesmo o babaca que escreveu aquele lixo.

peczenyj

spycall:
Acabei de pegar esse, e o pior, FUI EU QUE FIZ.

listCompany.removeAll(list); listCompany.addAll(list);
Acho que eu estava bêbado.

Um refresh? Q legal!!

danieldestro

Patterns bem aplicados:

enviaEmailDAO.enviar( to, from, subject, text );
E

Acho que ainda estou para ver algo tão genial quando a comparar no método “equals” um objeto de um tipo com outro completamente diferente… e esperar que isso funcione…

MinhaEntidade aux = new MinhaEntidade(); // seta a entidade com os valores... if (!aux.equals("")) { //WTF?? test.add(aux); }

Talvez o cara estava querendo testar se a entidade estava vazia?! vai saber!
O melhor é que o nome das variáveis estava exatamente desse jeito aux e test… ao ver esse código não deu nem vontade de rir … deu vontade de chorar…

danieldestro

Adoro este tipo de redundância… será que o cara quis garantir que o valor foi REALMENTE BEM transformado?

retorno.setDataVigencia( DateUtil.parseData( DateUtil.formataData( DateUtil.parseData(retorno.getDataVigenciaFormatada()) ) ) );

O que um caboclo deste pensa?

peerless

essa acabei de pegar.. hehe

if (codigo == null) {
faz uma coisa
faz outra coisa
}

SIM, EXATAMENTE NA LINHA DE BAIXO.

if (codigo == null) {
faz outra outra coisa
}

A variavel código deve pensar.. "mas que cara chato! não sou null, porra!"

aheuaheuhuea

albertongai

peguei uma pérola não no código mas sim no comentário

list.add(resumoROAvisoSinistroDTO);
//list = sumResumoRO(list, resumoROAvisoSinistroDTO); ROGER Esse cara não faz sentido para mim

bem louco! haha… dá vontade de colocar mais uma linha, no estilo “Não faz sentindo pra mim também…”

hahaha…

rodrigoy

[quote=danieldestro]Patterns bem aplicados:

enviaEmailDAO.enviar( to, from, subject, text );

Se o cara só tem martelo na mão, tudo que ele vê na frente é prego…

A mentalidade dele é: “se não é uma tela ou é um DTO ou é um DAO”

danieldestro

Daniel: Cara, porque você fez um DAO para mandar e-mail?
Criatura: Porque ele acessa o BD para enviar o e-mail (via UTL do Oracle).
Daniel: Não faz sentido ser um DAO.
Criatura: Mas ele acessa o BD.
Daniel: Nem tudo o que acessa o BD é necessariamente um DAO. E outra, porque não fazer via Java. Com o BD você está colocando mais uma etapa, o que pode causar mais suscetibilidade a falhas.
Criatura: Ok, vou mudar.

rodrigoy

Daniel… vc não explicou direito pra ele… ele vai criar um DTO agora… :?

danieldestro

Olá Daniel, qual o seu nome?

verificarAlteracaoForm(document.forms['manterInfoGeraisProdutoForm'].name)
danieldestro

Porque será que as consultas ficam lentas???

if ( query.getResultList().size() > 0 ) { return (AlgumaEntidade) query.getResultList().get(0); }

victorwss

Não tenho o código original de uma tosqueira que vi a um tempo, mas era mais ou menos isso:

String sql1 = "SELECT CAMPO1 FROM TABELA";
String sql2 = "SELECT CAMPO2 FROM TABELA";
String sql3 = "SELECT CAMPO3 FROM TABELA";

Vector vector = new Vector(); // O cara nunca tinha ouvido falar em generics.
QualquerCoisaVO vo;

PreparedStatement ps1 = conexao.prepareStatement(sql1);
ResultSet rs1 = ps1.executeQuery();

while (rs1.next()) {
    vector.add(new QualquerCoisaVO());
}

PreparedStatement ps2 = conexao.prepareStatement(sql1);
ResultSet rs2 = ps2.executeQuery();

for (int i = 0; i < vector.size(); i++) {
    rs2.next();
    vector.get(i).setCampo1(rs2.getString(1));
}

PreparedStatement ps3 = conexao.prepareStatement(sql2);
ResultSet rs3 = ps3.executeQuery();

for (int i = 0; i < vector.size(); i++) {
    rs3.next();
    vector.get(i).setCampo2(rs3.getString(1));
}

PreparedStatement ps4 = conexao.prepareStatement(sql3);
ResultSet rs4 = ps4.executeQuery();

for (int i = 0; i < vector.size(); i++) {
    rs4.next();
    vector.get(i).setCampo3(rs4.getString(1));
}

return vector;
S
danieldestro:
Quando o programador estudou no Mobral:
package um.pacote.esception;

public class ... {}

Hehehehe

Por aqui, já vi o método montaCabecario().

thegoergen
Schuenemann:
danieldestro:
Quando o programador estudou no Mobral:
package um.pacote.esception;

public class ... {}

Hehehehe

Por aqui, já vi o método montaCabecario().

ESCEPTION ?!?!? montaCabecario?!?! Mas que #%$#%$#%#!

Por aqui eu já vi uma variável isReimpresao e impresaoNota... Inclusive nos comentários...

P

Thiagosc:
giulianocosta:
hhehehe…

Essa é classica:

if(isAlgumaCoisa == true){

//sfkljsdklfjklsdfkl

}</blockquote>

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.

Concordo, eu não acho que isso seja um erro de código ou erro lógico. Acredito que é até proveitoso usar isso, pois ao menos pra mim, todas essas besteirinhas como essa tem alguma utilidade. E sinceramente, muitas dessas besteirinhas deixam o código mais lógico e legivel.

thegoergen

Sergio Figueras:
Thiagosc:
giulianocosta:
hhehehe…

Essa é classica:

if(isAlgumaCoisa == true){

//sfkljsdklfjklsdfkl

}</blockquote>

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.

Concordo, eu não acho que isso seja um erro de código ou erro lógico. Acredito que é até proveitoso usar isso, pois ao menos pra mim, todas essas besteirinhas como essa tem alguma utilidade. E sinceramente, muitas dessas besteirinhas deixam o código mais lógico e legivel.

Não acho isso proveitoso… Se a variável já é booleana, essa parte é desnecessária… acho mais legível sem comparar com true

ramilani12

Garantido que os parametros nunca se repetirão:

for(ResultadosIndicadores resultado : resultados)
        	{
        		StringBuilder sqlQuery = new StringBuilder();
				sqlQuery.append( ""  )
				.append(" update                     ")
				.append(" tabela ")
				.append(" set atingido = ?,          ")
				.append(" comentario_indicador = ?,  ")
				.append(" user= ?,           ")
				.append(" resultado = ?    ")
				.append(" where                      ")
				.append("  id = ?          ")
				.append(" and mes = ?                ");
				
				PreparedStatement pstmt = con.prepareStatement(sqlQuery.toString());
                   }
....

E alem do mais a cada iteração ele cria novamente um StringBuilder e um PreparedStatement
Era so chamar a cada iteracao pstmt.clearParameters();

StringBuilder sqlQuery = new StringBuilder();
			sqlQuery.append( ""  )
			.append(" update                     ")
			.append(" tabela ")
			.append(" set atingido = ?,          ")
			.append(" comentario= ?,  ")
			.append(" user  = ?,           ")
			.append(" resultado= ?    ")
			.append(" where                      ")
			.append("  id = ?          ")
			.append(" and mes = ?                ");
			PreparedStatement pstmt = con.prepareStatement(sqlQuery.toString());

                         for(ResultadosIndicadores resultado : resultados)
        	        {  pstmt.clearParameters(); ...  }
D

Eu achava que não existia um tipo de coisa assim, mas na empresa pra qual eu presto serviço é possivel!

if ( 1 == 1)
{
//Favor não retirar este if
}
victorwss

DaviPiala:
Eu achava que não existia um tipo de coisa assim, mas na empresa pra qual eu presto serviço é possivel!

if ( 1 == 1) { //Favor não retirar este if }

O que acontece se você retirar o if?

D

Haha sei lah!

Os caras tavam pensando pq que o individuo fez isso, ninguem se arriscou a tirar!

Vai ver o cara devia estar com algum problema em produção, fazendo algum debug e olhando a log.

thegoergen

DaviPiala:
Eu achava que não existia um tipo de coisa assim, mas na empresa pra qual eu presto serviço é possivel!

if ( 1 == 1) { //Favor não retirar este if }

Isso existe por aqui às vezes também… Mas geralmente o comentário é melhor, do tipo: “Por enquanto deixa assim, precisamos definir melhor…”.

cassio

Para mim parece ser algo relacionada ao cúmulo da preguiça. O camarada sabe que o certo é que aquele bloco de código somente seja executado quando uma dada condiçào for verdadeira. O problema é que por enquanto o cara não sabe que condição é essa. Logo, ele já deixa o if ali, “no jeito”. Quando ele descobrir o que falta lá, é só “preencher”. Afinal, provavelmente eles escreve classes gigantescas, com métodos de centenas de linhas e, caso não deixe o if pronto ali, vai ser um problema lembrar onde o mesmo deveria ser colocado depois… :stuck_out_tongue:

jingle

thegoergen:
DaviPiala:
Eu achava que não existia um tipo de coisa assim, mas na empresa pra qual eu presto serviço é possivel!

if ( 1 == 1) { //Favor não retirar este if }

Isso existe por aqui às vezes também… Mas geralmente o comentário é melhor, do tipo: “Por enquanto deixa assim, precisamos definir melhor…”.

Aqui também tem algo muito parecido do tipo

if ( 1 != 1)//Retirado por ordem de bla bla bla fica assim até segunda ordem.
{

}
jingle

Achei uma aqui que È SHOOOOOW alguém me diga que que o programador tinha na cabeça?

Exception e = null;
            if (rs.next()) {
                do {
                        //Faz o que deve fazer quando tem resultado a query
                        //...
                    }
                } while (rs.next());

                if (teste qualquer com o resultado acima) {
                    e = new Exception("Erro");
                }
            }

            if (e != null) {
                throw e;
            }

HAUShaushuashua essa foi de mata =]

thegoergen

jingle:
Achei uma aqui que È SHOOOOOW alguém me diga que que o programador tinha na cabeça?

Exception e = null;
            if (rs.next()) {
                do {
                        //Faz o que deve fazer quando tem resultado a query
                        //...
                    }
                } while (rs.next());

                if (teste qualquer com o resultado acima) {
                    e = new Exception("Erro");
                }
            }

            if (e != null) {
                throw e;
            }

HAUShaushuashua essa foi de mata =]

O DO-WHILE é fácil de entender: O cara aprendeu a usar o DO-WILE e resolveu aplicar, daí ele pensou: Meu Deus! Mas eu preciso de algum valor inicial do ResultSet, já sei! Vou primeiro dar um if (rs.next)…".

huahauhaau

A Exception é algo inexplicável… huahauhau

Jeanioz

DaviPiala:
Eu achava que não existia um tipo de coisa assim, mas na empresa pra qual eu presto serviço é possivel!

if ( 1 == 1) { //Favor não retirar este if }

Deve ser alguma simpatia… :lol:

Marck

eheh

Isso no Genexus é um if performático!
:twisted:

vanzella

DaviPiala:
Eu achava que não existia um tipo de coisa assim, mas na empresa pra qual eu presto serviço é possivel!

if ( 1 == 1) { //Favor não retirar este if }

Cara já vi esse tipo de situação, um pouco diferente usando uma function

validarValor()
{
//Favor não retirar este if, pelo amor de Deus, acredite, hehe.
}

E por pior que pareça não pode ser removido.
A situação em que eu encontrei foi em um jsp, em um codigo javascript, tinha um certo reaproveitamento, onde esse método era invocado por um formulario filho, o que acontecia era que esse método era inutil dependendo do pai, mas teria que existir para não dar erro de javascript.

Jeanioz

vanzella:
DaviPiala:
Eu achava que não existia um tipo de coisa assim, mas na empresa pra qual eu presto serviço é possivel!

if ( 1 == 1) { //Favor não retirar este if }

Cara já vi esse tipo de situação, e por pior que pareça não pode ser removido.
A situação em que eu encontrei foi em um jsp, em um codigo javascript, tinha um certo reaproveitamento, onde esse método era invocado por um formulario filho, o que acontecia era que esse método era inutil, mas teria que existir para não dar erro de javascript.

Isso também já aconteceu comigo.

O javascript é possuido por forças ocultas além da nossa imaginação. :lol:

T

Esse “if (1 == 1) { … }” equivale semanticamente a:
“{ … }” (e o compilador sabe muito bem que “1 == 1”; se não for o javac, que é extremamente burro (nem sei se ele faz corretamente constant folding ou eliminação de “if (false)”), pelo menos o just-in-time compiler do Java vai saber disso na hora de executar o programa.

Digamos que alguém declare alguma variável local dentro dessas chaves, ou então ela tenha um label. Nessas condições você não pode simplesmente remover o “if” E as chaves; mas você pode remover o if, ou seja, você poderia deixar como

{
// favor ...
}
vanzella

Bom descompilando o codigo, o if não aparece, a não ser que tenha algo util na condição, então gurizada, liberou geral :smiley:

B

thingol:
Esse “if (1 == 1) { … }” equivale semanticamente a:
“{ … }” (e o compilador sabe muito bem que “1 == 1”; se não for o javac, que é extremamente burro (nem sei se ele faz corretamente constant folding ou eliminação de “if (false)”), pelo menos o just-in-time compiler do Java vai saber disso na hora de executar o programa.

Digamos que alguém declare alguma variável local dentro dessas chaves, ou então ela tenha um label. Nessas condições você não pode simplesmente remover o “if” E as chaves; mas você pode remover o if, ou seja, você poderia deixar como

{ // favor ... }

Que tal somente:

// favor ...
Dark_Optimus_Prime

Essa é em pl/sql mas vale para ilustrar

Notem o exception :D :D :D :D
begin
      ....
      -- limpando registros anteriores
      delete tm_gps
      where  cod_grupo       = p_cod_grupo
      and    cod_empresa     = p_cod_empresa
      and    data_ref_gps    = v_data_fim;

      -- gravando os registros apurados para codigos diferentes de 2100
      open c_notas;
      fetch c_notas into v_notas;
      while c_notas %found loop

         if v_notas.cod_retencao_ret = '2100' then
            v_vlr_imposto  := v_vlr_imposto  + v_notas.vr_imposto;
            v_vlr_basecalc := v_vlr_basecalc + v_notas.basecalculo;

         else   
            if v_notas.vr_imposto > 29 then
                  begin
                  ...
                  exception
                        when dup_val_on_index then
                              update tm_gps
                                 set valor_inss_gps  = v_notas.vr_imposto,
                                     base_calc_gps   = v_notas.basecalculo,
                                     data_venc_gps   = v_data_venc,
                                     cod_cei         = v_notas.cod_cei
                               where cod_grupo       = v_notas.cod_grupo
                                 and cod_empresa     = v_notas.cod_empresa
                                 and cnpj_fornecedor = v_notas.cnpj_ret
                                 and cod_retencao    = v_notas.cod_retencao_ret
                                 and data_ref_gps    = v_data_fim;
                              commit;
                  end;
            end if;
         end if;

         fetch c_notas into v_notas;
      end loop;
      close c_notas;
danieldestro

Dark Optimus Prime:
Essa é em pl/sql mas vale para ilustrar
Notem o exception

Não entendi qual o problema!?!?!?!?

danieldestro

"Mióris" práticas:

private boolean validarCaracteresNumeroLogico(String numero) {
  String charValidos = "ABCDEFGHIJKLMNOPQRSTUVXZWY0123456789";
  for (int i = 0; i < numero.length(); i++) {
    if (charValidos.indexOf(numero.substring(i, i + 1)) < 0) {
      return false;
    }
  }
  return true;
}

Ai resolvi fazer um teste para averiguar o tempo de execução deste código e de maneiras mais eficazes de se fazer a mesma coisa. Olha que diferença faz você escrever bem um código:

package teste;

public class Teste {

	public static void main(String[] args) {

		Teste t = new Teste();
		String num = "";
		final int size = 1000;
		
		long t0 = System.currentTimeMillis();
		
		for(int i=0; i<size; i++) {
			num += i;
			t.validarCaracteresNumeroLogico(num);
		}
		
		long t1 = System.currentTimeMillis();
		
		num = "";
		for(int i=0; i><size; i++) {
			num += i;
			t.validarCaracteresNumeroLogico2(num);
		}
		
		long t2 = System.currentTimeMillis();
		
		num = "";
		for(int i=0; i><size; i++) {
			num += i;
			t.validarCaracteresNumeroLogico3(num);
		}
		
		long t3 = System.currentTimeMillis();

		System.out.println("T1: " + (t1-t0));
		System.out.println("T2: " + (t2-t1));
		System.out.println("T3: " + (t3-t2));

	}

	private boolean validarCaracteresNumeroLogico(String numero) {
		String charValidos = "ABCDEFGHIJKLMNOPQRSTUVXZWY0123456789";
		for (int i = 0; i >< numero.length(); i++) {
			if (charValidos.indexOf(numero.substring(i, i + 1)) < 0) {
				return false;
			}
		}
		return true;
	}

	private boolean validarCaracteresNumeroLogico2(String numero) {
		String charValidos = "ABCDEFGHIJKLMNOPQRSTUVXZWY0123456789";
		for (int i = 0; i < numero.length(); i++) {
			if (charValidos.indexOf(numero.charAt(i)) < 0) {
				return false;
			}
		}
		return true;
	}

	private boolean validarCaracteresNumeroLogico3(String numero) {
		return numero.matches("[A-Z0-9]+");
	}
}

Resultado:

T1: 266 T2: 172 T3: 156

Ou seja, a solução 3 rodou em quase metade do tempo da solução 1 (ruim). Só o fato de ter mudado um método na solução 2 ajudou a cair e muito o tempo de processamento com relação à solução 1.

peczenyj

Beleza, eu executei e tive esses resultados:
T1: 740
T2: 479
T3: 27191

Depois eu alterei a REGEX para ^\w+$, ou seja, do começo ao fim deve ser pelo menos 1 caracter alfa numérico, usando a flag de case insensitive

public static Pattern charValidos = Pattern.compile("^\w+$",Pattern.CASE_INSENSITIVE); (...) private boolean validarCaracteresNumeroLogico3(String numero) { return Pattern.compile("^\w+$",Pattern.CASE_INSENSITIVE).matcher(numero).matches(); } private boolean validarCaracteresNumeroLogico4(String numero) { return charValidos.matcher(numero).matches(); }

Resultado:
T1: 731
T2: 477
T3: 268 # sem cache do pattern
T4: 271 # com cache do pattern

Ou seja, a pesquisa por lista de caracteres é lenta, mas usar metacaracteres mais inteligente fica bem legal :slight_smile:

danieldestro

peczenyj:
Beleza, eu executei e tive esses resultados:
T1: 740
T2: 479
T3: 27191

Esse foi o teu T3 mesmo???

peczenyj

Foi o T3 original, usando [A-Z0-9]+

victorwss
private boolean validarCaracteresNumeroLogico5(String numero) {
        for (int i = 0; i < numero.length(); i++) {
            char c = numero.charAt(i);
            if ((c >= 'A' && c <= 'Z') || (c >= '0' && c <= '9')) continue;
            return false;
        }
        return true;
    }

Quanto é que dá o benchmarking disso? É mais rápido que regex ou não?

danieldestro

Tem certeza, peczenyj???

package teste;

import java.util.regex.Pattern;

public class Teste {

    public static void main(String[] args) {

        Teste t = new Teste();
        String num = "";
        final int size = 1000;

        long t0 = System.currentTimeMillis();

        for (int i = 0; i < size; i++) {
            num += i;
            t.validarCaracteresNumeroLogico(num);
        }

        long t1 = System.currentTimeMillis();

        num = "";
        for (int i = 0; i < size; i++) {
            num += i;
            t.validarCaracteresNumeroLogico2(num);
        }

        long t2 = System.currentTimeMillis();

        num = "";
        for (int i = 0; i < size; i++) {
            num += i;
            t.validarCaracteresNumeroLogico3(num);
        }

        long t3 = System.currentTimeMillis();

        num = "";
        for (int i = 0; i < size; i++) {
            num += i;
            t.validarCaracteresNumeroLogico4(num);
        }

        long t4 = System.currentTimeMillis();

        num = "";
        for (int i = 0; i < size; i++) {
            num += i;
            t.validarCaracteresNumeroLogico5(num);
        }

        long t5 = System.currentTimeMillis();

        num = "";
        for (int i = 0; i < size; i++) {
            num += i;
            t.validarCaracteresNumeroLogico6(num);
        }

        long t6 = System.currentTimeMillis();

        num = "";
        for (int i = 0; i < size; i++) {
            num += i;
            t.validarCaracteresNumeroLogico7(num);
        }

        long t7 = System.currentTimeMillis();

        num = "";
        for (int i = 0; i < size; i++) {
            num += i;
            t.validarCaracteresNumeroLogico8(num);
        }

        long t8 = System.currentTimeMillis();
                
        System.out.println("T1: " + (t1 - t0));
        System.out.println("T2: " + (t2 - t1));
        System.out.println("T3: " + (t3 - t2));
        System.out.println("T4: " + (t4 - t3));
        System.out.println("T5: " + (t5 - t4));
        System.out.println("T6: " + (t6 - t5));
        System.out.println("T7: " + (t7 - t6));
        System.out.println("T8: " + (t8 - t7));

    }

    private boolean validarCaracteresNumeroLogico(String numero) {
        String charValidos = "ABCDEFGHIJKLMNOPQRSTUVXZWY0123456789";
        for (int i = 0; i<numero.length();i++ ) {
            if (charValidos.indexOf(numero.substring(i, i + 1)) >< 0) {
                return false;
            }
        }
        return true;
    }

    private boolean validarCaracteresNumeroLogico2(String numero) {
        String charValidos = "ABCDEFGHIJKLMNOPQRSTUVXZWY0123456789";
        for (int i = 0; i < numero.length(); i++) {
            if (charValidos.indexOf(numero.charAt(i)) < 0) {
                return false;
            }
        }
        return true;
    }

    private boolean validarCaracteresNumeroLogico3(String numero) {
        return numero.matches("[A-Z0-9]+");
    }

    private boolean validarCaracteresNumeroLogico4(String numero) {
        return charValidosPattern2.matcher(numero).matches();
    }

    private boolean validarCaracteresNumeroLogico5(String numero) {
        return numero.matches("\w+");
    }

    private boolean validarCaracteresNumeroLogico6(String numero) {
        return Pattern.compile("^\w+$", Pattern.CASE_INSENSITIVE).matcher(numero).matches();
    }
    
    private boolean validarCaracteresNumeroLogico7(String numero) {
        return charValidosPattern.matcher(numero).matches();
    }

    private boolean validarCaracteresNumeroLogico8(String numero) {
        for (int i = 0; i < numero.length(); i++) {
            char c = numero.charAt(i);
            if ((c >= 'A' && c <= 'Z') || (c >= '0' && c <= '9')) {
                continue;
            }
            return false;
        }
        return true;
    }

    private static Pattern charValidosPattern =  Pattern.compile("^\w+$",Pattern.CASE_INSENSITIVE);
    private static Pattern charValidosPattern2 =  Pattern.compile("[A-Z0-9]+",Pattern.CASE_INSENSITIVE);

}

Novos resultados!!!

Windows XP - JDK 1.5.0_06

JDeveloper 10g:

T1: 281 T2: 172 T3: 156 T4: 188 T5: 78 T6: 78 T7: 62 T8: 16

Eclipse:

T1: 297 T2: 172 T3: 156 T4: 172 T5: 78 T6: 79 T7: 62 T8: 16

A solução do victorwss parace ser a mais rápida.

ramilani12

Rodei aqui na minha maquina: Windows XP SP2 jdk: java version “1.6.0_03”
Eclipse Europa:
T1: 219
T2: 156
T3: 125
T4: 109
T5: 94
T6: 63
T7: 93
T8: 0

peczenyj

quantas dessas funcionam se a palavra tiver um ‘Ç’ ?

victorwss
public class ClasseQualquer extends JFrame {

    ...

    // OLHA A GAMBIARRA:
    private class SetaFocoAForca extends Thread {
        private Component alvo;
        public SetaFocoAForca(Component alvo) {
            super();
            this.alvo = alvo;
            if (alvo != null) this.start();
        }

        public void run() {
            while (!ClasseQualquer.this.isVisible()) {
                try {
                    Thread.sleep(20);
                } catch (InterruptedException e) {
                    // Ignora.
                }
            }
            alvo.requestFocusInWindow();
        }
    }

    ...

}

Essa eu confesso. Eu sou o autor! Fui eu que fiz! Quando surge um problema dracônico e nada funciona, nada como uma gambiarrinha para fazer dar certo na marra, hehehe.

danieldestro

POG na veia.

E

Quanto à execução dos métodos acima comentados, na minha máquina os tempos ficam variando entre:

T1: 31
T2: 141
T3: 140
T4: 110
T5: 62
T6: 78
T7: 63
T8: 31


T1: 31
T2: 141
T3: 125
T4: 94
T5: 78
T6: 62
T7: 78
T8: 16

E

Agora…

T1: 16
T2: 156
T3: 110
T4: 109
T5: 78
T6: 63
T7: 62
T8: 16


T1: 16
T2: 156
T3: 109
T4: 110
T5: 78
T6: 62
T7: 63
T8: 31

O certo seria fazer uma análise matemática dos algoritmos, não?

danieldestro

Tá, mas qual o seu ambiente? (SO, JRE, IDE, RAM)…

Rafael_Nunes

T1: 16
T2: 141
T3: 109
T4: 94
T5: 62
T6: 63
T7: 62
T8: 16

=>
Pentium 4HT, 2GB RAM, WIndows XP Professional, JDK 1.6_06, Eclipse Europa

victorwss

Rafael Nunes:
T1: 16

??? Qual é o seu T1? Não é o original?

victorwss

(ops, postei errado)

peerless
List<Object> params = new ArrayList<Object>();
D

peerless:
Acabou de aprender Generics:

List<Object> params = new ArrayList<Object>();

KKK!!!

Leozin

peerless:
Acabou de aprender Generics:

List<Object> params = new ArrayList<Object>();

vai ver ele colocou isso pra parar de dar warning por generics hehe

victorwss

peerless:
Acabou de aprender Generics:

List<Object> params = new ArrayList<Object>();

Às vezes isso ocorre em código legado que está sendo migrado para java 5 ou superior.

peerless

victorwss:
peerless:
Acabou de aprender Generics:

List<Object> params = new ArrayList<Object>();

Às vezes isso ocorre em código legado que está sendo migrado para java 5 ou superior.

Pq?

PadrE

Olha uma amostra do que estou tendo que dar manutenção !!! =[

if ( d == 0 ){ obterResgistros( 0 ); }else{ obterRegistros( d ); }
Que raciocínio lógico perfeito esse hein !!!

if (u.getCodigo() == 14 ){ this.jbExcluir.setEnabled( true ); }else{ this.jbExcluir.setEnabled( false ); }

E agora a mudança:

obterResgistros( d ); this.jbExcluir.setEnabled( u.getCodigo() == 14 ); // 14 - Permissão

E ainda tem muito mais =[

Fui !

ramilani12

Caso objeto Empregado seja igual null garanti que ele sempre será -1 e outra saldo como String nao me cheira bem…

String saldo = "-1";
        try 
        {
            Empregado emp = Empregado.findByMatriculaCompetencia( matricula, competencia );
            if( emp != null ) 
            {
                saldo = String.valueOf( emp.getSaldo() );
            } else 
            {
                saldo = "-1";// ha necessidade disso?
            }
        } catch( Exception e ) 
        {
            e.printStackTrace();
        }
peerless
ramilani12:
Caso objeto Empregado seja igual null garanti que ele sempre será -1 e outra saldo como String nao me cheira bem...
String saldo = "-1";
        try 
        {
            Empregado emp = Empregado.findByMatriculaCompetencia( matricula, competencia );
            if( emp != null ) 
            {
                saldo = String.valueOf( emp.getSaldo() );
            } else 
            {
                saldo = "-1";// ha necessidade disso?
            }
        } catch( Exception e ) 
        {
            e.printStackTrace();
        }

No mínimo, nojento.

Não quero nem imaginar como é que eles lidam com conexões e banco de dados. hehe

ramilani12

Esse codigo é bem antigo peerless meados de 2000
Ate que gerenciamento de conexao com banco de dados é interessante implementaram um Pool de Conexoes

pinto

Acho que se esse tópico se chamasse “Códigos limpos e otimizados”, não teríamos tantos posts…

renatosilva

ruby.c, linha 372 :D:

Init_ext(); /* should be called here for some reason :-( */

Pra quem não acreditar: http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/branches/RUBY/ruby.c?revision=11708&view=markup

danieldestro

O cara quer ter certeza que a data é a correta:

EstagioTorPadraoVO estagioTorPadraoVO = pForm.getEstagioTorPadraoVONovo(); estagioTorPadraoVO.setDtInicioVigencia(pForm.getEstagioTorPadraoVONovo().getDtInicioVigencia());

Doação de um amigo que trabalha em Alphaville.

dudaskank

ramilani12:
Rodei aqui na minha maquina: Windows XP SP2 jdk: java version “1.6.0_03”
Eclipse Europa:
T1: 219
T2: 156
T3: 125
T4: 109
T5: 94
T6: 63
T7: 93
T8: 0

Aqui eu troquei algumas partes na marcação do tempo para ter mais precisão:

long t1 = System.nanoTime(); ... System.out.println("T1: " + (t1 / 1000000 - t0 / 1000000)); ...

Em um Windows XP SP3 jdk: java version “1.6.0_05” Eclipse Europa
Pentium 4 2.4 GHz com 1 GB RAM

T1: 238
T2: 165
T3: 207
T4: 176
T5: 136
T6: 127
T7: 118
T8: 16

danieldestro

hahahahah…

if( itemSegurado == null ) { msgErro = "Item segurado não encontrado: "; msgErro += itemSegurado.getNumero(); }

P

Porra Daniel, essa bateu o recorde.

kkkkkkkkkk.

Leozin

provavelmente o cara que fez isso deveria estar com a cabeça na lua…

ou deve ter visto as opções da petrobras cairem e ver que perdeu 75% do dinheiro investido em menos de 3 horas

danieldestro:
hahahahah…

if( itemSegurado == null ) { msgErro = "Item segurado não encontrado: "; msgErro += itemSegurado.getNumero(); }

ramilani12

danieldestro:
hahahahah…

if( itemSegurado == null ) { msgErro = "Item segurado não encontrado: "; msgErro += itemSegurado.getNumero(); }

Da para imaginar o seguinte,
Talvez essa era intenção:

Long id = 2;
ItemSegurado itemSegurado = dao.achaItem(id);

f( itemSegurado == null ) {
  msgErro = "Item segurado não encontrado: ";
  msgErro += id;
}
vanzella

Ihh parece que o dono apareceu, rsrs

T

Algo parecido com isto foi encontrado em um programa escrito em C++. (Não se preocupem, o programa equivalente é exatamente igual em Java).

switch (valor1) {
    case CASO1:
        codigo1();
        break;
    case CASO2:
        codigo1();
        break;
    case CASO3:
        codigo1();
        break;
    case CASO4:
        codigo1();
        break;
    case CASO5:
        codigo1();
        break;
    default:
        codigo1();
        break;
}

Ou seja, um “case” completamente inútil - eu abreviei o “codigo1”, que na verdade era bem mais extenso (umas três linhas de 80 caracteres cada uma), só para ficar mais fácil de vocês entenderem. Acho que o programador anterior devia ganhar por linha de código produzida :stuck_out_tongue:

O meu colega encontrou essa barbaridade e obviamente fez o seguinte:

// begin added code
   codigo1();
// end added code
/* // begin deleted code
// DANGER - UGLY CODE FOLLOWS BELOW - BEWARE - WARNING!!!
switch (valor1) {
    case CASO1:
        codigo1();
        break;
    case CASO2:
        codigo1();
        break;
    case CASO3:
        codigo1();
        break;
    case CASO4:
        codigo1();
        break;
    case CASO5:
        codigo1();
        break;
    default:
        codigo1();
        break;
}
*/ // end deleted code

Ou seja, deixou a prova do crime exposta para todo mundo ver e aprender o que não se deve fazer. Não limpou o sangue coisa nenhuma.

EDIT - como vocês viram, eu troquei o switch com o case - acho que foi algum mau fluido do programador original, que deveria cobrar por linha de código :frowning:

Leozin

thingol, vai que o cara foi malandro e, resolveu utilizar as métricas de cobrar por linha de código em vez de ponto de função ou whatever seja a droga que o cara usou

victorwss

Tem certeza que o cara usou switch no lugar do case e case no lugar do switch ou você só copiou errado?

T

É, realmente copiei errado. Vou editar :stuck_out_tongue:

fredbene

Ah não, essa eu tinha q por…

Usando equals com enum:

...
if(trabalho.getAcao().value().trim().equals( Acao.fromValue("Inativar").value() )){
....

E o enum utlizado…

public enum Acao {

    CRIAR("Criar"),
    INATIVAR("Inativar"),
    ATUALIZAR("Atualizar");
    private final String value;

    Acao(String v) {
        value = v;
    }

    public String value() {
        return value;
    }

    public static Acao fromValue(String v) {
        for (Acao c: Acao.values()) {
            if (c.value.equals(v)) {
                return c;
            }
        }
        return null;
    }
}

E pq não assim ?

if(trabalho.getAcao().equals( Acao.INATIVAR )){

ou 

if(trabalho.getAcao() ==  Acao.INATIVAR ){

Pra que complicar… Pra que utlizar mais recursos?

T

No the Daily WTF de hoje leiam o terceiro item - Find The Function!

Não é preciso que as pessoas em média saibam fazer contas, mas é interessante que pelo menos tentem, e não fiquem tão empacadas.

danieldestro

thingol:
No the Daily WTF de hoje leiam o terceiro item - Find The Function!

Não é preciso que as pessoas em média saibam fazer contas, mas é interessante que pelo menos tentem, e não fiquem tão empacadas.

Infelizmente essa é a realidade do mercado atualmente.

CarlosEduardoDantas

danieldestro:
O cara quer ter certeza que a data é a correta:

EstagioTorPadraoVO estagioTorPadraoVO = pForm.getEstagioTorPadraoVONovo(); estagioTorPadraoVO.setDtInicioVigencia(pForm.getEstagioTorPadraoVONovo().getDtInicioVigencia());

Doação de um amigo que trabalha em Alphaville.

kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk

a melhor!

danieldestro

O estagiário não entendia porque os valores eram substituidos ou não estavam como ele esperava.

for (int desc = 0; desc < 30; desc++) {
  if (rmiau03.getCodCaracteristica().get(desc) != 0L) {

    List<Long> listaLong = new ArrayList<Long>();
    for (int j = 0; j < 30; j++) {
      listaLong.add(0L);
    }

    pesquisa.setTbCodCaracteristica(listaLong);
    pesquisa.setTbCodValorCaracteristica(listaLong);

    pesquisa.getTbCodCaracteristica().add(desc, rmiau03.getCodCaracteristica().get(desc));
    pesquisa.getTbCodValorCaracteristica().add(desc, rmiau03.getCodValorCarac().get(desc));
  }
  tabs.add( pesquisa );
}
/* todos direitos reservados */

Descobri o porquê. Código certo abaixo:

pesquisa.setTbCodCaracteristica(new ArrayList<Long>());
pesquisa.setTbCodValorCaracteristica(new ArrayList<Long>());
for (int j = 0; j < 30; j++) {
  pesquisa.getTbCodCaracteristica().add(0L);
  pesquisa.getTbCodValorCaracteristica().add(0L);
}

for (int desc = 0; desc < 30; desc++) {
  if (rmiau03.getCodCaracteristica().get(desc) != 0L) {
    pesquisa.getTbCodCaracteristica().add(desc, rmiau03.getCodCaracteristica().get(desc));
    pesquisa.getTbCodValorCaracteristica().add(desc, rmiau03.getCodValorCarac().get(desc));
  }
}
/* todos direitos reservados */

O pior é que ele achava que no set ele colocaria duas listas diferentes nos atributos, como se fosse uma cópia ou clone. hehehehehe...

danieldestro
int size = 0;

if( codigo == 7L ) {
  lista.add( 9L );
} else {
  lista.add( codigo );
}

for( ... ) {
  if( alguma condiçao especial ) {
    lista.add( valorQueVeioDeAlgumLugar );
    size++;
  }
}

//retorna o tamanho da lista
return size;

Será que ele já ouviu falar de lista.size() ??? Fora que ele esqueceu de fazer um size++ logo no início (if/else).

jesusjc

plentz:
Thiagosc:
giulianocosta:
hhehehe…

Essa é classica:

if(isAlgumaCoisa == true){

//sfkljsdklfjklsdfkl

}</blockquote>

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.

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

Eu já vi sim!
O arquiteto do projeto garantiu que quando houvesse manutenção no código seria mais fácil o entendimento.
Mas o motivo real era quando alguém fosse ler e entender de cara o que se esperava.
Encontrar true ou false. Deixando-os explícitos.
E tive que trocar todos meus códigos por == true ou != false.

At++

Jeanioz

danieldestro:
... for( ... ) ...

O foreach deve ser ensinado DEPOIS do for normal. :lol:

victorwss

Neste caso, não seria melhor usar new ArrayList<Long>(60) ?

danieldestro

poderia, mas de qualquer forma ele prrcisava cria uma lista de 30 posicoes com valores zero.

danieldestro

Masterpiece / Obra-prima:

public static Timestamp obterTimestampPorDataDDMMYYYY(String stData) {
    SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
    String strDate;
    Timestamp dataTimestamp;

    try {
        if (new SimpleDateFormat("dd/MM/yyyy").format(sdf.parse(stData)).equals(stData)) {
            strDate = new SimpleDateFormat("dd-MM-yyyy 00:00:00").format(sdf.parse(stData));
            dataTimestamp = new Timestamp(new SimpleDateFormat("dd-MM-yyyy HH:mm:ss").parse(strDate).getTime());
        } else {
            dataTimestamp = null;
        }

    } catch (ParseException e) {
        dataTimestamp = null;
    } catch (Exception e) {
        dataTimestamp = null;
    }

    return dataTimestamp;
}
victorwss
danieldestro:
Masterpiece / Obra-prima:
public static Timestamp obterTimestampPorDataDDMMYYYY(String stData) {
    SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
    String strDate;
    Timestamp dataTimestamp;

    try {
        if (new SimpleDateFormat("dd/MM/yyyy").format(sdf.parse(stData)).equals(stData)) {
            strDate = new SimpleDateFormat("dd-MM-yyyy 00:00:00").format(sdf.parse(stData));
            dataTimestamp = new Timestamp(new SimpleDateFormat("dd-MM-yyyy HH:mm:ss").parse(strDate).getTime());
        } else {
            dataTimestamp = null;
        }

    } catch (ParseException e) {
        dataTimestamp = null;
    } catch (Exception e) {
        dataTimestamp = null;
    }

    return dataTimestamp;
}

Só faltou colocar o catch (Throwable e).

Imagino como é a "sobrecarga" desse método, obterTimestampPorDataDDMMYYYYHHMMSS, obterTimestampPorDataYYYYMMDD, obterTimestampPorDataYYYYMMDDHHMMSS,
obterDatePorDataDDMMYYYY...

danieldestro

O IF deste método foi SENSACIONAL!

B

O que o cara que fez isso tava fumando?

danieldestro

Esse select SQL não me cheira muito bem:

SELECT * FROM UMA_TABELA O WHERE O.CD_DOCTO=?1 AND ROWNUM<=1 ORDER BY O.DT_INICO_VIGEN_DOCTO DESC

Acredito que seria melhor usar um MAX na data.

ps: Roda o ORACLE.

victorwss

danieldestro:
Esse select SQL não me cheira muito bem:

SELECT * FROM UMA_TABELA O WHERE O.CD_DOCTO=?1 AND ROWNUM<=1 ORDER BY O.DT_INICO_VIGEN_DOCTO DESC

Acredito que seria melhor usar um MAX na data.

ps: Roda o ORACLE.

Bem, você tem que admitir que isso é melhor do que iterar todo o ResultSet para pegar apenas a última tupla. :lol:

S

Na verdade o problema não é o rownum <= 1. as vezes precisamos fazer isso em algum momento. Essa query não vai fazer o que ele provavelmente tem a intenção de fazer.

O order by ordena o resultado da query final, já que a query só retorna um registro não tem sentido em ordená-la.

Se faz muita confusão nesse sentido. A seguir um link legal sobre isso:

http://www.oracle.com/technology/oramag/oracle/06-sep/o56asktom.html

danieldestro

Ssalgado:
Na verdade o problema não é o rownum <= 1. as vezes precisamos fazer isso em algum momento. Essa query não vai fazer o que ele provavelmente tem a intenção de fazer.
O order by ordena o resultado da query final, já que a query só retorna um registro não tem sentido em ordená-la.

Exatamente!

victorwss, o Ssalgado tem razão. Por isso coloquei a query aqui.

victorwss

danieldestro:
Ssalgado:
Na verdade o problema não é o rownum <= 1. as vezes precisamos fazer isso em algum momento. Essa query não vai fazer o que ele provavelmente tem a intenção de fazer.
O order by ordena o resultado da query final, já que a query só retorna um registro não tem sentido em ordená-la.

Exatamente!

victorwss, o Ssalgado tem razão. Por isso coloquei a query aqui.

Realmente, nem prestei atenção direito nisso. :smiley:

Adolfo_Rodrigues

E por falar em if, peguei alguns assim num código:

if (a == b) { ...... ...... } else { //faz nada }
Um else com um comentário “faz nada”… muito bom :smiley:

danieldestro

hahahaah… deve ser daquele tipo de programador: “vai que um dia o programa precisa tratar a outra condição, ele já estará preparado”. kkkkk

Tem um proejto aqui que fui analisá-lo e vi que tinha um monte de DAOs vazios. Perguntei o porque e o cara respondeu: “Se um dia precisar criar as queries, já existe a classe”…

hahahahahahhahahaha

danieldestro

Quando se cria classes utilitárias, o legal seria não colocar um construtor público e deixar apenas métodos estáticos, vide a classe java.lang.Math.

Porém, quando você oferece isso ao programado, e ele não tem a menor idéia de como usar esta classe, ele faz algo assim:

DateUtil du = null; Date umaData = du.parse( umaDataString ); Date proximoDiaUtil = du.proximoDiaUtil( umaData );

Vamos corrigir o código e deixá-lo mais “bunitinhu”:

Date umaData = DateUtil.parse( umaDataString ); Date proximoDiaUtil = DateUtil.proximoDiaUtil( umaData );

luistiagos
DateUtil du = null;   
Date umaData = du.parse( umaDataString );

mas isto da NullPointer…

victorwss

luistiagos:
DateUtil du = null; Date umaData = du.parse( umaDataString );

mas isto da NullPointer…

Não se o método parse for estático.

danieldestro

Num desses casos de uso por aí:

Caso não seja recuperado nenhum registro nas tabelas TAB_A e TAB_B não emitir mensagem de erro e prosseguir com as demais consistências.

A fim de prosseguir com as demais consistências é necessário que sejam recuperados registros nas tabelas TAB_A e TAB_B. Caso não retorne os registros. As validações seguintes não poderão ser feitas.

Rafael_Nunes

Fora a redundância, por que diabos eles falam de tabelas no caso de uso?

danieldestro

Bom, sendo analistas de mainframe, sinto-me aliviado por eles não falarem de outras coisas.

T

vc não viu nada ainda destro ( risada maligna ) Tem os que NÃO SÃO analistas de mainframe que fazem coisas piores… huahuahua

Rafael_Nunes

Tecnoage:

vc não viu nada ainda destro ( risada maligna ) Tem os que NÃO SÃO analistas de mainframe que fazem coisas piores… huahuahua

Pois é, a minha pergunta é devido a meu conhecimento empírico da coisa…

cassio

danieldestro:
Num desses casos de uso por aí:

Caso não seja recuperado nenhum registro nas tabelas TAB_A e TAB_B não emitir mensagem de erro e prosseguir com as demais consistências.

A fim de prosseguir com as demais consistências é necessário que sejam recuperados registros nas tabelas TAB_A e TAB_B. Caso não retorne os registros. As validações seguintes não poderão ser feitas.

Entendi errado ou isso ai dá loop infinito? :stuck_out_tongue:
Parece aquelas mensagens de erro da bios de uns PCs velhos que eu já vi… “keyboard error, press F1 to continue…”

T

Rafael Nunes:
Tecnoage:

vc não viu nada ainda destro ( risada maligna ) Tem os que NÃO SÃO analistas de mainframe que fazem coisas piores… huahuahua

Pois é, a minha pergunta é devido a meu conhecimento empírico da coisa…

editado… tosquise…

Rafael_Nunes

Sei bem como é, no meu caso é um pouco diferente, são Analistas de Negócio, modelando um sistema que não tem nem menção a mainframe, e vez em quando sai em uns casos de uso: ‘Se a configuração na TABELA_PARAMETROS, for igual a X, então exibir a mensagem …, se a configuração na TABELA_PARAMETROS for igual a Y, então buscar quais as são as informações na TABELA_OUTROSPARAMETROS’

[editado] Agora minha mensagem é que ficou sem sentido sem ter a sua mensagem acima…hehe

T

huahuahua… pois é… eu ia mandar MP, mas apertei o bt errado “citar” huahua por isso o “editado… tosquice…” huahau

P

Essa é p/ rir:

Teve um dia na empresa onde trabalhava que o kra ficou um tempão debugando o código e ñ entendia pq a execução ñ entrava no if, ele chamou outro kra e os doi ficaram + um tempão tentando entender o pq o bendito código ñ entrava no if.

Final da história o código se parecia c/ isso:

if(isTrue()); //Faz alguma coisa

Perceberam o “;” no final do if…

ahuauhauahaua!! :stuck_out_tongue: :stuck_out_tongue: :stuck_out_tongue: :stuck_out_tongue:

danieldestro

Grito desesperado do programador:

  • Cara, pelo amor de Deus, me ajuda. O Entity Manager está sempre null. Não funciona! Porquê?

Eu:

  • Deixe-me ver - segundos depois - Ah tá!!!

AlgumEJBDAO dao = new AlgumEJBDAOBean(); dao.processarAlgoNoBancoDeDados();

danieldestro

Gosto de pessoas que tem certo “DOM” para dar nomes às coisas:

public class BaseExcecaoException ...
rodrigoy

danieldestro:

AlgumEJBDAO dao = new AlgumEJBDAOBean(); dao.processarAlgoNoBancoDeDados();

Geração espontânea ué…

pimenta

if(true){ total = total + 1; }

Isso foi o que eu vi um designer fazer pra tentar resolver um probleminha…
Alguém me responde se em algum momento esse if não será executado? aiuhaa

P

Olha só o código mais elegante do mundo que acabei de achar:

while (i < args.length) {
                if (args[i].equals("-o")) {
                    if (i > args.length - 2)
                        usage(false);
                    filename = args[i + 1];
                    i += 2;
                } else if (args[i].equals("-nogui")) {
                    showFrame = false;
                    i++;
                } else if (args[i].equals("-ipr")) {
                    sampler = "ipr";
                    i++;
                } else if (args[i].equals("-threads")) {
                    if (i > args.length - 2)
                        usage(false);
                    threads = Integer.parseInt(args[i + 1]);
                    i += 2;
                } else if (args[i].equals("-lopri")) {
                    lowPriority = true;
                    i++;
                } else if (args[i].equals("-hipri")) {
                    lowPriority = false;
                    i++;
                } else if (args[i].equals("-sampler")) {
                    if (i > args.length - 2)
                        usage(false);
                    sampler = args[i + 1];
                    i += 2;
                } else if (args[i].equals("-smallmesh")) {
                    TriangleMesh.setSmallTriangles(true);
                    i++;
                } else if (args[i].equals("-dumpkd")) {
                    KDTree.setDumpMode(true, "kdtree");
                    i++;
                } else if (args[i].equals("-buildonly")) {
                    noRender = true;
                    i++;
                } else if (args[i].equals("-showaa")) {
                    showAA = true;
                    i++;
                } else if (args[i].equals("-nogi")) {
                    noGI = true;
                    i++;
                } else if (args[i].equals("-nocaustics")) {
                    noCaustics = true;
                    i++;
                } else if (args[i].equals("-pathgi")) {
                    if (i > args.length - 2)
                        usage(false);
                    pathGI = Integer.parseInt(args[i + 1]);
                    i += 2;
                } else if (args[i].equals("-quick_ambocc")) {
                    if (i > args.length - 2)
                        usage(false);
                    float d = Float.parseFloat(args[i + 1]);
                    shaderOverride = new AmbientOcclusionShader(Color.WHITE, d);
                    i += 2;
                } else if (args[i].equals("-quick_uvs")) {
                    if (i > args.length - 1)
                        usage(false);
                    shaderOverride = new UVShader();
                    i++;
                } else if (args[i].equals("-quick_normals")) {
                    if (i > args.length - 1)
                        usage(false);
                    shaderOverride = new NormalShader();
                    i++;
                } else if (args[i].equals("-quick_id")) {
                    if (i > args.length - 1)
                        usage(false);
                    shaderOverride = new IDShader();
                    i++;
                } else if (args[i].equals("-quick_prims")) {
                    if (i > args.length - 1)
                        usage(false);
                    shaderOverride = new PrimIDShader();
                    i++;
                } else if (args[i].equals("-quick_gray")) {
                    if (i > args.length - 1)
                        usage(false);
                    shaderOverride = new QuickGrayShader();
                    i++;
                } else if (args[i].equals("-quick_wire")) {
                    if (i > args.length - 1)
                        usage(false);
                    shaderOverride = new WireframeShader();
                    i++;
                } else if (args[i].equals("-resolution")) {
                    if (i > args.length - 3)
                        usage(false);
                    resolutionW = Integer.parseInt(args[i + 1]);
                    resolutionH = Integer.parseInt(args[i + 2]);
                    i += 3;
                } else if (args[i].equals("-aa")) {
                    if (i > args.length - 3)
                        usage(false);
                    aaMin = Integer.parseInt(args[i + 1]);
                    aaMax = Integer.parseInt(args[i + 2]);
                    i += 3;
                } else if (args[i].equals("-bucket")) {
                    if (i > args.length - 3)
                        usage(false);
                    bucketSize = Integer.parseInt(args[i + 1]);
                    bucketOrder = args[i + 2];
                    i += 3;
                } else if (args[i].equals("-bake")) {
                    if (i > args.length - 2)
                        usage(false);
                    bakingName = args[i + 1];
                    i += 2;
                } else if (args[i].equals("-bakedir")) {
                    if (i > args.length - 2)
                        usage(false);
                    String baketype = args[i + 1];
                    if (baketype.equals("view"))
                        bakeViewdep = true;
                    else if (baketype.equals("ortho"))
                        bakeViewdep = false;
                    else
                        usage(false);
                    i += 2;
                } else if (args[i].equals("-filter")) {
                    if (i > args.length - 2)
                        usage(false);
                    filterType = args[i + 1];
                    i += 2;
                } else if (args[i].equals("-bench")) {
                    runBenchmark = true;
                    i++;
                } else if (args[i].equals("-rtbench")) {
                    runRTBenchmark = true;
                    i++;
                } else if (args[i].equals("-frame")) {
                    if (i > args.length - 2)
                        usage(false);
                    frameStart = frameStop = Integer.parseInt(args[i + 1]);
                    i += 2;
                } else if (args[i].equals("-anim")) {
                    if (i > args.length - 3)
                        usage(false);
                    frameStart = Integer.parseInt(args[i + 1]);
                    frameStop = Integer.parseInt(args[i + 2]);
                    i += 3;
                } else if (args[i].equals("-v")) {
                    if (i > args.length - 2)
                        usage(false);
                    UI.verbosity(Integer.parseInt(args[i + 1]));
                    i += 2;
                } else if (args[i].equals("-h") || args[i].equals("-help")) {
                    usage(true);
                } else {
                    if (input != null)
                        usage(false);
                    input = args[i];
                    i++;
                }
            }

157 linhas de Else if. Depois que voce termina de ler isso, estar tonto é a característica minima.

victorwss

Sergio Figueras:
Olha só o código mais elegante do mundo que acabei de achar:

{… 157 linhas de código.}

157 linhas de Else if. Depois que voce termina de ler isso, estar tonto é a característica minima.

Já vi uma vez um switch de pouco mais de 3000 linhas. Com direito a fallthrough, chamada recursiva e tudo mais. Com variáveis chamadas aaa, aab, aac, xxx (normalmente String ou Object). Basicamente era um servlet de uma aplicação horrível em JSP (que nada mais eram do que scriptlets gigantescos com alguns esparsos trechos de HTML). Aliás, um servlet não, era O servlet da aplicação.

A divisão de camadas e o MVC eram perfeitos: Esse método com o switch era o doGet (ou doPost, não me lembro ao certo), onde havia fragmentos de SQL, fragmentos de HTML, cálculos, manipulação de string e sabe-se mais o que. E devia haver pelo menos cinquenta atributos public static.

Ah sim, esse switch ficava dentro de um bloco try. E no final tinha algo mais ou menos assim:

} catch (Exception e) {
    e.printStackTrace();
}

Mas não era todo o código que ficava lá não. Aparecia chamadas deste tipo:

Object o = algumaCoisa.getOutraCoisa().getMaisOutraCoisa((String) parametro1, (Integer) parametro2).metodoMaluco((Object) algo(), maisAlgo(outroParametro - 13, (Object[]) outraCoisa(variavel), umMetodo()), qualquerCoisa + 27).outroMetodo(maisUmParametro);

Depois, eu soube como é que tal código foi concebido. Tinham entregue o sistema para dois estagiários que nunca tinham visto nada de java antes e apenas sabiam um pouquinho de pascal.

Infelizmente não possuo mais essa pérola. :frowning:

victorwss
/**
     * Método que retorna o Cliente/Fornecedor selecionado.
     * @return Cliente/Fornecedor.
     */
    public ClienteGeralVO getClienteFornecedorVO() {
        return clienteGeralVO;
    }

    /**
     * Método que atualiza o estado (habilitado/desabilitado) das abas
     */ 
    private void atualizarAbas() {
        if(getClienteFornecedorVO() != null) {
            
        } else {
            
        }
    }

    private ChangeListener tabbedPaneClienteChangeListener = new ChangeListener() {
        public void stateChanged(ChangeEvent e) {
            dispararActionCommand("AbaSelecionada");

            // Se a aba selecionada for a Geral habilita o botao de pesquisa...
            if(getSelectedTabbedIndex() == 0) {
                templatePrincipal.getButtonPesquisar().setEnabled(true);
            } else if(getSelectedTabbedIndex() == 12) {
                // Se a aba selecionada for a Semovente habilita o botao de pesquisa...
                templatePrincipal.getButtonPesquisar().setEnabled(true);
            } else if(getSelectedTabbedIndex() == 14) {
                // Se a aba selecionada for a Referencia Pessoal habilita o botao de pesquisa...
                templatePrincipal.getButtonPesquisar().setEnabled(true);
            } else {
                templatePrincipal.getButtonPesquisar().setEnabled(false);
            }
        }
    };
luistiagos

Como em java ainda não temos funções delegate como no C# e nem ponteiros para funções como C++ então uma vez tive q fazer um switch gigantesco para simular o funcionamento de um processador RISC…

alucardeck

pelo amor de deus…

olha oq eu acabei de encontrar num codigo fonte de um jogo em Java

if (true==true) { KeyBindingManager.getKeyBindingManager().set( "exit", KeyInput.KEY_ESCAPE ); }

ainda seria menos feio por somente (true)… aff

victorwss

alucardeck:
pelo amor de deus…

olha oq eu acabei de encontrar num codigo fonte de um jogo em Java

if (true==true) { KeyBindingManager.getKeyBindingManager().set( "exit", KeyInput.KEY_ESCAPE ); }

ainda seria menos feio por somente (true)… aff

Podia ser pior, tipo if (true==true || true==false).

danieldestro

No comments!

if( preco == null && preco > 100.0 ) { // ... }

danieldestro

Separação de camadas, MVC... são só conceitos:

// package e imports

public class AlgumaAction extends Action {
  public void execute( ... ) {
    UmDelegate delega = new UmDelegate();
    delega.processarAlgo( request );
    // ...
  }
}
// package e imports

public class UmDelegate {

  private SuperEJB ejb;

  public void processarAlgo( HttpServletRequest req ) {
    ejb.processarAlgo( req );
  }
}
// package e imports

public class SuperEJBBean implements SuperEJB, SuperEJBLocal {

  public void processarAlgo( HttpServletRequest req ) {
    String nome = req.getParameter("nome");
    String cpf = req.getParameter("cpf");
    // ... mais código desastroso aqui ...
  }
}
Mantu

O tópico tá grande demais, por isso não li tudo. Me desculpem se alguém já postou alguma pérola parecida com a seguinte:

...
setCodEmpresa(getCodEmpresa());
setNomeCliente(getNomeCliente());
...

E, não. Os getters e setters não faziam nada além do que setar e recuperar o valor dos campos da classe… :lol:

T

danieldestro:
No comments!

if( preco == null && preco > 100.0 ) { // ... }

Isso ocorre até nas melhores famílias. O FindBugs achou uns 4 ou 5 erros desse tipo no JDK, outros tantos no Tomcat etc.

victorwss
danieldestro:
Separação de camadas, MVC... são só conceitos:
// package e imports

public class AlgumaAction extends Action {
  public void execute( ... ) {
    UmDelegate delega = new UmDelegate();
    delega.processarAlgo( request );
    // ...
  }
}
// package e imports

public class UmDelegate {

  private SuperEJB ejb;

  public void processarAlgo( HttpServletRequest req ) {
    ejb.processarAlgo( req );
  }
}
// package e imports

public class SuperEJBBean implements SuperEJB, SuperEJBLocal {

  public void processarAlgo( HttpServletRequest req ) {
    String nome = req.getParameter("nome");
    String cpf = req.getParameter("cpf");
    // ... mais código desastroso aqui ...
  }
}

Huahuahua. Estou tendo que dar manutenção em um sistema com essas características (só que com swing). Há componentes swing misturados à regra de negócio.

Ataxexe

Hehe, eu também tive que fazer isso. O mais legal era que para instanciar uma transação com o mainframe eu precisava do JPanel da tela corrente.

O motivo era muito bom: eles ficavam pegando o componente pai até chegar ao JFrame da aplicação para poder pegar a sessão do usuário, que ficava guardada nele…

Acho que é por isso (e por outras loucuras) que lá todos dizem que Java é um lixo e só serve pra mostrar telas…

luistiagos

este é de um post do guj mesmo:

http://www.guj.com.br/posts/list/96141.java

danieldestro

Parabéns!!!

public class Ferramentas extends Date {
	public java.util.Date getStorageDate() {
		long millis = ((long) this.getTime() / 1000) * 1000;
		this.setTime(millis);
		return this;
	}

	public java.util.Date getSystemDate() {
		return this;
	}

		public static Ferramentas truncateToFirstDayOfMonth(Ferramentas data) {
			if (data == null) {
				return null;
			}
			Calendar calendario = new GregorianCalendar();
			calendario.setTime(data);
			calendario.set(Calendar.DAY_OF_MONTH, 1);
			return Ferramentas.truncateTime(new Ferramentas(calendario.getTime()));
		}

  //... mais código aqui
}
peerless
danieldestro:
Parabéns!!!
public class Ferramentas extends Date {
	public java.util.Date getStorageDate() {
		long millis = ((long) this.getTime() / 1000) * 1000;
		this.setTime(millis);
		return this;
	}

	public java.util.Date getSystemDate() {
		return this;
	}

		public static Ferramentas truncateToFirstDayOfMonth(Ferramentas data) {
			if (data == null) {
				return null;
			}
			Calendar calendario = new GregorianCalendar();
			calendario.setTime(data);
			calendario.set(Calendar.DAY_OF_MONTH, 1);
			return Ferramentas.truncateTime(new Ferramentas(calendario.getTime()));
		}

  //... mais código aqui
}

Daniel, as pessoas que codificaram isso aê, ainda estão na empresa?
O que você faz quando encontra isso? Re-escreve e depois notifica eles, avisa o gerente, avisa os estagiarios que fizeram isso?
Que tipo de empresa aceita isso?
Isso estava "funcionando" em produção?

Tah loco meu! :P

danieldestro

Modo de usar:

Date dtProcmIni = Ferramentas.truncateHour(new Ferramentas(dtProc));

É instantâneo…

danieldestro

peerless:
Daniel, as pessoas que codificaram isso aê, ainda estão na empresa?
O que você faz quando encontra isso? Re-escreve e depois notifica eles, avisa o gerente, avisa os estagiarios que fizeram isso?
Que tipo de empresa aceita isso?
Isso estava “funcionando” em produção?

Curiosamente eu sou da área de QA (qualidade).

P

Aquela história do “framework” pra programadores Cobol é o bicho, hein? Coisa pra se contar em volta da fogueira.

MODERADO: Por favor, evite palavrões.

Jeanioz

danieldestro:
peerless:
Daniel, as pessoas que codificaram isso aê, ainda estão na empresa?
O que você faz quando encontra isso? Re-escreve e depois notifica eles, avisa o gerente, avisa os estagiarios que fizeram isso?
Que tipo de empresa aceita isso?
Isso estava “funcionando” em produção?

Curiosamente eu sou da área de QA (qualidade).

Hahaha isso explica tudo.

Seu trabalho é divertido pacas, não? :wink:

danieldestro

Apesar de ser um trabalho bem sério, eu me divirto.

P

Jeanioz:
danieldestro:
peerless:
Daniel, as pessoas que codificaram isso aê, ainda estão na empresa?
O que você faz quando encontra isso? Re-escreve e depois notifica eles, avisa o gerente, avisa os estagiarios que fizeram isso?
Que tipo de empresa aceita isso?
Isso estava “funcionando” em produção?

Curiosamente eu sou da área de QA (qualidade) e analiso as entregas dos nossos fornecedores. Isso tudo vai em um relatório.

Hahaha isso explica tudo.

Seu trabalho é divertido pacas, não? :wink:

Ele não deve ter fé nenhuma na humanidade, com um trabalho desses…

richardpeder

O Daniel não tem fé nos programadores que fazem as barbaridades que ele vê…o resto da humanidade não tem culpa! :twisted: :lol:

ate mais…

Rubem_Azenha

danieldestro:

Curiosamente eu sou da área de QA (qualidade) e analiso as entregas dos nossos fornecedores. Isso tudo vai em um relatório.

Po, você passa o dia inteiro só olhando código fonte dos outros e martelando o dedo do cara que fez o código sem piedade alguma?

rod

Estou dando manutenção em um sistema que tem suas JSP's coisas do tipo:

<html>
<%
    String qs = request.getQueryString();
    if (qs != null){
        if(qs.equalsIgnoreCase("Erro")){
        %>
            <script language="javascript" type="text/javascript">
                alert("Não foi possível realizar operacao!");
            </script>
        <%
        }
    }
		
}else {
%>
.... resto do html

:cry:

S

danieldestro:
peerless:
Daniel, as pessoas que codificaram isso aê, ainda estão na empresa?
O que você faz quando encontra isso? Re-escreve e depois notifica eles, avisa o gerente, avisa os estagiarios que fizeram isso?
Que tipo de empresa aceita isso?
Isso estava “funcionando” em produção?

Curiosamente eu sou da área de QA (qualidade) e analiso as entregas dos nossos fornecedores. Isso tudo vai em um relatório.

Seus colegas (e empresa) sabe que você os sacaneia no GUJ? :twisted: :mrgreen:

victorwss

Putz, vendo essa classe Ferramentas, dou graças a Deus que a classe String é final. Imagina o tipo de bosta que alguém poderia fazer herdando de java.lang.String? Se java.util.Date fosse final, esse tipo de merda não ocorreria (pelo menos não desse jeito).

danieldestro

Quem sacaneia quem? Depende do ponto de vista. Eu posso estar sendo sacaneado, já que pagamos por este tipo de código produzido pelos fornecedores.

Eu estaria sacaneando se informasse nomes, mas até nome de classes eu acabo mudando pra não escancarar.

O objetivo é didático, ou seja, ensinar através do mau exemplo (“não faça assim”), e não sacanear alguém.

Pense nisso!

S

Foi só uma brincadeira. Pelos códigos que você cola, está sendo até bonzinho :mrgreen:

Jeanioz

Parece letra de música infantil.

Nunhum nunhum nunhum,
Nunhum nunhum nhum!
Nunhum nunhum nunhum,
Nunhuuuuuuuuuuuuuuuuuummmmm!!!..

:roll:

Fox_McCloud

danieldestro:
Porque diabos colocar um return deste de um finally?

public int nomeDoMetodo() { try { // ... } catc( Exception e ) { //... trata } finally { filePost.releaseConnection(); return (status == HttpStatus.SC_OK); } }


Provavelmente o intelijegue colocou return no try, no catch e no finally ao invés de pensar em um jeito melhor…

victorwss

Que tal usar NullPointerException para controle de fluxo?

try {
    // Faz alguma coisa qualquer aqui.
} catch (NullPointerException e) {
    // Faz uma outra coisa aqui, que não é tratar o erro.
}
S

victorwss:
Que tal usar NullPointerException para controle de fluxo?

try { // Faz alguma coisa qualquer aqui. } catch (NullPointerException e) { // Faz uma outra coisa aqui, que não é tratar o erro. }

Parece com uma discussão que houve aqui no GUJ sobre o que era melhor: usar instanceof ou capturar o ClassCastException… :mrgreen:

Fox_McCloud

Schuenemann:
victorwss:
Que tal usar NullPointerException para controle de fluxo?

try { // Faz alguma coisa qualquer aqui. } catch (NullPointerException e) { // Faz uma outra coisa aqui, que não é tratar o erro. }

Parece com uma discussão que houve aqui no GUJ sobre o que era melhor: usar instanceof ou capturar o ClassCastException… :mrgreen:


Bom… desde que haja uniformidade no desenvolvimento de forma que as pessoas da equipe sigam um mesmo padrão…

Porque é horrível ter que ficar desvendando as mais diferentes lógicas em pontos diferentes de um sistema grande…

P

1. NumberFormat nf = NumberFormat.getInstance(); 2. nf.setMinimumIntegerDigits(9); 3. System.out.println(nf.format(40).replace(".", ""));

A pog do dia. rsrsrs

luistiagos

bah aqui na empresa tive que arrumar uma porrada de codigos que passavam o HttpRequest direto para a camada de negocios…

victorwss

Cara, nem me fale. Já tive a infelicidade de fazer esse trabalho.
Os outros cagam e você tem que limpar.
No meu caso, tinha HttpServletRequest e HttpServletResponse indo até o DAO. O HttpServletRequest também era usado como um grande repositório de variáveis públicas, mesmo que não tivessem nada a ver com a requisição ou com qualquer outra coisa. Não há porque usar atributos, variáveis locais ou parâmetros se tudo que você precisa é de um HttpServletRequest!

nbluis

Uma variação de Black Cat in a Dark Room Pattern. :lol:

victorwss

Hehe, peguei uma vez um caso que ao invés de declarar variáveis para cada coisa separada, havia um único Object[] bem grande e em cada posição era colocada uma coisa diferente. Preguiça de declarar variáveis.

victorwss

Uma variação de Black Cat in a Dark Room Pattern. :lol:

Sim. Inclusive alguns dos padrões dessa página fui eu que escrevi. :smiley: Basta olhar o histórico.

danieldestro

Alguém, por favor, avisa o cara que, somar zero a um número não altera o resultado.

IF V_TOTAL = 0 THEN V_SQ_RGIST := NVL( V_SQ_RGIST,0 ) + V_N_HUM ; ELSE V_SQ_RGIST := NVL( V_SQ_RGIST,0 ) + V_N_HUM + NVL( V_TOTAL, 0 ); END IF;

S

Fox McCloud:
Schuenemann:
victorwss:
Que tal usar NullPointerException para controle de fluxo?

try { // Faz alguma coisa qualquer aqui. } catch (NullPointerException e) { // Faz uma outra coisa aqui, que não é tratar o erro. }

Parece com uma discussão que houve aqui no GUJ sobre o que era melhor: usar instanceof ou capturar o ClassCastException… :mrgreen:


Bom… desde que haja uniformidade no desenvolvimento de forma que as pessoas da equipe sigam um mesmo padrão…

Porque é horrível ter que ficar desvendando as mais diferentes lógicas em pontos diferentes de um sistema grande…


Não existe motivo para capturar o NullPointerException ou o ClassCastException nesses casos.

nbluis

Nossa, essa daqui foi demais.

if (valor.equals(null)) {
    //faz qualquer coisa.
  }

:lol: :lol:

peczenyj

nbluis:
Nossa, essa daqui foi demais.

if (valor.equals(null)) {
    //faz qualquer coisa.
  }

:lol: :lol:

:shock:

peczenyj

Um dia veremos isso:

pubLIc KlAXX ExXxeMPlU ExXxteNdxXx OTrAclaXXi{ pRIvaTI int iDADI; // kONStrUtoR pUbLIc exXxemPLU(){ ThixXx......iDaDi = 0;} PuBLIC gETIdaDI(){ rETUrN THixXx......iDaDI; } PuBLic SeTIdaDI(iNT idAdI){ ThixXx......IDAdi = idadI; } }

qro morre…

Fonte: http://www.coisinha.com.br/miguxeitor/

danieldestro

Emo Code Convention???

ricoldi

peczenyj:
Um dia veremos isso:

pubLIc KlAXX ExXxeMPlU ExXxteNdxXx OTrAclaXXi{ pRIvaTI int iDADI; // kONStrUtoR pUbLIc exXxemPLU(){ ThixXx......iDaDi = 0;} PuBLIC gETIdaDI(){ rETUrN THixXx......iDaDI; } PuBLic SeTIdaDI(iNT idAdI){ ThixXx......IDAdi = idadI; } }

qro morre…

uaheuaheuaheuhaeuhauehauehauehauehuaehuaeh, boa peczenyj

Att
Ricoldi

P

danieldestro:
Emo Code Convention???
2 :slight_smile: :slight_smile: :slight_smile:

paulog

é mixugol!!!

victorwss
public class MiguxesException extends LinguaPortuguesaException {}
Java_Boy

Com toda certeza alguém fez as devidas referências a POG certo?

paulog

Acabei de ver aqui…

Um método recebendo 21 parâmetros:

public void render(Component c){
   boolean isAlgumaCoisa = c.getX() == 0;
   render(c.getId(), c.getWidth(), isAlgumaCoisa, ... ); //+ 19 (!!!!!) parâmetros (todos utilizando o component)
}

private void render(... 21 parâmetros...){
  // renderiza o componente
}

Porque já não refatorou tudo para um método só ou pelo menos passasse o objeto para o método seguinte?

Falando com uns colegas aqui, descobri que esse método iniciou a sua grandiosa vida recebendo já 8 parâmetros.

Nada como o gambi-pattern Mega Zord!!! :twisted:

rissato

peczenyj:
Um dia veremos isso:

pubLIc KlAXX ExXxeMPlU ExXxteNdxXx OTrAclaXXi{ pRIvaTI int iDADI; // kONStrUtoR pUbLIc exXxemPLU(){ ThixXx......iDaDi = 0;} PuBLIC gETIdaDI(){ rETUrN THixXx......iDaDI; } PuBLic SeTIdaDI(iNT idAdI){ ThixXx......IDAdi = idadI; } }

qro morre…

Fonte: http://www.coisinha.com.br/miguxeitor/

hahahahahahahahahahahahahahahahahahahahahahahahahahahahahaha…
quase morrendo de rir aqui… hahhahahahahahaahaha…

essa foi boa! :lol:

danieldestro

List<String> lista = populalista(); String a = "teste"; for (String b : lista) { a += a + b; // 800 megas de memória e estouro da heap }

danieldestro

Agora sim eu entendi um uso "adequado" de enums.

public enum StatusMovimento {

    /** The P. */
    P("P"),
    /** The S. */
    S("S"),
    /** The E. */
    E("E"),
    /** The A. */
    A("A"),
    /** The C. */
    C("C"),
    /** The R. */
    R("R"),
    /** The V. */
    V("V"),
    /** The D. */
    D("D"),
    /** The T. */
    T("T"),
    /** The F. */
    F("F");

    /** The status. */
    private final String status;

    private StatusMovimento(String status) {
        this.status = status;
    }
    
    public String getValue() {
        return this.status;
    }

    public String toString() {
        return this.status;
    }
}

Ainda bem que tem comentários, senão eu não entenderia.

victorwss
danieldestro:
Agora sim eu entendi um uso "adequado" de enums.
public enum StatusMovimento {

    /** The P. */
    P("P"),
    /** The S. */
    S("S"),
    /** The E. */
    E("E"),
    /** The A. */
    A("A"),
    /** The C. */
    C("C"),
    /** The R. */
    R("R"),
    /** The V. */
    V("V"),
    /** The D. */
    D("D"),
    /** The T. */
    T("T"),
    /** The F. */
    F("F");

    /** The status. */
    private final String status;

    private StatusMovimento(String status) {
        this.status = status;
    }
    
    public String getValue() {
        return this.status;
    }

    public String toString() {
        return this.status;
    }
}

Ainda bem que tem comentários, senão eu não entenderia.

Podia ser pior:
public class StatusMovimento {

    /** The P. */
    public static String P = "P";
    /** The S. */
    public static String S = "S";
    /** The E. */
    public static String E = "E";
    /** The A. */
    public static String A = "A";
    /** The C. */
    public static String C = "C";
    /** The R. */
    public static String R = "R";
    /** The V. */
    public static String V = "V";
    /** The D. */
    public static String D = "D";
    /** The T. */
    public static String T = "T";
    /** The F. */
    public static String F = "F";
}
luistiagos

o pior são os comentarios… hauhauhauha comico…

danieldestro

Fora que o cara nem sabe que o “toString()” do enum já faz o que ele implementou.

victorwss

Podia ser pior, já vi gente fazendo consulta no BD e criando componentes swing dentro do método toString().

victorwss

Olha só o que eu achei, o troço está em produção:

/**
 * 
 */

/**
 * @author <EDITADO PARA PROTEGER A IDENTIDADE DO AUTOR>
 *
 */
public class Xxx extends Thread {

	/**
	 * 
	 */
	public Xxx() {
		// TODO Auto-generated constructor stub
	}

	/**
	 * @param arg0
	 */
	public Xxx(Runnable arg0) {
		super(arg0);
		// TODO Auto-generated constructor stub
	}

	/**
	 * @param arg0
	 */
	public Xxx(String arg0) {
		super(arg0);
		// TODO Auto-generated constructor stub
	}

	/**
	 * @param arg0
	 * @param arg1
	 */
	public Xxx(ThreadGroup arg0, Runnable arg1) {
		super(arg0, arg1);
		// TODO Auto-generated constructor stub
	}

	/**
	 * @param arg0
	 * @param arg1
	 */
	public Xxx(ThreadGroup arg0, String arg1) {
		super(arg0, arg1);
		// TODO Auto-generated constructor stub
	}

	/**
	 * @param arg0
	 * @param arg1
	 */
	public Xxx(Runnable arg0, String arg1) {
		super(arg0, arg1);
		// TODO Auto-generated constructor stub
	}

	/**
	 * @param arg0
	 * @param arg1
	 * @param arg2
	 */
	public Xxx(ThreadGroup arg0, Runnable arg1, String arg2) {
		super(arg0, arg1, arg2);
		// TODO Auto-generated constructor stub
	}

	/**
	 * @param arg0
	 * @param arg1
	 * @param arg2
	 * @param arg3
	 */
	public Xxx(ThreadGroup arg0, Runnable arg1, String arg2, long arg3) {
		super(arg0, arg1, arg2, arg3);
		// TODO Auto-generated constructor stub
	}

}
danieldestro

É o padrão MUCO: “Multiple Useless Constructor Overload”.

victor.godinho

Por favor, matem-lo!!!


diego_sl wrote:

Thiagosc wrote:

        giulianocosta wrote:hhehehe...

        Essa é classica:


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



    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.



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

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)

E o Thiagosc tambem!!! HUAuhAUHHUAuhauhAUHaUHuhAuha

Realmente o Thiagosc e o Fabrício Cozer Martins estão no topico certo hein… hahahahahhaa…

apropósito… você tambem fazem isso:

if ( objeto.envia() ) { return true; } else { return false; }

??? huahuahuahua, não mintam hein!!! :wink:

huauhahuahuuha. por favor né…

return objeto.envia();
danieldestro

Correção: MATEM-NO.

kkkkkk… só pra alegrar o dia!!! :slight_smile:

victorwss

É o padrão MUCO: “Multiple Useless Constructor Overload”.

Sem falar da excelente documentação. E o perfeito nome da classe que descreve perfeitamente a sua importância no sistema.

victorwss
public String performAction(HttpServletRequest request, HttpServletResponse response) {
        
        String operation = request.getParameter("operation");
        request.setAttribute("operation",operation);
        try{
            switch (operation.charAt(0)) {        
            case 'A':{
                return doShowAll(request);
            }
            case 'C':{
                return doShowAll(request);
            }                    
            case 'E':{
                return doShowAll(request);
            }        
            case 'I':{            
                return doShowAll(request);
            }
            case 'S':{
                return doShowAll(request);
            }        
            case 'X':{
                return doShowAll(request);            
            }        
            }
        }catch (Exception e) {
            e.printStackTrace();
        }
        
        return null;
    }
luistiagos
if (coisa != null) {
 if(coisa == null) {
   //mais coidigo aqui
 }
 else if (coisa != null) {
   //mais coidigo aqui
 }
 else if(coisa == null) {
   //mais codigo aqui
 }
 else {
   //não faz nada
 }
}
else if (coisa == null) {
  //mais codigo aqui
} 
else if (coisa != null) {
  //o cara fumou uma!!!
}
else {
   coisa = new Coisa();
}

coisa = new Coisa();

Acreditem um dia eu vi algo bem parecido com este tipo de coisa… acho que o cara deve ter fumado umas…

danieldestro

Acho que você que fumou um… hahaahaha… brincadeirinha!!!

peczenyj

Podia ser pior, já vi gente fazendo consulta no BD e criando componentes swing dentro do método toString().

Noussa. :shock: :shock: :shock:

luistiagos

Sei q e dificil de acreditar qdo vi este negocio eu tbm mal conseguia acreditar… mas o pior que ja vi algo assim…

P

Surgiu ontem, aqui no fórum:

/** 
     * Formata um numero em String colocando zeros a esquerda conforme passado via parametro
     * Recebe atributo numero e atributo CasaEsquerda qtde zero a esquerda do numero  
     * @return String variavel formatada com zero(s) a esquerda 
     */
     */
public static String zeroEsquerda( int numero , int casaEsquerda){
      String formato ="";
      String resultado ="";
      Integer[] i = new Integer[1];
 	  i[0] = new Integer(numero);

 	  try{
    		
    		if (casaEsquerda == 1){
    			formato="%01d";	
    		}else if (casaEsquerda == 2){
    			formato="%02d";	
    		}else if (casaEsquerda == 3){
    			formato="%03d";	
    		}else if (casaEsquerda == 4){
    			formato="%04d";	
    		}else if (casaEsquerda == 5){
    			formato="%05d";	
    		}else if (casaEsquerda == 6){
    			formato="%06d";	
    		}else if (casaEsquerda == 7){
    			formato="%07d";	
    		}else if (casaEsquerda == 8){
    			formato="%08d";	
    		}else if (casaEsquerda == 9){
    			formato="%09d";	
    		}else if (casaEsquerda == 10){
    			formato="%010d";	
    		}
    		resultado = String.format(formato,i);
    	}catch(Exception e){
    		e.printStackTrace();
    		System.out.println("Erro na Util.zeroEsquerda = "+e);
    	}
		return resultado;
    }
peczenyj

Me surpreende que não usaram um switch/case nesse caso!

sergiotaborda

Correção: MATEM-NO.

kkkkkk… só pra alegrar o dia!!! :)

Vc quiz dizer : Matem-o , certo ?
(Matem-no tb não existe.)

sergiotaborda

O Switch não é substituto do if-else.
No caso a escolha entre colocar um monte de if-else ou colocar um monte de break é um trade-off.
O break é uma instrução … digamos… não canónica que deve ser evitada se vc for purista dos pincipios de programação estruturada.
Por isso incluir um switch só deve ser considerado quando ha return imediato ( não precisa de break) ou quando ha agrupamento de
valores ( quando vários valores resultam no mesmo valor ). Fora isso o if-else é mais “purista”.

Como disse, é um trade-off. Não pode ser considerado um erro.

danieldestro

E seu eu passar 11 como argumento? kkkkkk

victorwss

E seu eu passar 11 como argumento? kkkkkk

Que tal passar -1? Ou talvez Integer.MAX_VALUE.

T

Correção: MATEM-NO.

kkkkkk… só pra alegrar o dia!!! :)

Vc quiz dizer : Matem-o , certo ?
(Matem-no tb não existe.)

Nossa querida língua portuguesa…

De fato, “matemlo” é espanhol, mas “matem-o” não existe.

O certo é “matem-no” embora seja esquisito.

É realmente esquisito porque você acaba tendo (se em vez de “ele” for "eles)
“matem-nos”, que é ambíguo (pode ser “matem a eles” ou “matem a nós”; depende do contexto.)

T

Quando 0 == INFINITO

Ontem de madrugada o pessoal queria me matar porque eu havia achado esta pérola em um programa que tive de manter:

... obj.receive (socket, buffer, 0); ...

e eu pensava que “0” seria para ler imediatamente o que estava no buffer, sem esperar. Na verdade, o fulano que escreveu o programa implementou “receive” como:

if (t == 0) t = INFINITE;
recv (...);

ou seja, 0 era para esperar indefinidamente, não para retornar imediatamente.

O ingênuo aqui trocou 0 por 5000 (para esperar no máximo 5 segundos), numa reforma (uma das múltiplas reformas que estou tendo de fazer no programa), e aí o programa parou de funcionar.
Tive de voltar o valor para 0 de novo…

P

Correção: MATEM-NO.

kkkkkk… só pra alegrar o dia!!! :)

Vc quiz dizer : Matem-o , certo ?
(Matem-no tb não existe.)

Nossa querida língua portuguesa…

De fato, “matemlo” é espanhol, mas “matem-o” não existe.

O certo é “matem-no” embora seja esquisito.

É realmente esquisito porque você acaba tendo (se em vez de “ele” for "eles)
“matem-nos”, que é ambíguo (pode ser “matem a eles” ou “matem a nós”; depende do contexto.)

taborda,

Você quis dizer “quis”, certo? rs

dá pra se embananar todo na hora de falar portugues. Mas matem-o não está certo não, thingol?

[]'s

sergiotaborda

thingol:
sergiotaborda:

Vc quiz dizer : Matem-o , certo ?
(Matem-no tb não existe.)

Nossa querida língua portuguesa…

De fato, “matemlo” é espanhol, mas “matem-o” não existe.

O certo é “matem-no” embora seja esquisito.

É realmente esquisito porque você acaba tendo (se em vez de “ele” for "eles)
“matem-nos”, que é ambíguo (pode ser “matem a eles” ou “matem a nós”; depende do contexto.)

:shock: :shock: :shock: :shock: :shock: :shock: :shock: :shock:

matem-me (a mim)
matem-te (a ti)
matem-o (a ele )
matem-nos (a nós)
matem-vos (a vós)
matem-os (a eles.)

Eis com ensinar:

ensinem-me ( a mim)
ensinem-te (a ti)
ensinem-o (a ele )
ensinem-nos (a nós)
ensinem-vos (a vós)
ensinem-os (a eles.)

Thingol a sua explicação matou-me :shock: Tem algumas referencias ?
(Uma pesquisa no google não foi elucidativa)

luistiagos

isto aqui virou forum de portugues agora…
depois aparece o professor pasqualhe aqui no forum…

T

http://www.gramaticaonline.com.br/gramaticaonline.asp?menu=1&cod=85

03) Pronomes Oblíquos Átonos

Os pronomes oblíquos átonos que funcionam como objeto direto são [b]ME, TE, O, A, SE, NOS, VOS, OS, AS[/b].

Ex. Encontrei-[b]os [/b]ontem à noite.

Meu irmão quer levar-[b]me [/b]à sua cidade.

As provas, revisei-[b]as [/b]há pouco.

Obs: [b]VTD, seguido de o, a, os, as[/b]:

Verbo terminado em [b]vogal[/b]: Os pronomes não se modificam.

Verbo terminado em [b]M, ÃO [/b]ou [b]ÕE[/b]: Os pronomes se modificam para [b]no, na, nos, nas[/b].

Verbo terminado em [b]R, S [/b]ou [b]Z[/b]: Os pronomes se modificam para [b]lo, la, los, las, [/b]e as terminações desaparecem.

Ex. Revisei as provas. = Revisei-[b]as[/b].

Eles revisaram as provas. = Eles revisaram-[b]nas[/b].

Eles irão revisar as provas. = Eles irão revisá-[b]las[/b].

P

luistiagos:
isto aqui virou forum de portugues agora…
depois aparece o professor pasqualhe aqui no forum…

Olha só, o rei do desvio de assunto reclamando, rs. :stuck_out_tongue:

ivo_costa
victorwss:
Olha só o que eu achei, o troço está em produção:
/**
 * 
 */

/**
 * @author <EDITADO PARA PROTEGER A IDENTIDADE DO AUTOR>
 *
 */
public class Xxx extends Thread {
}

Voltando ao tópico...

Isso era de alguma site porno????
hehehehe

luistiagos

uma classe Xxx e ainda editado para proteger a identidade do autor… tudo indica que sim…

victorwss
ivo costa:
victorwss:
Olha só o que eu achei, o troço está em produção:
/**
 * 
 */

/**
 * @author <EDITADO PARA PROTEGER A IDENTIDADE DO AUTOR>
 *
 */
public class Xxx extends Thread {
}

Voltando ao tópico...

Isso era de alguma site porno????
hehehehe

Não, mas o código está uma putaria completa! KKKKKKKKK

victorwss

O melhor MVC que eu já vi com a mais perfeita separação de responsabilidades. Do mesmo projeto da classe Xxx:

/**
	 * @param request
	 */
	private String gerenciaTela(HttpServletRequest request) throws UmaExceptionEspecificaDaAplicacao {
		String operation = request.getParameter("operation");
		// Um monte de código.
		
		if (operation.equals("S")) {
                        // Um pouco de código.
		} else if (operation.equals("A")) {
			// 1 linha de código.
		}

				Pedido pedido = null;

				if (operation.equals("X")) {
					// Mais código.
					pedido = null;
					return TELA_EXCLUIDO;
				}
	
				
				
				
				// Várias linhas de código.
				if (operation.equals("B") || operation.equals("I") || operation.equals("C")) {
					// Mais código.
					if (produto == null) {
						// 5 linhas de código

						if (operation.equals("B")) {
							// Seta um atributo para um valor X.
						} else if (operation.equals("I")) {
							// Seta um atributo para um valor Y.
						}

						return TELA_MANUTENCAO;
					} else {
						if (uma condição qualquer aqui) {
							// Algumas linhas de código.

							if (operation.equals("B")) {
								// Seta um atributo para um valor X.
							} else if (operation.equals("I")) {
								// Seta um atributo para um valor Y.
							}
							return TELA_MANUTENCAO;
						}

						if (operation.equals("C")) {
							// Várias linhas de código.
						} else {
							// Uma linha de código.
							if (operation.equals("B") || operation.equals("I")) {
								// Uma linha de código.
							}
						}
					}
				} else if (operation.equals("A") || operation.equals("E")) {
					// 3 linhas de código.
					if (operation.equals("A")) {
						// 5 linhas de código.
						
					} else {
						// 6 linhas de código.
					}
				} else if (operation.equals("F")) {
					if (pedido!= null) {
						// 7 linhas de código.
					}
					return TELA_LISTA;
				}
				
				if (pedido!= null) {
					// 2 linhas de código.
				}
				
				return TELA_MANUTENCAO;

	}
victorwss

MAGIC NUMBER:

if (usuarioLogon.getCodPerfil().equals(new Integer(8888))) { // Um código aqui. } else { // Outro código aqui. }

victorwss

Balanceamento perfeito de tags HTML:

<table>
  <tr>
	<td align="left"><input type="hidden" name="codDistribuidor" value="$!distribuidor.codDistribuidor"></td> 
        	</td>
     	</tr>
	         <td width="30%" align="right" class="style01">Status:</td>
	</table>
luistiagos

So pra garantir que não é nulo:

Object o = new Object();
 if (o != null) {
   //mais codigo aqui...
 }

null == “”

String str = null;

if (!str.equals("") && str != null) { //olha o nullpointer no capricho!!!
  // mais codigo aqui
}
peczenyj

luistiagos:
So pra garantir que não é nulo:

Object o = new Object(); if (o != null) { //mais codigo aqui... }

Faria sentido se existisse GOTO em java para a linha imediatamente abaixo do new Object();

Isso me lembra outras linguagens de programação… durante a madrugada… com prazo acabando…

B
victorwss:
Olha só o que eu achei, o troço está em produção:
/**
 * @author <EDITADO PARA PROTEGER A IDENTIDADE DO AUTOR>
 *
 */
public class Xxx extends Thread {
}

Bem, faz sentido.

Provavelmente estão tentando proteger o autor do serial-killer maníaco que está manutenindo do código.

TangZero

Olha quer já peguei isso em um sistema de Banco…

public boolean validate(PersonDataBean bean) {
        boolean valid = false;
        if (validateData(bean)) {
            valid = true;
        }
        if (validateCupons(bean)) {
            valid = true;
        }
        if (validateAccountInfo(bean)) {
            valid = true;
        }
        return valid;
    }

Se o cara passar na ultima validação, está tudo certo…pode passar!!! :lol:

victorwss
Bruno Laturner:
victorwss:
Olha só o que eu achei, o troço está em produção:
/**
 * @author <EDITADO PARA PROTEGER A IDENTIDADE DO AUTOR>
 *
 */
public class Xxx extends Thread {
}

Bem, faz sentido.

Provavelmente estão tentando proteger o autor do serial-killer maníaco que está manutenindo do código.

Não, você não entendeu. Eu editei o nome do autor para não revelar a identidade do indivíduo (ele não ia gostar nada de ter o nome dele publicado aqui).

TangZero

TangZero:
Olha quer já peguei isso em um sistema de Banco…

public boolean validate(PersonDataBean bean) {
        boolean valid = false;
        if (validateData(bean)) {
            valid = true;
        }
        if (validateCupons(bean)) {
            valid = true;
        }
        if (validateAccountInfo(bean)) {
            valid = true;
        }
        return valid;
    }

Se o cara passar na ultima validação, está tudo certo…pode passar!!! :lol:

Nem para o cara fazer isso…

public boolean validate(PersonDataBean bean) {
        return validateData(bean) && validateCupons(bean) && validateAccountInfo(bean);
    }

:-o

fantomas

Vc tá querendo dizer que o nome da classe é de fato Xxxx? :shock:

TangZero

Vc tá querendo dizer que o nome da classe é de fato Xxxx? :shock:

Dahhhhhhhhhhh…
Até eu que peguei o bonde andando tinha sacado isso…
A merda do código esta no nome da classe.
Esse tipo de cara eu chamo de Homem-Ofuscador.

victorwss

Vc tá querendo dizer que o nome da classe é de fato Xxxx? :shock:

Sim, o nome da classe é de fato Xxx. A única coisa que eu mudei foi o nome do autor, o resto é Ctrl-C Ctrl-V purinho do original!

victorwss

Vc tá querendo dizer que o nome da classe é de fato Xxxx? :shock:

Dahhhhhhhhhhh…
Até eu que peguei o bonde andando tinha sacado isso…
A merda do código esta no nome da classe.
Esse tipo de cara eu chamo de Homem-Ofuscador.

Não só nome da classe, mas no fato de ter um monte de construtores inúteis, não fazer absolutamente nada além do que faz a superclasse, e ter a excelente documentação que alguma IDE deve ter vomitado automaticamente e ficou lá.

victorwss

Bruno Laturner:
Bem, faz sentido.

Provavelmente estão tentando proteger o autor do serial-killer maníaco que está manutenindo do código.

Se bem que ainda tenho que descobrir onde o cara mora, mas já tenho algumas pistas. :twisted: MWHAHAHAHAHAH

TangZero

Quando achar, corta os dedos fora!

fantomas

TangZero :
Dahhhhhhhhhhh…
Até eu que peguei o bonde andando tinha sacado isso…
A merda do código esta no nome da classe.
Esse tipo de cara eu chamo de Homem-Ofuscador.

KKKKKKKKKKKKKKKKKKK!

É que não dá para A C R E D I T A R! :shock: :shock: :shock: :shock:

TangZero

Os códigos desse cara devem ser parecidos com isso…

public class X {

	public XX x(XXX xxx) {
		return xx(xxx.xxxx(xxx(xxx.xx())));
	}
	
	public XXX xxx(XX xx) {
		return xx.xxx()));
	}
	
	public X xx(XXX xx) {
		return xx.x() ? XXX.X : XX.XX;
	}	

}
T

Uma vez eu tinha resolvido uma lição de casa de alguém aqui, mas para sacanear eu pus em notação Unicode - o programa compila normalmente. Dica: ponha este programa em um arquivo .java, compile-o, e ttente rodá-lo. (Dica muito importante: para saber qual é o nome da classe definida por este programa, veja qual é o nome do arquivo .class gerado)

\u0069\u006D\u0070\u006F\u0072\u0074 \u006A\u0061\u0076\u0061\u002E\u0075\u0074\u0069\u006C\u002E\u002A\u003B
\u0063\u006C\u0061\u0073\u0073 \u0045\u0078\u0065\u0072\u0063\u0069\u0063\u0069\u006F \u007B
\u0009\u0070\u0075\u0062\u006C\u0069\u0063 \u0073\u0074\u0061\u0074\u0069\u0063 \u0076\u006F\u0069\u0064 \u006D\u0061\u0069\u006E\u0028\u0053\u0074\u0072\u0069\u006E\u0067\u005B\u005D \u0061\u0072\u0067\u0073\u0029 \u007B
\u0009\u0009\u0053\u0063\u0061\u006E\u006E\u0065\u0072 \u0073\u0063\u0061\u006E \u003D \u006E\u0065\u0077 \u0053\u0063\u0061\u006E\u006E\u0065\u0072 \u0028\u0053\u0079\u0073\u0074\u0065\u006D\u002E\u0069\u006E\u0029\u003B
\u0009\u0009\u0053\u0079\u0073\u0074\u0065\u006D\u002E\u006F\u0075\u0074\u002E\u0070\u0072\u0069\u006E\u0074 \u0028\u0022\u004E\u006F\u006D\u0065 \u0064\u0061 \u0070\u0072\u0069\u006D\u0065\u0069\u0072\u0061 \u0070\u0065\u0073\u0073\u006F\u0061\u003A \u0022\u0029\u003B
\u0009\u0009\u0053\u0074\u0072\u0069\u006E\u0067 \u006E\u006F\u006D\u0065\u0031 \u003D \u0073\u0063\u0061\u006E\u002E\u006E\u0065\u0078\u0074\u004C\u0069\u006E\u0065\u0028\u0029\u003B
\u0009\u0009\u0053\u0079\u0073\u0074\u0065\u006D\u002E\u006F\u0075\u0074\u002E\u0070\u0072\u0069\u006E\u0074 \u0028\u0022\u0050\u0065\u0073\u006F \u0065\u006D \u006B\u0067\u003A \u0022\u0029\u003B
\u0009\u0009\u0069\u006E\u0074 \u0070\u0065\u0073\u006F\u0031 \u003D \u0073\u0063\u0061\u006E\u002E\u006E\u0065\u0078\u0074\u0049\u006E\u0074\u0028\u0029\u003B \u0073\u0063\u0061\u006E\u002E\u006E\u0065\u0078\u0074\u004C\u0069\u006E\u0065\u0028\u0029\u003B
\u0009\u0009\u0053\u0079\u0073\u0074\u0065\u006D\u002E\u006F\u0075\u0074\u002E\u0070\u0072\u0069\u006E\u0074 \u0028\u0022\u004E\u006F\u006D\u0065 \u0064\u0061 \u0073\u0065\u0067\u0075\u006E\u0064\u0061 \u0070\u0065\u0073\u0073\u006F\u0061\u003A \u0022\u0029\u003B
\u0009\u0009\u0053\u0074\u0072\u0069\u006E\u0067 \u006E\u006F\u006D\u0065\u0032 \u003D \u0073\u0063\u0061\u006E\u002E\u006E\u0065\u0078\u0074\u004C\u0069\u006E\u0065\u0028\u0029\u003B
\u0009\u0009\u0053\u0079\u0073\u0074\u0065\u006D\u002E\u006F\u0075\u0074\u002E\u0070\u0072\u0069\u006E\u0074 \u0028\u0022\u0050\u0065\u0073\u006F \u0065\u006D \u006B\u0067\u003A \u0022\u0029\u003B
\u0009\u0009\u0069\u006E\u0074 \u0070\u0065\u0073\u006F\u0032 \u003D \u0073\u0063\u0061\u006E\u002E\u006E\u0065\u0078\u0074\u0049\u006E\u0074\u0028\u0029\u003B \u0073\u0063\u0061\u006E\u002E\u006E\u0065\u0078\u0074\u004C\u0069\u006E\u0065\u0028\u0029\u003B
\u0009\u0009\u0053\u0079\u0073\u0074\u0065\u006D\u002E\u006F\u0075\u0074\u002E\u0070\u0072\u0069\u006E\u0074\u006C\u006E \u0028\u0022\u004F \u0069\u006E\u0064\u0069\u0076\u0069\u0064\u0075\u006F \u006D\u0061\u0069\u0073 \u0070\u0065\u0073\u0061\u0064\u006F \u0065\u0068\u003A \u0022\u0029\u003B
\u0009\u0009\u0069\u0066 \u0028\u0070\u0065\u0073\u006F\u0031 \u003E \u0070\u0065\u0073\u006F\u0032\u0029 \u007B
\u0009\u0009\u0009\u0053\u0079\u0073\u0074\u0065\u006D\u002E\u006F\u0075\u0074\u002E\u0070\u0072\u0069\u006E\u0074\u0066 \u0028\u0022\u0025\u0073\u002C \u0063\u006F\u006D \u0025\u0064 \u006B\u0067\u0025\u006E\u0022\u002C \u006E\u006F\u006D\u0065\u0031\u002C \u0070\u0065\u0073\u006F\u0031\u0029\u003B
\u0009\u0009\u007D \u0065\u006C\u0073\u0065 \u0069\u0066 \u0028\u0070\u0065\u0073\u006F\u0031 \u003C \u0070\u0065\u0073\u006F\u0032\u0029 \u007B
\u0009\u0009\u0009\u0053\u0079\u0073\u0074\u0065\u006D\u002E\u006F\u0075\u0074\u002E\u0070\u0072\u0069\u006E\u0074\u0066 \u0028\u0022\u0025\u0073\u002C \u0063\u006F\u006D \u0025\u0064 \u006B\u0067\u0025\u006E\u0022\u002C \u006E\u006F\u006D\u0065\u0032\u002C \u0070\u0065\u0073\u006F\u0032\u0029\u003B
\u0009\u0009\u007D \u0065\u006C\u0073\u0065 \u007B
\u0009\u0009\u0009\u0053\u0079\u0073\u0074\u0065\u006D\u002E\u006F\u0075\u0074\u002E\u0070\u0072\u0069\u006E\u0074\u0066 \u0028\u0022\u0025\u0073 \u0065 \u0025\u0073 \u0074\u0065\u006D \u006F \u006D\u0065\u0073\u006D\u006F \u0070\u0065\u0073\u006F \u002D \u0025\u0064 \u006B\u0067\u0025\u006E\u0022\u002C \u006E\u006F\u006D\u0065\u0031\u002C \u006E\u006F\u006D\u0065\u0032\u002C \u0070\u0065\u0073\u006F\u0031\u0029\u003B
\u0009\u0009\u007D
\u0009\u007D
\u007D
TangZero

:lol:

O que você usou para gerar o Unicode?

ViniGodoy

Olha a paranóia…

if (x == 2) { codigo aqui } else if (x == 2) { //É melhor ter certeza mesmo codigo aqui }

O pior, aquele comentário sobre ter certeza estava no código. :stuck_out_tongue:

L

ViniGodoy:
Olha a paranóia…

if (x == 2) { codigo aqui } else if (x == 2) { //É melhor ter certeza mesmo codigo aqui }

O pior, aquele comentário sobre ter certeza estava no código. :P

AHSIUAHSIUSAHius essa e de matar …

T

Isso é um desvio da “programação orientada a fé” ou POF (mais comum em gente que trabalha em ambiente Microsoft, onde ocorrem coisas inexplicáveis e você precisa ter fé na documentação da Microsoft, que é logicamente incoerente) - como ele deixou de ter fé faz pouco tempo e não achou outra religião para substituí-la, forçou a barra para que a tal coisa funcionasse.

TangZero

Agora me lembrei de uma função em JavaScript para converter os valores retornados por uma API de mapas…

function gambetaToNumber(geoPos) {
...
}

O pior que isso foi colocado em produção. Depois tive de tirar.
Mas garanto que essa obra prima não foi minha. :roll:

B
ViniGodoy:
Olha a paranóia...
if (x == 2) {
    codigo aqui
} else if (x == 2) {
    //É melhor ter certeza
    mesmo codigo aqui
}
O pior, aquele comentário sobre ter certeza estava no código. :P
Ahh, amadores... tsk
void fazAlgo() {
  codigo aqui
}

(...)

if (x == 2) {
    fazAlgo(); 
} else if (x == 2) {
    //É melhor ter certeza
    fazAlgo(); // já que o código é igual, colocamos num métodozinho p/ economizar.
}
:twisted:
luistiagos

thingol oq vc usou para gerar o unicode?

ViniGodoy

Refatoração da gambiarra.

TangZero

Não acredito no que acabei de achar aqui…Meu Deus…

private String leCampoScope(ByteArrayInputStream ois, int tamanho) throws IOException {
        String retorno = "";
        int c;
        boolean zeroDetected = false;
        for (short j = 0; j < tamanho; j++) {
            if (((c = ois.read()) == 0)) {
                zeroDetected = true;
            }
            if (!zeroDetected) {
                retorno = retorno.concat(new String(new char[]{(char) c}));
            }
        }
        return retorno;
    }

Meu, dá vergonha ver isso no Projeto…

private String leCampoScope(ByteArrayInputStream ois, int tamanho) throws IOException {
        StringBuilder retorno = new StringBuilder();
        int c;        
        for (short j = 0; j < tamanho; j++) {
            if (((c = ois.read()) != 0)) {                
                retorno.append((char) c);
            }
        }
        return retorno.toString();
    }

Melhor assim. :wink:

victorwss

Cara, é facinho fazer um programa que dá um jeito nisso.

public static String converteNoUnicodeDoThingol(String entrada) {
   char [] hex = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
   char [] caracteres = entrada.toCharArray();
   StringBuilder saida = new StringBuilder(6 * entrada.length());
   for (char c : caracteres) {
     int d = (int) c;
     saida.append("\u")
        .append(hex[d / 0x1000])
        .append(hex[d % 0x1000 / 0x100])
        .append(hex[d % 0x100 / 0x10])
        .append(hex[d % 0x10]);
   }
   return saida.toString();
}

Ta aí, fiz em cinco minutos. Não testei nem compilei e nem rodei, mas acho que vai funcionar.
Agora, entenda isso!

Obfuscation rulez!!!

EDIT: Tente melhorar usando os operadores & e >> ao invés de % e /.
EDIT 2: Também tente fazer o programa que lê o unicode e trás de volta o texto normal. :slight_smile:

luistiagos

Isto não é algo tão facil de fazer…

o foda é que ao fazer isto [d / 0x1000] isto resulta em um resultado não inteiro porem esta sendo usado em contexto inteiro perdendo a parte decimal… vc não sabendo o valor decimal exato disto fica dificil reverter a coisa…

luistiagos

Acho que o topico de codigos toscos não tem muito haver com seu comentario… a menos que sua empresa esteja procurando POGramadores para fazerem codigos toscos…
pq não abre um topico especifico para isto?

nbluis

luistiagos:

Acho que o topico de codigos toscos não tem muito haver com seu comentario… a menos que sua empresa esteja procurando POGramadores para fazerem codigos toscos…
pq não abre um topico especifico para isto?

Vai ver eles estão procurando programadores POG para a empresa. :lol:
Vai saber… :wink:

A

Pelo contrario, aqui se encontra quem esta preocupado com qualidade e tem consciencia de que precisa escrever codigo decente por apontar erros toscos.

pelo menos é isso que procuramos :slight_smile:

A

Realmente, pelos comentarios estou no lugar errado, nao pelos POG, mais pelos comentarios. :twisted:

victorwss

luistiagos:

Também tente fazer o programa que lê o unicode e trás de volta o texto normal.

Isto não é algo tão facil de fazer…

o foda é que ao fazer isto [d / 0x1000] isto resulta em um resultado não inteiro porem esta sendo usado em contexto inteiro perdendo a parte decimal… vc não sabendo o valor decimal exato disto fica dificil reverter a coisa…

A perda da parte fracionária é intencional, e ele não daria certo se esta não fosse perdida.

Fazer o contrário também é simples, você lê o \uXXXX, onde X é um dígito hexadecimal, pega o caractere correspondente a XXXX e coloca na saída. É simples sim. Para casos de textos que tenham caracteres normais misturados, basta colocar na saída todos os outros caracteres que não correspondem a \uXXXX.

E outra, neste caso não pense em decimal, pense em hexadecimal que o negócio fica mais simples.

luistiagos

Não entendi exatamente oq quiz dizer mas pelo que entendi basta subistituir o algarismo hexa pelo caractere correspondente a ele seria isto?

victorwss

luistiagos:

A perda da parte fracionária é intencional, e ele não daria certo se esta não fosse perdida.

Fazer o contrário também é simples, você lê o \uXXXX, onde X é um dígito hexadecimal, pega o caractere correspondente a XXXX e coloca na saída. É simples sim. Para casos de textos que tenham caracteres normais misturados, basta colocar na saída todos os outros caracteres que não correspondem a \uXXXX.

E outra, neste caso não pense em decimal, pense em hexadecimal que o negócio fica mais simples.

Não entendi exatamente oq quiz dizer mas pelo que entendi basta subistituir o algarismo hexa pelo caractere correspondente a ele seria isto?

\u1234 = 14096 + 2256 + 316 + 41 = 4660
System.out.println((char) 4660); // <-- Vai sair o caractere 4660, seja lá o que isso for.

Ex:
‘A’ = 65 = \u0041

Edit: 0x1000 = 4096, 0x100 = 256, 0x10 = 16.

victorwss

Fiquei em dúvida. Eu devo rir ou eu devo chorar?

if(!edtPwsUsrNew.equals("********")){ usuarioLogon.setPwsUsr(Utility.getHash(edtPwsUsrNew)); Usuario usuario = new UsuarioDSA().insertUsuario(usuarioLogon); request.setAttribute("usuario",usuarioLogon); msg = "Senha Alterada consucesso!"; request.setAttribute("msg",msg); }

B

victorwss:
Fiquei em dúvida. Eu devo rir ou eu devo chorar?

if(!edtPwsUsrNew.equals("********")){ usuarioLogon.setPwsUsr(Utility.getHash(edtPwsUsrNew)); Usuario usuario = new UsuarioDSA().insertUsuario(usuarioLogon); request.setAttribute("usuario",usuarioLogon); msg = "Senha Alterada consucesso!"; request.setAttribute("msg",msg); }

Não precisa chorar, “consucesso” dá pra ser arrumado facim. :wink:

victorwss

Bruno Laturner:
victorwss:
Fiquei em dúvida. Eu devo rir ou eu devo chorar?

if(!edtPwsUsrNew.equals("********")){ usuarioLogon.setPwsUsr(Utility.getHash(edtPwsUsrNew)); Usuario usuario = new UsuarioDSA().insertUsuario(usuarioLogon); request.setAttribute("usuario",usuarioLogon); msg = "Senha Alterada consucesso!"; request.setAttribute("msg",msg); }

Não precisa chorar, “consucesso” dá pra ser arrumado facim. ;)

E a (i)lógica desse teste do if?

Rubem_Azenha

O que vem a ser DSA em UsuarioDSA?

B

Como eu disse: :wink:

:twisted:

danieldestro

Reaproveitamento de código é isso:

public class MeuQueridoDAO {

  public Simpatia listar( Long cod, String tipo ) {
    String SQL = "select o from Simpatia o where o.cod = :cod and o.tipo = :tipo";
    // faz o trabalho aqui
  }

  public Simpatia loadAba( Long cod, String tipo ) {
    String SQL = "select o from Simpatia o where o.cod = :cod and o.tipo = :tipo";
    // faz o trabalho aqui
  }
}
victorwss

É um DAO, mas o que a sigla significa ou por que o caboclo que fez decidiu usar DSA ao invés de DAO, isso eu ainda não consegui descobri.

B

DAO? Com request e validações no meio?

T

Deve ser alguma coisa maluca como isto aqui:

DSA = Data Structures and Algorithms (algum livro que o cara achou em cima da mesa e achou “bunito”)

ou pior,

DSA = “Divia” “Studar” Alemão

Mas confesso que não consigo atinar com o significado.

victorwss

Não, na verdade esse código aí está fora do DSA. Ele cria o DSA que faz o trabalho dele.

Mas também tem bastante lixo nos DSAs, mas felizmente não tem nenhum request (pelo menos ainda não vi).

danieldestro

DSA = Daos São Amigos

victorwss

Procurei no google e na wikipédia o significado de DSA e achei estes:

Digital Signature Algorithm
Directory System Agent
Dynamic Storage Allocation
Distributed Systems Architecture
Direct Selling Association
Divisão de Satélite e Sistemas Ambientais
Democratic Socialists of America
Driving Standards Agency
Denver School of the Arts
DeKalb School of the Arts
Durham School of the Arts
Deutsche Schule Athen
Defense Services Academy
Department of Social Affairs
Debating SA Incorporated
Digital subtraction angiography
Deducting Search Algorithm
Das Schwarze Auge
Deadstar Assembly
Disabled students allowance
Distinguished Service Award
Divisão Sul Americana
Don’t Speak Alound
Dry sub artic
Day Seven Adventist

peczenyj

É um DAO, mas o que a sigla significa ou por que o caboclo que fez decidiu usar DSA ao invés de DAO, isso eu ainda não consegui descobri.

Direct SQL Access :wink:

victorwss

for (Iterator iter = pedidosPendentes.iterator(); iter.hasNext();) { pedido = (Pedido) iter.next(); break; } :shock:

victorwss
private boolean checkProdutoFornecedor(Produto produto, String codFornecedor){
		boolean produtoOK = false;
//		String tipoAzul = "#1#2#11#21#22#6#52#12#";
//		String tipoLaranja = "#7#8#77#88#14#28#";
//Preciso que para no programa não seja permitido que eles façam pedidos dos tipos (6-14-16-26).		
		String tipoAzul = "#1#2#11#21#22#52#12#";
		String tipoLaranja = "#7#8#77#88#28#";
		
		
		if (codFornecedor != null) {
			if (codFornecedor.equals("A") &&  tipoAzul.contains("#" + produto.getTpoProduto().toString().trim()+ "#")) {
				produtoOK = true;
			} else if (codFornecedor.equals("L") &&  tipoLaranja.contains("#" + produto.getTpoProduto().toString().trim()+ "#")){
				produtoOK = true;
			}
		}
	
		
		return produtoOK;
	}
B

They’ve got a Death Star!
They’ve got a Death Star!

ramilani12

http://guj.com.br/posts/list/100121.java

Vejam o segundo post

TangZero

ramilani12:
http://guj.com.br/posts/list/100121.java

Vejam o segundo post

Integer xave =   (Integer) i.next();

??? :shock:

victorwss

if (pedido.getDistribuidor().getFilial() != null && pedido.getDistribuidor().getFilial().equals("S")) { try { String localidade = pedido.getDistribuidor().getLocalidade().substring(0, 1).toUpperCase(); localidade += pedido.getDistribuidor().getLocalidade().substring(1).trim().toLowerCase(); Method mPro = pedidoDetalhe.getClass().getMethod("getEstPro" + localidade, null); Method mAlu = pedidoDetalhe.getClass().getMethod("getEstAlu" + localidade, null); //pedidoDetalhe.setEstAluFilial(pedidoDetalhe); pedidoDetalhe.setEstProFilial((Integer)mPro.invoke(pedidoDetalhe)); pedidoDetalhe.setEstAluFilial((Integer)mAlu.invoke(pedidoDetalhe)); } catch (Exception e) { e.printStackTrace(); } }

PedidoDetalhe é um VO que contém vários métodos com prefixo getEstPro e getEstAlu. No BD há vários campos na forma EST_PRO_XXX e EST_ALU_XXX. Erros de modelagem a parte, o gambiarrizador usou reflection para acessar estes métodos por preguiça.

danieldestro

victorwss:
} catch (Exception e) { e.printStackTrace(); } }

kkkkkkk… o melhor é a POG “SILENCIATOR”…

danieldestro

Básico.

if ( (rmiids06.getTipoComercializacao() != null) || (rmiids06.getTipoComercializacao().intValue() == 1) ) { peAgravVd = um + round( (rmiids06.getPeAgravVd() / 100.0D), 5 ); } if ((rmiids06.getTipoComercializacao() != null) || (rmiids06.getTipoComercializacao() == 2L)){ peAgravMes = um + round( (rmiids06.getPeAgravMes() / 100.0), 5); }

victorwss

danieldestro:
Básico.

if ( (rmiids06.getTipoComercializacao() != null) || (rmiids06.getTipoComercializacao().intValue() == 1) ) { peAgravVd = um + round( (rmiids06.getPeAgravVd() / 100.0D), 5 ); } if ((rmiids06.getTipoComercializacao() != null) || (rmiids06.getTipoComercializacao() == 2L)){ peAgravMes = um + round( (rmiids06.getPeAgravMes() / 100.0), 5); }

Tem cheiro de NullPointerException.

victorwss

Antes do Victor:

/**
	 * @param usuario
	 * @return
	 */
	public String deleteUsuario(Usuario usuario) throws ExceptionEspecificaDaAplicacao {
		PersistenceBroker broker = super.getPersistenceBroker();
		String result = "";
		try{
		  broker = getPersistenceBroker();			
		  broker.beginTransaction();
		  broker.delete(usuario);
		  broker.commitTransaction();
	    }
	    catch(Exception e){
		   throw new ExceptionEspecificaDaAplicacao("N�o foi poss�vel excluir o Objeto.\n"+e.getMessage());		   
	    }finally{
			if(broker != null){
				if (!broker.isClosed()){
					broker.close();
				}
			}
		}

	    return result;
	}

Observem que o retorno é sempre o mesmo: ""

Depois do Victor:
public void deleteUsuario(final Usuario usuario) {
        PersistenciaTools.efetuar(new Transacao() {
            public void fazer(PersistenceBroker broker) {
                broker.delete(usuario);
            }
        });
    }
ivo_costa

Esse aqui é ótimo, achei no framework da empresa que eu trabalho, não sei se o peerles ainda trabalha aqui mas se ele procurar um pouco vai achar tbm:

o interessante é que esse código não pra um açougue, é para uma empresa grande e conhecida!
o interessante 2 é que eu não tenho permissão pra arrumar esse e outros códigos!

Um método deprecated mandando chamar um método que chama o método deprecated!!!

/**
   * Informa a quantidade de registros que o ALGUMACOISAAQUI possui.
   *
   * *** Não deve ser utilizado ***
   * @return int
   * @deprecated Este método é interno do ALGUMACOISAAQUI e não deve ser utilizado. Utilize o método getSize().
   */
  public int getValuesSize()
  {
    return (values != null) ? values.size() : 0;
  }
  
  public int getSize()
  {
    return getValuesSize();
  }

Eu fui conversar com o cara responsável por essa classe e ele deu uma desconversada…

S

danieldestro:
Básico.

if ( (rmiids06.getTipoComercializacao() != null) || (rmiids06.getTipoComercializacao().intValue() == 1) ) { peAgravVd = um + round( (rmiids06.getPeAgravVd() / 100.0D), 5 ); } if ((rmiids06.getTipoComercializacao() != null) || (rmiids06.getTipoComercializacao() == 2L)){ peAgravMes = um + round( (rmiids06.getPeAgravMes() / 100.0), 5); }


É impressão minha ou você achou um bug no highlighting (linha 2)? No 100.0D

victorwss

The worst reinvented square wheel:

// Check browser version var isNav4 = false, isNav5 = false, isIE4 = false var strSeperator = "/"; // If you are using any Java validation on the back side you will want to use the / because // Java date validations do not recognize the dash as a valid date separator. var vDateType = 3; // Global value for type of date format // 1 = mm/dd/yyyy // 2 = yyyy/dd/mm (Unable to do date check at this time) // 3 = dd/mm/yyyy var vYearType = 4; //Set to 2 or 4 for number of digits in the year for Netscape var vYearLength = 2; // Set to 4 if you want to force the user to enter 4 digits for the year before validating. var err = 0; // Set the error code to a default of zero if(navigator.appName == "Netscape") { if (navigator.appVersion < "5") { isNav4 = true; isNav5 = false; } else if (navigator.appVersion > "4") { isNav4 = false; isNav5 = true; } } else { isIE4 = true; } function DateFormat(vDateName, vDateValue, e, dateCheck, dateType) { vDateType = dateType; // vDateName = object name // vDateValue = value in the field being checked // e = event // dateCheck // True = Verify that the vDateValue is a valid date // False = Format values being entered into vDateValue only // vDateType // 1 = mm/dd/yyyy // 2 = yyyy/mm/dd // 3 = dd/mm/yyyy //Enter a tilde sign for the first number and you can check the variable information. if (vDateValue == "~") { alert("AppVersion = "+navigator.appVersion+" \nNav. 4 Version = "+isNav4+" \nNav. 5 Version = "+isNav5+" \nIE Version = "+isIE4+" \nYear Type = "+vYearType+" \nDate Type = "+vDateType+" \nSeparator = "+strSeperator); vDateName.value = ""; vDateName.focus(); return true; } var whichCode = (window.Event) ? e.which : e.keyCode; // Check to see if a seperator is already present. // bypass the date if a seperator is present and the length greater than 8 if (vDateValue.length > 8 && isNav4) { if ((vDateValue.indexOf("-") >= 1) || (vDateValue.indexOf("/") >= 1)) return true; } //Eliminate all the ASCII codes that are not valid var alphaCheck = " abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ/-"; if (alphaCheck.indexOf(vDateValue) >= 1) { if (isNav4) { vDateName.value = ""; vDateName.focus(); vDateName.select(); return false; } else { vDateName.value = vDateName.value.substr(0, (vDateValue.length-1)); return false; } } if (whichCode == 8) //Ignore the Netscape value for backspace. IE has no value return false; else { //Create numeric string values for [telefone removido]/ //The codes provided include both keyboard and keypad values var strCheck = '47,48,49,50,51,52,53,54,55,56,57,58,59,95,96,97,98,99,100,101,102,103,104,105'; if (strCheck.indexOf(whichCode) != -1) { if (isNav4) { if (((vDateValue.length < 6 && dateCheck) || (vDateValue.length == 7 && dateCheck)) && (vDateValue.length >=1)) { alert("Favor digitar uma data v&aacute;lida"); vDateName.value = ""; vDateName.focus(); vDateName.select(); return false; } if (vDateValue.length == 6 && dateCheck) { var mDay = vDateName.value.substr(2,2); var mMonth = vDateName.value.substr(0,2); var mYear = vDateName.value.substr(4,4) //Turn a two digit year into a 4 digit year if (mYear.length == 2 && vYearType == 4) { var mToday = new Date(); //If the year is greater than 30 years from now use 19, otherwise use 20 var checkYear = mToday.getFullYear() + 30; var mCheckYear = '20' + mYear; if (mCheckYear >= checkYear) mYear = '19' + mYear; else mYear = '20' + mYear; } var vDateValueCheck = mMonth+strSeperator+mDay+strSeperator+mYear; if (!dateValid(vDateValueCheck)) { alert("Favor digitar uma data v&aacute;lida"); vDateName.value = ""; vDateName.focus(); vDateName.select(); return false; } return true; } else { // Reformat the date for validation and set date type to a 1 if (vDateValue.length >= 8 && dateCheck) { if (vDateType == 1) // mmddyyyy { var mDay = vDateName.value.substr(2,2); var mMonth = vDateName.value.substr(0,2); var mYear = vDateName.value.substr(4,4) vDateName.value = mMonth+strSeperator+mDay+strSeperator+mYear; } if (vDateType == 2) // yyyymmdd { var mYear = vDateName.value.substr(0,4) var mMonth = vDateName.value.substr(4,2); var mDay = vDateName.value.substr(6,2); vDateName.value = mYear+strSeperator+mMonth+strSeperator+mDay; } if (vDateType == 3) // ddmmyyyy { var mMonth = vDateName.value.substr(2,2); var mDay = vDateName.value.substr(0,2); var mYear = vDateName.value.substr(4,4) vDateName.value = mDay+strSeperator+mMonth+strSeperator+mYear; } //Create a temporary variable for storing the DateType and change //the DateType to a 1 for validation. var vDateTypeTemp = vDateType; vDateType = 1; var vDateValueCheck = mMonth+strSeperator+mDay+strSeperator+mYear; if (!dateValid(vDateValueCheck)) { alert("Favor digitar uma data v&aacute;lida"); vDateType = vDateTypeTemp; vDateName.value = ""; vDateName.focus(); vDateName.select(); return false; } vDateType = vDateTypeTemp; return true; } else { if (((vDateValue.length < 8 && dateCheck) || (vDateValue.length == 9 && dateCheck)) && (vDateValue.length >=1)) { alert("Favor digitar uma data v&aacute;lida"); vDateName.value = ""; vDateName.focus(); vDateName.select(); return false; } } } } else { // Non isNav Check if (((vDateValue.length < 8 && dateCheck) || (vDateValue.length == 9 && dateCheck)) && (vDateValue.length >=1)) { alert("Favor digitar uma data v&aacute;lida"); vDateName.value = ""; vDateName.focus(); return true; } // Reformat date to format that can be validated. mm/dd/yyyy if (vDateValue.length >= 8 && dateCheck) { // Additional date formats can be entered here and parsed out to // a valid date format that the validation routine will recognize. if (vDateType == 1) // mm/dd/yyyy { var mMonth = vDateName.value.substr(0,2); var mDay = vDateName.value.substr(3,2); var mYear = vDateName.value.substr(6,4) } if (vDateType == 2) // yyyy/mm/dd { var mYear = vDateName.value.substr(0,4) var mMonth = vDateName.value.substr(5,2); var mDay = vDateName.value.substr(8,2); } if (vDateType == 3) // dd/mm/yyyy { var mDay = vDateName.value.substr(0,2); var mMonth = vDateName.value.substr(3,2); var mYear = vDateName.value.substr(6,4) } if (vYearLength == 4) { if (mYear.length < 4) { alert("Favor digitar uma data v&aacute;lida"); vDateName.value = ""; vDateName.focus(); return true; } } // Create temp. variable for storing the current vDateType var vDateTypeTemp = vDateType; // Change vDateType to a 1 for standard date format for validation // Type will be changed back when validation is completed. vDateType = 1; // Store reformatted date to new variable for validation. var vDateValueCheck = mMonth+strSeperator+mDay+strSeperator+mYear; if (mYear.length == 2 && vYearType == 4 && dateCheck) { //Turn a two digit year into a 4 digit year var mToday = new Date(); //If the year is greater than 30 years from now use 19, otherwise use 20 var checkYear = mToday.getFullYear() + 30; var mCheckYear = '20' + mYear; if (mCheckYear >= checkYear) mYear = '19' + mYear; else mYear = '20' + mYear; vDateValueCheck = mMonth+strSeperator+mDay+strSeperator+mYear; // Store the new value back to the field. This function will // not work with date type of 2 since the year is entered first. if (vDateTypeTemp == 1) // mm/dd/yyyy vDateName.value = mMonth+strSeperator+mDay+strSeperator+mYear; if (vDateTypeTemp == 3) // dd/mm/yyyy vDateName.value = mDay+strSeperator+mMonth+strSeperator+mYear; } if (!dateValid(vDateValueCheck)) { alert("Favor digitar uma data v&aacute;lida"); vDateType = vDateTypeTemp; vDateName.value = ""; vDateName.focus(); return true; } vDateType = vDateTypeTemp; return true; } else { if (vDateType == 1) { if (vDateValue.length == 2) { vDateName.value = vDateValue+strSeperator; } if (vDateValue.length == 5) { vDateName.value = vDateValue+strSeperator; } } if (vDateType == 2) { if (vDateValue.length == 4) { vDateName.value = vDateValue+strSeperator; } if (vDateValue.length == 7) { vDateName.value = vDateValue+strSeperator; } } if (vDateType == 3) { if (vDateValue.length == 2) { vDateName.value = vDateValue+strSeperator; } if (vDateValue.length == 5) { vDateName.value = vDateValue+strSeperator; } } return true; } } if (vDateValue.length == 10&& dateCheck) { if (!dateValid(vDateName)) { // Un-comment the next line of code for debugging the dateValid() function error messages //alert(err); alert("Favor digitar uma data v&aacute;lida"); vDateName.focus(); vDateName.select(); } } return false; } else { // If the value is not in the string return the string minus the last // key entered. if (isNav4) { vDateName.value = ""; vDateName.focus(); vDateName.select(); return false; } else { vDateName.value = vDateName.value.substr(0, (vDateValue.length-1)); return false; } } } } function dateValid(objName) { var strDate; var strDateArray; var strDay; var strMonth; var strYear; var intday; var intMonth; var intYear; var booFound = false; var datefield = objName; var strSeparatorArray = new Array("-"," ","/","."); var intElementNr; // var err = 0; var strMonthArray = new Array(12); strMonthArray[0] = "Jan"; strMonthArray[1] = "Feb"; strMonthArray[2] = "Mar"; strMonthArray[3] = "Apr"; strMonthArray[4] = "May"; strMonthArray[5] = "Jun"; strMonthArray[6] = "Jul"; strMonthArray[7] = "Aug"; strMonthArray[8] = "Sep"; strMonthArray[9] = "Oct"; strMonthArray[10] = "Nov"; strMonthArray[11] = "Dec"; //strDate = datefield.value; strDate = objName; if (strDate.length < 1) { return true; } for (intElementNr = 0; intElementNr < strSeparatorArray.length; intElementNr++) { if (strDate.indexOf(strSeparatorArray[intElementNr]) != -1) { strDateArray = strDate.split(strSeparatorArray[intElementNr]); if (strDateArray.length != 3) { err = 1; return false; } else { strDay = strDateArray[0]; strMonth = strDateArray[1]; strYear = strDateArray[2]; } booFound = true; } } if (booFound == false) { if (strDate.length>5) { strDay = strDate.substr(0, 2); strMonth = strDate.substr(2, 2); strYear = strDate.substr(4); } } //Adjustment for short years entered if (strYear.length == 2) { strYear = '20' + strYear; } strTemp = strDay; strDay = strMonth; strMonth = strTemp; intday = parseInt(strDay, 10); if (isNaN(intday)) { err = 2; return false; } intMonth = parseInt(strMonth, 10); if (isNaN(intMonth)) { for (i = 0;i<12;i++) { if (strMonth.toUpperCase() == strMonthArray[i].toUpperCase()) { intMonth = i+1; strMonth = strMonthArray[i]; i = 12; } } if (isNaN(intMonth)) { err = 3; return false; } } intYear = parseInt(strYear, 10); if (isNaN(intYear)) { err = 4; return false; } if (intMonth>12 || intMonth<1) { err = 5; return false; } if ((intMonth == 1 || intMonth == 3 || intMonth == 5 || intMonth == 7 || intMonth == 8 || intMonth == 10 || intMonth == 12) && (intday > 31 || intday < 1)) { err = 6; return false; } if ((intMonth == 4 || intMonth == 6 || intMonth == 9 || intMonth == 11) && (intday > 30 || intday < 1)) { err = 7; return false; } if (intMonth == 2) { if (intday < 1) { err = 8; return false; } if (LeapYear(intYear) == true) { if (intday > 29) { err = 9; return false; } } else { if (intday > 28) { err = 10; return false; } } } return true; } function LeapYear(intYear) { if (intYear % 100 == 0) { if (intYear % 400 == 0) { return true; } } else { if ((intYear % 4) == 0) { return true; } } return false; }

danieldestro

Imagino que isso tudo sirva para imprimir “HELLO WORLD” na tela… kkkkkk

danieldestro

[quote=Schuenemann]

danieldestro:
Básico.

if ( (rmiids06.getTipoComercializacao() != null) || (rmiids06.getTipoComercializacao().intValue() == 1) ) {

É impressão minha ou você achou um bug no highlighting (linha 2)? No 100.0D

Olha só essa linha ai!!!

renatosilva

Dá um desconto Daniel…quem nunca trocou um && pelo || rss…

ramilani12

De onde vc tirou esse codigo Victor?

danieldestro

Sim, claro… mas duas vezes seguidas no mesmo trecho de código?

renatosilva

Hahahahah…

Ele deve tá implementando reuso com o RCP Pattern :smiley:

victorwss

De um sistema em produção daqui (o mesmo que tem a classe Xxx). Basicamente o que ele faz é formatação e validação de datas, pretendo em breve pegar esse código e apagar sem dó e colocar algo decente no lugar.

O mané que fez o sistema deve ter achado esse lixo na internet e saiu copiando e colando no código (sim, Ctrl+C Ctrl+V) Já achei essa merda repetida em três lugares diferentes.

E respondendo ao renato 3110, sim, isso é o RCP mais puro e aplicado.

luistiagos
if ( (rmiids06.getTipoComercializacao() != null) || (rmiids06.getTipoComercializacao().intValue() == 1) ) {

rmiids06 e isso é nome decente para uma variavel?!

pelo jeito com esta gambi vão levar um belo de um NullPointerException!

isso ai… manda essa gambi pro espaço e faz algo decente ai…

S

[quote=danieldestro]

Schuenemann:
danieldestro:
Básico.

if ( (rmiids06.getTipoComercializacao() != null) || (rmiids06.getTipoComercializacao().intValue() == 1) ) {

É impressão minha ou você achou um bug no highlighting (linha 2)? No 100.0D

Olha só essa linha ai!!!


Eu vi isso, mas eu estava falando do code highlighting do GUJ. O “100” ficou de uma cor e o “.0D” de outra. :slight_smile:

S

Essa eu achei no screeencast do Netbeans profiler (muito bom, por sinal).

Lá no finalzinho do vídeo, temos o código:

if (maxValue_ <= 1000000) { this.primeNumbers.completeResults_.put(candidates_, candidates_); }

O valor é a própria chave :lol:

victorwss
function isAlfaNumeric( value)
{
	return isAlfaOrAlfaNumeric( value, true);
}

function isAlfa( value)
{
	return isAlfaOrAlfaNumeric( value, false);
}

function isAlfaOrAlfaNumeric( value, alfanumeric)
{
	var valor= String(value);
	//--
	var acentosMinusc= '������������';
	var acentosMaiusc= '������������';
	var reNumeric= new RegExp("[0-9]");
	var reAlfa= new RegExp("[A-Za-z]");
	for( var i=0; i< valor.length; i++)
	{
		var letra= new String(valor.charAt(i));
		if( !reAlfa.test(letra)) 
		{
			if( (acentosMinusc.indexOf(letra) == -1) &&
				 (acentosMaiusc.indexOf(letra) == -1))
			{
				if(alfanumeric) // Se tipo e' alfanumerico, ainda pode ser numero.
				{
					if( !reNumeric.test(letra)) return false;
				}else return false;                                
			}
		}
	}
	return true;
}
B

victorwss:

O mais impressionante é que quem fez isso sabe que Expressões Regulares existem.

danieldestro

É como você comprar uma TV LG Time Machine, que grava até 30 horas de vídeo na própria TV. Aí você compra um gravador VHS para gravar seus programas preferidos… kkkkkk…

peerless

ivo costa:
Esse aqui é ótimo, achei no framework da empresa que eu trabalho, não sei se o peerles ainda trabalha aqui mas se ele procurar um pouco vai achar tbm:

o interessante é que esse código não pra um açougue, é para uma empresa grande e conhecida!
o interessante 2 é que eu não tenho permissão pra arrumar esse e outros códigos!

Um método deprecated mandando chamar um método que chama o método deprecated!!!

/**
   * Informa a quantidade de registros que o ALGUMACOISAAQUI possui.
   *
   * *** Não deve ser utilizado ***
   * @return int
   * @deprecated Este método é interno do ALGUMACOISAAQUI e não deve ser utilizado. Utilize o método getSize().
   */
  public int getValuesSize()
  {
    return (values != null) ? values.size() : 0;
  }
  
  public int getSize()
  {
    return getValuesSize();
  }

Eu fui conversar com o cara responsável por essa classe e ele deu uma desconversada…

HAHAHAHA!

Não uso isso aí não, ainda bem!

[]s

ivo_costa

peerless:
ivo costa:
Esse aqui é ótimo, achei no framework da empresa que eu trabalho, não sei se o peerles ainda trabalha aqui mas se ele procurar um pouco vai achar tbm:

o interessante é que esse código não pra um açougue, é para uma empresa grande e conhecida!
o interessante 2 é que eu não tenho permissão pra arrumar esse e outros códigos!

Um método deprecated mandando chamar um método que chama o método deprecated!!!

/**
   * Informa a quantidade de registros que o ALGUMACOISAAQUI possui.
   *
   * *** Não deve ser utilizado ***
   * @return int
   * @deprecated Este método é interno do ALGUMACOISAAQUI e não deve ser utilizado. Utilize o método getSize().
   */
  public int getValuesSize()
  {
    return (values != null) ? values.size() : 0;
  }
  
  public int getSize()
  {
    return getValuesSize();
  }

Eu fui conversar com o cara responsável por essa classe e ele deu uma desconversada…

HAHAHAHA!

Não uso isso aí não, ainda bem!
[]s

Como assim não usa? Tu não trabalha mais aqui?

peerless

Nao eh nenhuma gambi, mas foi achado na classe JdkVersion, do core do Spring:

static { javaVersion = System.getProperty("java.version"); // version String should look like "1.4.2_10" if (javaVersion.indexOf("1.7.") != -1) { majorJavaVersion = JAVA_17; } else if (javaVersion.indexOf("1.6.") != -1) { majorJavaVersion = JAVA_16; } else if (javaVersion.indexOf("1.5.") != -1) { majorJavaVersion = JAVA_15; } else { majorJavaVersion = JAVA_14; } }

A preguiça deve ser tanta de atualizar esta classe, que eles até andam com uma versão para frente. hehe! (Claro, eh melhor do que (!) continuar considerando a versão 1.4 em caso de esquecimento de uma atualização aí.

peerless

ivo costa:
peerless:
ivo costa:
Esse aqui é ótimo, achei no framework da empresa que eu trabalho, não sei se o peerles ainda trabalha aqui mas se ele procurar um pouco vai achar tbm:

o interessante é que esse código não pra um açougue, é para uma empresa grande e conhecida!
o interessante 2 é que eu não tenho permissão pra arrumar esse e outros códigos!

Um método deprecated mandando chamar um método que chama o método deprecated!!!

/**
   * Informa a quantidade de registros que o ALGUMACOISAAQUI possui.
   *
   * *** Não deve ser utilizado ***
   * @return int
   * @deprecated Este método é interno do ALGUMACOISAAQUI e não deve ser utilizado. Utilize o método getSize().
   */
  public int getValuesSize()
  {
    return (values != null) ? values.size() : 0;
  }
  
  public int getSize()
  {
    return getValuesSize();
  }

Eu fui conversar com o cara responsável por essa classe e ele deu uma desconversada…

HAHAHAHA!

Não uso isso aí não, ainda bem!
[]s

Como assim não usa? Tu não trabalha mais aqui?

Trabalho, mas não com este framework…

Andre_Fonseca

:smiley:

if (strMsg = "") { System.out.println("Erro!!"); Thread.sleep(6000); continue; }

Leozin

André Fonseca:
:smiley:

if (strMsg = "") { System.out.println("Erro!!"); Thread.sleep(6000); continue; }

Isso nem compila hehehe

MrDataFlex

peerless:
Na faculdade, uma colega minha escreveu:

for i := 1 to 0 do begin ... end;

hehe… imagino o i, saindo todo empolgado para fazer o loop e… caploft!

Não, ela não pensou em usar downto. Era apenas uma inrolação em um trabalho de faculdade, para dizer que “fez” algo no caderno…

ahuahahuhua

andrepestana

Um DAO bem estranho:

public UsuarioTO getTO(ResultSet rs) throws Exception {
		
		UsuarioTO to = new UsuarioTO();
		int c;
		for( int i = 0; i < rs.getMetaData().getColumnCount(); i++){
			c = i + 1;
			if( "CODIGO".equalsIgnoreCase(rs.getMetaData().getColumnName(c))){
				to.setCodigo(rs.getInt(c));
			}else if( "NOME".equalsIgnoreCase(rs.getMetaData().getColumnName(c))){
				to.setNome(rs.getString(c));
			}else if( "NUM_REGISTRO".equalsIgnoreCase(rs.getMetaData().getColumnName(c))){
				to.setCodRegistro(rs.getInt(c));
			}else if( "EMAIL".equalsIgnoreCase(rs.getMetaData().getColumnName(c))){
				to.setEmail(rs.getString(c));

			//... milhões de else ifs

			}
		}
		return to;
	}

hehehe…

Banzai10

Erros classicos

if(clause == true){ //Primeiro erro
  result = true; //Segundo
}
else{
  result = false; //Terceiro
}

Meu blog: Felipe Lopes

danieldestro

Pattern: LANÇA CHAMAS EXCEPTION

/** * Método que gera a primeira parte do Relatório. * @param codNegocio <b>Long </b> - Código do Negócio * @throws ClienteNaoEncontradoException * @throws DadosContatoClienteNaoEncontradoException * @throws NegocioNaoEncontradoException * @throws ModuloProdutoNaoEncontradoException * @throws MoedaNaoEncontradaException * @throws ParseException * @throws RegistroNaoEncontradoException * @throws ParametroInvalidoException * @throws ItemNaoEncontradoException * @throws NegocioInvalidoException * @throws IOException * @throws JRException * @return byte */ public byte[] geraRelatorio(Long codNegocio)throws ClienteNaoEncontradoException, DadosContatoClienteNaoEncontradoException, NegocioNaoEncontradoException, ModuloProdutoNaoEncontradoException, MoedaNaoEncontradaException, ParseException, RegistroNaoEncontradoException, ParametroInvalidoException, ItemSeguradoNaoEncontradoException, NegocioInvalidoException, IOException, JRException;

danieldestro

Código tosco:

public void setId(String id) { if ( id == null) { this.id = null; } else if (id.length() == 0) { this.id = id; } else { this.id = StringUtil.lpad(id, '0', 4); } }

Código melhorado:

public void setId(String id) { if ( id != null && id.length()>0 ) { this.id = StringUtil.lpad(id, '0', 4); } else { this.id = id; } }

Mesmo assim, o POGramador misturou lógica de apresentação (formatação) com classe do modelo de negócio.

* salvo engano se esta é uma regra de negócio.

danieldestro

Possivelmente do mesmo POGramador:

public static String padin(String txt) { if (txt == null) { return null; } if (txt.length() == 0) { return txt; } return StringUtil.lpad(txt, '0', 5); }

A little help later:

public static String padin(String txt) { if (txt == null || txt.length() == 0) { return txt; } return StringUtil.lpad(txt, '0', 5); }

G
if ( isEmpty( compl ) ? false : compl.trim().length() > 0 ) {
danieldestro

Affffff

public String retornarSituacao(String situacao) {

        if (Constantes.SITUACAO_AJUSTE_PEN.equalsIgnoreCase(situacao)) {
            return Constantes.DESC_SITUACAO_PEN;

        } else if (Constantes.SITUACAO_AJUSTE_REC.equalsIgnoreCase(situacao)) {
            return Constantes.DESC_SITUACAO_REC;

        } else if (Constantes.SITUACAO_AJUSTE_LIB.equalsIgnoreCase(situacao)) {
            return Constantes.DESC_SITUACAO_LIB;

        } else if (Constantes.SITUACAO_AJUSTE_AJU.equalsIgnoreCase(situacao)) {
            return Constantes.DESC_SITUACAO_AJU;

        } else {
            return situacao;

        }
    }
luistiagos

para mim nada supera o famoso:

where 1=1
nbluis

luistiagos:
para mim nada supera o famoso:

where 1=1


Então você nunca viu aqueles.

"select *";
"from [tabelas]";
"where " + filtro1 + " is null or campo = " + filtro1;
"and " + filtro2 + " is null or campo2 = " + filtro2;

Isso é de doer…

peerless
danieldestro:
Affffff
public String retornarSituacao(String situacao) {

        if (Constantes.SITUACAO_AJUSTE_PEN.equalsIgnoreCase(situacao)) {
            return Constantes.DESC_SITUACAO_PEN;

        } else if (Constantes.SITUACAO_AJUSTE_REC.equalsIgnoreCase(situacao)) {
            return Constantes.DESC_SITUACAO_REC;

        } else if (Constantes.SITUACAO_AJUSTE_LIB.equalsIgnoreCase(situacao)) {
            return Constantes.DESC_SITUACAO_LIB;

        } else if (Constantes.SITUACAO_AJUSTE_AJU.equalsIgnoreCase(situacao)) {
            return Constantes.DESC_SITUACAO_AJU;

        } else {
            return situacao;

        }
    }

Else Forever Design Pattern

ramilani12
danieldestro:
Affffff
public String retornarSituacao(String situacao) {

        if (Constantes.SITUACAO_AJUSTE_PEN.equalsIgnoreCase(situacao)) {
            return Constantes.DESC_SITUACAO_PEN;

        } else if (Constantes.SITUACAO_AJUSTE_REC.equalsIgnoreCase(situacao)) {
            return Constantes.DESC_SITUACAO_REC;

        } else if (Constantes.SITUACAO_AJUSTE_LIB.equalsIgnoreCase(situacao)) {
            return Constantes.DESC_SITUACAO_LIB;

        } else if (Constantes.SITUACAO_AJUSTE_AJU.equalsIgnoreCase(situacao)) {
            return Constantes.DESC_SITUACAO_AJU;

        } else {
            return situacao;

        }
    }

Nada que enum poderia resolver com swicth, ou esse codigo legado java 1.4?

danieldestro

Código novo.
Mas tem algo errado, pois ele compara com “equalIgnoreCase”. Se tivesse pensado mais, faria algo que não precisaria desses IFs à toa ai.

B

danieldestro:
Código novo.
Mas tem algo errado, pois ele compara com “equalIgnoreCase”. Se tivesse pensado mais, faria algo que não precisaria desses IFs à toa ai.

Faltou classe ao programador. 8)

peerless

Será que ele leu o livro traduzido sobre padrões de projeto e isso aí eh um pseudo-factory ? :slight_smile:

danieldestro
public enum Situacao {
    EmProcessamento(Long.parseLong("1")),
    Processado(Long.parseLong("2")),
    Pendente(Long.parseLong("3")),
    ComErro(Long.parseLong("4"));

    private final Long codigo;

    SituacaoMovimento(Long codigo) {
        this.codigo = codigo;
    }

    public Long codigo() {
        return codigo;
    }
}
Qual o problema de se fazer:
EmProcessamento(1L)
???
danieldestro
String SQL =  " SELECT  " + " mp.COD,  " + " mp.SEQUENCIA,  " + " mp.DESCRICAO  " +  " FROM  " + " PRODUTO mp";

Para que criar apenas um objeto String quando podemos fazer o milagre da multiplicação?

S

Putz, que ridículo esse da String. Será que ele acha mais claro essas concatenações?

T

Acredito que isso era originalmente formatado assim,

String SQL =  " SELECT  " 
                 + " mp.COD,  " 
                 + " mp.SEQUENCIA,  " 
                 + " mp.DESCRICAO  " 
                 +  " FROM  " 
                 + " PRODUTO mp";

mas aí alguém que foi fazer a manutenção usou o Ctrl+Shift+F (Auto-format do Eclipse) ou coisa parecida, e acabou ficando desse jeito. De qualquer maneira, isso indica que falta no Java o seguinte recurso do C# (as strings com “@”, que aceitam “” e outros caracteres de escape sem problemas. ) Já foi proposto que isso fosse incluído no Java, mas como de costume isso está engavetado, embora seja particularmente simples de implementar.

string SQL = @"SELECT
    mp.COD,
    mp.SEQUENCIA,
    mp.DESCRICAO
FROM 
    PRODUTO mp";
danieldestro

thingol, acho que isso é extremamente importante, principalmente para quem tem que trabalhar com SQL e/ou JDBC.

Alguém aqui conheceu a (droga do) SQLJ da Oracle? Ele ao menos facilitava isso. Curiosamente foi meu primeiro post no GUJ, há mais de 6 anos.

http://www.guj.com.br/posts/list/61.java

B

Meu amigo é um ótimo desenvolvedor, mas ele devia estar com a cabeça cheia no dia :smiley:

//entrada: yyyyMMdd private Date formatarData(String dataStr) throws ParseException { // Reposiciona a data yyyyMMdd para dd/MM/yyyy String regex = "(\d{4})(\d{2})(\d{2})"; String dataFmt = dataStr.replaceAll(regex, "$3/$2/$1"); SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy"); return sdf.parse(dataFmt); }

Leozin

danieldestro:
thingol, acho que isso é extremamente importante, principalmente para quem tem que trabalhar com SQL e/ou JDBC.

Alguém aqui conheceu a (droga do) SQLJ da Oracle? Ele ao menos facilitava isso. Curiosamente foi meu primeiro post no GUJ, há mais de 6 anos.

http://www.guj.com.br/posts/list/61.java

Nossa eu já usei… caramba, era triste

E o pior que, pelo menos na época, era a única maneira da gente conseguir chamar uma procedure que retornava um VC_ARR da package.

Depois descobri como fazer isso fora do SQLJ com uma API da Oracle from Hell e deu certo. Mas SQLJ nunca mais! Por favor…

dlt

Abstração máxima:
Já vi um método que se chamava executaCoisa()

GALACTUS

E EU quando comecei a programar Java EU tinha cabado de aprender o laço for e então cai na bestera de fazer isso:

int n1=0;
int i;
String n2="";
 for(i=1;i>n1;i++)

n2+=i+"\n";

JOptionPane.showMessageDialog(null,n2,"RESULTADO",JOptionPane.WARNING_MESSAGE);

Meu computador quase explodiu.

E

Bruno Laturner:
Meu amigo é um ótimo desenvolvedor, mas ele devia estar com a cabeça cheia no dia :smiley:

//entrada: yyyyMMdd private Date formatarData(String dataStr) throws ParseException { // Reposiciona a data yyyyMMdd para dd/MM/yyyy String regex = "(\d{4})(\d{2})(\d{2})"; String dataFmt = dataStr.replaceAll(regex, "$3/$2/$1"); SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy"); return sdf.parse(dataFmt); }

Na boa cara…Eu acho que deixei passar o problema deste código :shock:

danieldestro

//entrada: yyyyMMdd private Date formatarData(String dataStr) throws ParseException { SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); return sdf.parse(dataStr); }

Simples!

E

//entrada: yyyyMMdd private Date formatarData(String dataStr) throws ParseException { SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); return sdf.parse(dataStr); }

Simples!

Pois é…É que eu não estava familiarizado o suficiente com as funcionalidades oferecidas pelo SimpleDateFormat…Mancada minha… :oops:

danieldestro

Quando a gente acha que já viu de tudo… tem alguém que se supera:

public static Timestamp obterTimestampPorDataDDMMYYYY(String stData) { SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy"); String strDate; Timestamp dataTimestamp; try { if (new SimpleDateFormat("dd/MM/yyyy").format(sdf.parse(stData)).equals(stData)) { strDate = new SimpleDateFormat("dd-MM-yyyy 00:00:00").format(sdf.parse(stData)); dataTimestamp = new Timestamp(new SimpleDateFormat("dd-MM-yyyy HH:mm:ss").parse(strDate).getTime()); } else { dataTimestamp = null; } } catch (ParseException e) { dataTimestamp = null; } catch (Exception e) { dataTimestamp = null; } return dataTimestamp; }

Nem tentem entender o código acima. Vamos ver o que ele, simplesmente, queria:

public static Timestamp obterTimestampPorDataDDMMYYYY(String stData) { SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy"); try { return new Timestamp(sdf.parse(strDate).getTime()); } catch (Exception e) { return null; } }

danieldestro

O que ele disse:

private Date getDataAtual(){
        
        String dataString = DateUtil.formataData(new Date());
        
        DateFormat dfm = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
        
        try{
            return dfm.parse(dataString + " " + "00:00:00");
        }catch(ParseException e) {
             throw new RuntimeException(e);
        }
            
    }

O que ele quis dizer:

Date dt = new Date();

labbati

E este então:

boolean b = isFuncionario();

if(b == true){

return true;

}else{

if(b==false){

return false;

}

}

renatosilva

Indo direto ao ponto:

peerless

Detalhe pro “avia” e outro detalhe: eh impressão minha ou a transação ta ganhando um begin ali embaixo ? :smiley:

peerless

Eu vi um:

catch (StringIndexOutOfBoundException e)

sexta feira, no trabalho.

B
danieldestro:
O que ele disse:
private Date getDataAtual(){
        
        String dataString = DateUtil.formataData(new Date());
        
        DateFormat dfm = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
        
        try{
            return dfm.parse(dataString + " " + "00:00:00");
        }catch(ParseException e) {
             throw new RuntimeException(e);
        }
            
    }

O que ele quis dizer:

Date dt = new Date();

Não é a mesma coisa, o dele pega a meia noite do dia de hoje, new Date pega até o milésimo corrente.

victorwss
/*
	 * Descobre se sobra resto na divisão
	 */
	public static boolean isDivisionExact(int varDividendo, int varDivisor) {
		boolean auxReturn = false;

		int x = Math.abs(varDividendo/varDivisor);
		if (x * varDivisor == varDividendo){
			auxReturn = true;
		}

		return auxReturn;
	}
lcegatti
//while filosófico
while(true != false) {
 ......

pelo menos me fez dar umas risada na hora rs

peerless

lcegatti:
//while filosófico while(true != false) { ......

pelo menos me fez dar umas risada na hora rs

Sei lá. Acho tão idiota que não tem a mínima graça! :smiley:

lcegatti

peerless:
lcegatti:
//while filosófico while(true != false) { ......

pelo menos me fez dar umas risada na hora rs

Sei lá. Acho tão idiota que não tem a mínima graça! :D

rsrsrs é que vc não viu o que tinha antes :shock: , infelizmente eu não lembro para colocar aqui :cry: :?

dlt

[edit]me arrependi do meu comentário :P[/edit]

L
if (condicao) {
     
// nao faz nada!!

}else{

// aqui entra o q ele queria
}

e mais tosco ainda foi q tinha comentado isso mesmo dentro do IF...(nao faz nada)...ahuahauhaahau

acho q ele queria um simples if(!condicao){}

deu pra da umas risadas...

M

Esta é Fresquinha, recebi hoje de um amigo que está aprendendo Java! E eu só o perdoei por isto e também porque ele é gente fina! :P
Na verdade, sem querer ele implementou um Design pathern da POG: "Nonsense flag"!

public class Execicio2 {

    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);

        int i = 0;
       
       
        while (i != 0) {
            System.out.print("digite um numero: ");
            i = s.nextInt();

            if (i == 1) {
                System.out.println("hoje é domingo");

            }
            if (i == 2) {
                System.out.println("hoje é segunda");

            }
            if (i == 3) {
                System.out.println("hoje é terça");

            }
            if (i == 4) {
                System.out.println("hoje é quarta");

            }
            if (i == 5) {
                System.out.println("hoje é quinta");

            }
            if (i == 6) {
                System.out.println("hoje é sexta");

            }
            if (i == 7) {
                System.out.println("hoje é sábado");

            }
            if (i > 7) {
                System.out.println("não é um dia da semana");

           
          }
        }

Aquele abraço!

T

Ele até fez Sombreamento sem querer!

AUHUAHuAHuAHuAHUAuAHAUHAUhAUhA

Exercicio2 então isso é normal hahahahhahaha

peczenyj

Olha… pelo menos esse cara aprendeu para que serve o if =)
Ele pode evoluir para if / else, switch, uma lista de dias indexada, polimorfismo, etc.

Pior é ver esse tipo de código para coisa mais séria.

Me lembro de um programa em pascal cheio de ifs aninhados pq eu não conhecia AND e OR :confused:

Jeanioz

Ah, as primeiras aulas de programação… a gente era feliz e não sabia…

danieldestro

Grandes DBAs:

SELECT A.* FROM TABELA_LEGAL A WHERE TO_DATE(A.DT_INICO_VIGEN,'dd/mm/YYYY') <= TO_DATE(SYSDATE,'dd/mm/YYYY')

E ai matam os índices, performance e o banco.

danieldestro

Iterator, for… pra que servem?
Nããããão, vamos engessar por índice mesmo:

public void atualizarAntigoAtualizarNovoXpto(List listaXpto){ bean.atualizarXpto( (Xpto)listaXpto.get(0)); bean.atualizarXpto( (Xpto)listaXpto.get(1)); }

Ou se a idéia é fazer exatamente dois, então passe dois parâmetros.

ramilani12

Sem comentários…

// verifica o destino
    String acao = request.getParameter("acao");
    if (acao == null)
	     acao = "";
if (acao.equals(""))
{
	// pra não dar erro na primeira vez que abre...
} else if (acao.equals("carregar_projeto"))
{

} 
// e uma cadeia de if´s e else
Andre_Brito

Eu já fiz isso :X

mario.fts

quando eu li, não pude deixar de postar aqui…

Olha o que os caras estão fazendo pra pegar o MAX de uma coluna na tabela

int cont = 0;
try{
setSql("SELECT * FROM Est WHERE est=?");
ps = conn.prepareStatement(getSql());
ps.setString(1, getEst());
rs = ps.executeQuery();
while(rs.next()){
if(cont < rs.getInt("colunast"))
cont = rs.getInt("colunast");
}
}
catch(SQLException ex){
ex.printStackTrace();
}

aqui: http://www.guj.com.br/posts/list/107335.java

renatosilva

Por causa de um search errado, pensei que esse método era chamado em várias pártes do código. Fiquei imaginando qual a gambi que a JVM ou o compilador estaria fazendo pra lidar com isso:

public void update() {
		this.update();
	}
paulofafism

esse código e o mais tosco que ja vi

if (1==1){
//Exibe formuláriod e de crédito de clientes

}
victorwss

//Pula 3 linhas. for(i=0; i<3; i++) System.out.print("\n");

renatosilva

Programação absolutista:

int answer = JOptionPane.YES_OPTION;
if (answer != JOptionPane.YES_OPTION)...
Leozin

Ontem eu estava vendo um código de uma stored procedure, e numa parte do código estava assim:

/* Código temporário para processamento de XXXXXX /* código pl/sql

Aí um amigo meu que estava no meu lado falou: Cara, pode ter certeza que toda vez que você vê num código esse tipo de comentário (código temporário), pode ter certeza que isso ficará pra sempre assim.

E o pior é que ele tinha razão.

Isso que ele tem 19 anos e já tá no esquema.

Vivendo e aprendendo.

EDIT:

renato3110:
Por causa de um search errado, pensei que esse método era chamado em várias pártes do código. Fiquei imaginando qual a gambi que a JVM ou o compilador estaria fazendo pra lidar com isso:

public void update() {
		this.update();
	}

Esse é o algoritmo recursivo mais tosco que eu já vi :lol:

Não sei se tu sabe, mas no próprio código da JDK tem esse tipo de recursividade. Se você fala isso de um código simples, aposto que se você visse o código da JDK provavelmente já teria feito chapinha no cabelo, pintado o olho e com uma gilete cortando os pulsos

renatosilva

Como assim no JDK??? se você chamar um método desse dá StackOverflowError!

Leozin

amigo, eu estou em referindo ao CÓDIGO FONTE da JDK :stuck_out_tongue:

existe método lá (que por sinal, escrito pelo próprio Joshua Bloch) que é certeiro que vai dar um StackOverflowError :stuck_out_tongue:

Sparcx86

if (true) { . . .[i] (+1000 linhas de código)[/i] . . . } else { System.out.println("fudeu"); }
Realmente se algum dia eu ver fudeu no console é porque fudeu mesmo! :roll:

try { . . .} catch(Throwable t) { System.out.println("Falha de integração com o SICO"); }

Por algum motivo o sistema SICO sempre foi o culpado dos bugs do sistema, uma idéia muito inteligente por sinal. :wink:

renatosilva

Leozin:
amigo, eu estou em referindo ao CÓDIGO FONTE da JDK :stuck_out_tongue:

existe método lá (que por sinal, escrito pelo próprio Joshua Bloch) que é certeiro que vai dar um StackOverflowError :P

Poderia mostrar um?

Leozin

renato3110:
Leozin:
amigo, eu estou em referindo ao CÓDIGO FONTE da JDK :stuck_out_tongue:

existe método lá (que por sinal, escrito pelo próprio Joshua Bloch) que é certeiro que vai dar um StackOverflowError :P

Poderia mostrar um?

Eu olhei denovo aqui e não achei o que eu tinha visto uma vez…

mas achei esse aqui:

final protected void doRename(Name oldname, Name newname) throws NamingException { if (!setupMode) { throw new SchemaViolationException("Cannot rename a schema object"); } else { doRename(oldname, newname); } }

Fonte: com.sun.jndi.ldap.LdapSchemaCtx.java, linhas 143 à 150

T

Vou fazer uma pergunta indiscreta - que software você usou para determinar que um método é infinitamente recursivo? É que olhar os fontes do JDK é barra pesada, é coisa demais.

Sparcx86

Leozin:
renato3110:
Leozin:
amigo, eu estou em referindo ao CÓDIGO FONTE da JDK :stuck_out_tongue:

existe método lá (que por sinal, escrito pelo próprio Joshua Bloch) que é certeiro que vai dar um StackOverflowError :P

Poderia mostrar um?

Eu olhei denovo aqui e não achei o que eu tinha visto uma vez…

mas achei esse aqui:

final protected void doRename(Name oldname, Name newname) throws NamingException { if (!setupMode) { throw new SchemaViolationException("Cannot rename a schema object"); } else { doRename(oldname, newname); } }

Fonte: com.sun.jndi.ldap.LdapSchemaCtx.java, linhas 143 à 150


Se ele rodar em um thread separado acho q não há stackoverflow.

renatosilva

Mas o método sempre lança exceção (estouro de pilha ou a do ponto de saída) e também não tem sentido!

rmendes08

Bem, fora de um contexto isso é stack overflow sem dúvida, afinal o método chama ele mesmo, e o caso base depende de uma variável de instância que ele não modifica. Mas também não consigo pensar em um contexto em que isso esteja correto.

Sparcx86

Acho q o Leozin não está considerando o contexto do método. Como ele é executado?
COmo já disseram do jeito que está aí é stackoverflow na certa. A pilha estoura dentro de poucos ciclos já que vai se acumulando. Ah não ser, que haja alguma forma de liberar a pilha internamente, isso não levamos em consideração!
Fazer isso aí em uma classe Java dá pau na certa, mas por ser algo interno da VM pode ser que haja algo que libere a pilha evitando o stackoverflow.

Claro, só estou chutando! :wink:

danieldestro

public static final Long COD_CORRETOR_200000000 = 200000000L, COD_CORRETOR_299999999 = 299999999L, COD_CORRETOR_500000000 = 500000000L, COD_CORRETOR_599999999 = 599999999L;

fredbene

Como tratar excessões…
Obs: cellModel é um simples pojo tb.

try {
					........
				} catch (Exception e) {
					e.printStackTrace();
					cellModel.setCertificateValid(false);
				}
				try {
					cellModel.setCertificateValidationMessage("");
				} catch (Exception e) {
					cellModel.setCertificateValidationMessage("");
				}
				try {
					cellModel.setCertificateValidationShortMessage(""); 
				} catch (Exception e) {
					cellModel.setCertificateValidationShortMessage("");
				}
				try {
					cellModel.setCertificateValidSince(cert.getNotBefore());
				} catch (Exception e) {
					cellModel.setCertificateValidSince(null);
				}
				try {
					cellModel.setCertificateValidUntil(cert.getNotAfter());
				} catch (Exception e) {
					cellModel.setCertificateValidUntil(null);
				}
				try {
					cellModel.setLegalPersonName(((X500Name)cert.getSubjectDN()).getCommonName());
				} catch (Exception e) {
					cellModel.setLegalPersonName("");
				}
T

danieldestro:
public static final Long COD_CORRETOR_200000000 = 200000000L, COD_CORRETOR_299999999 = 299999999L, COD_CORRETOR_500000000 = 500000000L, COD_CORRETOR_599999999 = 599999999L;

Esse tipo de coisa costuma ocorrer quando é obrigatório usar algum programa como o PMD e/ou o CheckStyle e a regra “não usar números mágicos” está ligada. Como é difícil achar um nome decente para tais constantes, você acaba criando tais constantes com esses nomes malucos.

victorwss

Sparcx86:
Acho q o Leozin não está considerando o contexto do método. Como ele é executado?
COmo já disseram do jeito que está aí é stackoverflow na certa. A pilha estoura dentro de poucos ciclos já que vai se acumulando. Ah não ser, que haja alguma forma de liberar a pilha internamente, isso não levamos em consideração!
Fazer isso aí em uma classe Java dá pau na certa, mas por ser algo interno da VM pode ser que haja algo que libere a pilha evitando o stackoverflow.

Claro, só estou chutando! :wink:

O código é claro. O método verifica com um if o atributo setupMode e no else chama a si mesmo.
É certo que o doRename chama a si mesmo porque o método é final e tem a exata mesma assinatura, ou seja, não vai chamar nenhum método sobrescrito.
Não há código nativo. Não é um código de alguma classe que tem tratamento especial na JVM (tal como Class ou Enum). Não há geração dinâmica de bytecodes, reflection ou qualquer outra coisa que possa mudar o significado deste método.

Pode ser que haja um static import para alguma classe que tenha um método estático doRename. Mas mesmo assim, quando o compilador procurar doRename na tabela de símbolos, vai achar o método local.

O único caso onde isso talvez fizesse sentido seria se o atributo setupMode for volatile e ser modificada por outra thread enquanto o método é executado antes que ocorra o StackOverflowError. Mesmo se esse for o objetivo, seria uma forma extremamente podre, mal-feita, ineficiente e gambiarrosa de prover comunicação entre Threads. E o resultado é sempre OU um SchemaViolationException ou um StackOverflowError, portanto, o método nunca faz alguma coisa útil e SEMPRE falha.

Ou seja, este método é extremamente digno de estar neste tópico. :lol:

FelipeSN

int Desculpas = 0; while (Desculpas < 1000) { System.out.println("Desculpas"); }

Muitas vezes na faculdade, fazemos coisas que devemos nos orgulhar…
Essa não é uma das que eu me orgulho…
UASHAushAUHSAuhsaHUSAuhsa…

danieldestro

Instância da instância da instância da instância... do EJB.

@Stateless(name="EuSeiProgramar")
public class EuSeiProgramarBean implements EuSeiProgramar {

  @EJB
  private EuSeiProgramar seiSim;

  public void euFacoAlgoLegal( String valorImportante ) {
    // faz algo

    // pra que chamar o método do próprio EJB se eu posso chamar
    // o método de outro EJB??? Acho que dá maior escalabilidade!
    Double valor = seiSim.calculaUmValor( xpto );

    // faz mais um pouco
  }

  public Double calculaUmValor( String algoADeclarar ) {
    // não te interessa
    return valor;
  }
}
danieldestro

Novo Design Pattern - Enum Business Delegate:

package br.ALGUMA.SUPER.EMPRESA.delegate;

public enum Delegate {

  FORNECEDOR(JNDI_NAME_Fornecedor),
  CONVENIO(JNDI_NAME_Convenio),
  PRODUTO(JNDI_NAME_Produto),
  HISTORICO(JNDI_NAME_Historico),
  // alguns outros aqui
  ;

  /** caminho session. */
  private final String caminhoSession; // FINAL??? COMO ASSIM???

  /**
   * Instancia um novo delegate.
   * @param caminhoSession caminho session
  */
  private Delegate(String caminhoSession) {
    this.caminhoSession = caminhoSession;
  }

  /**
   * Gets  EJB.
   */
  public Object getEJB() {
    try {
      return ServiceLocator.getInstance().getEJB(caminhoSession);
    } catch (Exception e) {
      throw new RuntimeException("falha ao fazer o loockup do ejb", e);
      // loockup é um LOOKUP com hiccup (soluço)???
    }
  }
}

Fácil de usar:

Foobar foo = (FooBar) Delegate.FORNECEDOR.getEJB();
danieldestro

Achei que ZERO era um valor constante, descobri que não é!

/** Constantes utilitárias. */ public static final Double VALOR_DOUBLE_ZERO = 0.0; /** Constante utilitária. */ public static final Long VALOR_LONG_ZERO = 0L;

thiago.correa

mario.fts:
quando eu li, não pude deixar de postar aqui…

Olha o que os caras estão fazendo pra pegar o MAX de uma coluna na tabela

int cont = 0;
try{
setSql("SELECT * FROM Est WHERE est=?");
ps = conn.prepareStatement(getSql());
ps.setString(1, getEst());
rs = ps.executeQuery();
while(rs.next()){
if(cont < rs.getInt("colunast"))
cont = rs.getInt("colunast");
}
}
catch(SQLException ex){
ex.printStackTrace();
}

aqui: http://www.guj.com.br/posts/list/107335.java

Eu já vi ´"peor"

SELECT * FROM (Select * from esquema.tabela Order by nsu desc) Where rownum < 2

e depois ainda era acrescentado mais 1 ao resultado depois via código java
o código acima poderia ser facilmente trocado por

select max(nsu) +1 from esquema.tabela
danieldestro

SELECT MAX é, em geral, onde ocorrem muitos erros num sistema. Programadores inexperientes não se preocuparam (ou não conhecem) com os problemas de concorrência que isso pode ocasionar em muitos casos.

Leozin

caraaaaaca daniel, esse novo design pattern é muito show de bola hahahaha

victorwss

danieldestro:
Novo Design Pattern - Enum Business Delegate:

Bem, de certa forma esse “final” faz sentido. Enums mutáveis são aberrações muito grandes, que aliás ainda não vi neste tópico.

Agora quanto a “brilhante” idéia de usar um enum de delegates com um loockup eu não tenho o que comentar.

danieldestro

if ( DtInicoVigen.after(DtAtualPortal) ) { if (!DtInicoVigen().equals(DtAtualPortal) ) { Date dtFimVigencia = DateUtil.calculaNovaData(DtInicoVigen, 0, 0, 1); DtIniVigenciaMatriz(dtFimVigencia); } else { DtIniVigenciaMatriz(DtAtualPortal); } } else { DtIniVigenciaMatriz(DtAtualPortal); }

Além de errado ( after aninhado com equals ), o correto seria:

if ( DtInicoVigen.before(DtAtualPortal) || DtInicoVigen.equals(DtAtualPortal) ) { DtIniVigenciaMatriz(DtAtualPortal); } else { Date dtFimVigencia = DateUtil.calculaNovaData(DtInicoVigen, 0, 0, 1); DtIniVigenciaMatriz(dtFimVigencia); }

victorwss
Incrível função para validar se uma string é numérica:
function validanumero(numero) {

var valid = "[telefone removido]";
var ok = "yes";
var temp;

for (var i=0; i< numero.length; i++){
    temp = "" + numero.substring(i, i+1);

    if (valid.indexOf(temp) == "-1")
        ok = "no";
}

if (ok == "no")
return(false);

return(true);
}
danieldestro

Reinventando a roda.

O POGramador:

public int arredondarParaCima(double valor) {
        double valorInicial = 0;
        double valorFinal = 1;
        
        boolean faca = true;
        
        while (faca == true) {       
            
            if (valor >= valorInicial && valor <= valorFinal) {
                faca = false;
            } else {
                valorInicial++;
                valorFinal++;
            }
        }
        
        return (int) valorFinal;
    }

Eu:

double up = Math.ceil( valorDouble );
jingle

danieldestro:
Reinventando a roda.

O POGramador:

<blockquote>    public int arredondarParaCima(double valor) {

double valorInicial = 0;

double valorFinal = 1;
boolean faca = true;
    
    while (faca == true) {       
        
        if (valor &gt;= valorInicial && valor &lt;= valorFinal) {
            faca = false;
        } else {
            valorInicial++;
            valorFinal++;
        }
    }
    
    return (int) valorFinal;
}</blockquote>

Eu:

isso só pode ser exercicio academico!!! não tem outra explicação :!:

fantomas

Não ia postar esta mas depois de ler os post de vcs me decidi; toma esta aqui:

// Sem isso, o for acima faz pular um
// elemento
if (!tbDestino.equals("TBPESSOA"))
   i--;

Detalhe, possui várias linhas deste tipo dentro de um statement while com mais de 800 linhas dentro :shock:

Caras...toda vez que vejo o comentario deste código eu fico sem palavras, é muita emoção.

flws

T
victorwss:
Incrível função para validar se uma string é numérica:
function validanumero(numero) {

var valid = "[telefone removido]";
var ok = "yes";
var temp;

for (var i=0; i< numero.length; i++){
    temp = "" + numero.substring(i, i+1);

    if (valid.indexOf(temp) == "-1")
        ok = "no";
}

if (ok == "no")
return(false);

return(true);
}

Essa foi demais!

Mauricio_Linhares

Escolhendo botões pra mostrar numa caixa de diálogo (ou “returns” nunca são o suficiente):

[code=java]public class MessageDialogUtils {

public static MessageDialogButton[] buttonsTreatment(

		MessageDialogButton... buttons) {



	MessageDialogButton[] temporaryButtons = buttons;



	int i = 0;



	switch (temporaryButtons[i]) {



	case OK:

		if (i + 1 < temporaryButtons.length) {

			if (temporaryButtons[i + 1]

					.compareTo(MessageDialogButton.CANCEL) == 0) {

				return new MessageDialogButton[] { MessageDialogButton.OK,

						MessageDialogButton.CANCEL };

			} else {

				return new MessageDialogButton[] { MessageDialogButton.OK };

			}

		} else {

			return new MessageDialogButton[] { MessageDialogButton.OK };

		}



	case YES:

		if (i + 1 < temporaryButtons.length) {

			// botao

			if (temporaryButtons[i + 1].compareTo(MessageDialogButton.NO) == 0) {

				if (i + 2 < temporaryButtons.length) {

					// botao

					if (temporaryButtons[i + 2]

							.compareTo(MessageDialogButton.CANCEL) == 0) {

						return new MessageDialogButton[] {

								MessageDialogButton.YES,

								MessageDialogButton.NO,

								MessageDialogButton.CANCEL };

					} else {

						return new MessageDialogButton[] { MessageDialogButton.OK };

					}

				} else {

					return new MessageDialogButton[] {

							MessageDialogButton.YES, MessageDialogButton.NO };

				}

			} else if (temporaryButtons[i + 1]

					.compareTo(MessageDialogButton.CANCEL) == 0) {

				if (i + 2 < temporaryButtons.length) {

					if (temporaryButtons[i + 2]

							.compareTo(MessageDialogButton.NO) == 0) {

						return new MessageDialogButton[] {

								MessageDialogButton.YES,

								MessageDialogButton.NO,

								MessageDialogButton.CANCEL };

					} else {

						return new MessageDialogButton[] { MessageDialogButton.OK };

					}

				} else {

					return new MessageDialogButton[] { MessageDialogButton.OK };

				}

			} else {

				return new MessageDialogButton[] { MessageDialogButton.OK };

			}

		} else {

			return new MessageDialogButton[] { MessageDialogButton.OK };

		}



	case NO:

		if (i + 1 > temporaryButtons.length) {



			if (temporaryButtons[i + 1].compareTo(MessageDialogButton.YES) == 0) {



				if (i + 2 > temporaryButtons.length) {



					if (temporaryButtons[i + 2]

							.compareTo(MessageDialogButton.CANCEL) == 0) {

						return new MessageDialogButton[] {

								MessageDialogButton.YES,

								MessageDialogButton.NO,

								MessageDialogButton.CANCEL };

					} else {

						return new MessageDialogButton[] { MessageDialogButton.OK };

					}



				} else {

					return new MessageDialogButton[] {

							MessageDialogButton.YES, MessageDialogButton.NO };

				}



			} else if (temporaryButtons[i + 1]

					.compareTo(MessageDialogButton.CANCEL) == 0) {



				if (i + 2 > temporaryButtons.length) {



					if (temporaryButtons[i + 2]

							.compareTo(MessageDialogButton.YES) == 0) {

						return new MessageDialogButton[] {

								MessageDialogButton.YES,

								MessageDialogButton.NO,

								MessageDialogButton.CANCEL };

					} else {

						return new MessageDialogButton[] { MessageDialogButton.OK };

					}

				} else {

					return new MessageDialogButton[] { MessageDialogButton.OK };

				}

			} else {

				return new MessageDialogButton[] { MessageDialogButton.OK };

			}

		} else {

			return new MessageDialogButton[] { MessageDialogButton.OK };

		}



	case CANCEL:

		if (i + 1 < temporaryButtons.length) {



			if (temporaryButtons[i + 1]

					.compareTo(MessageDialogButton.RETRY) == 0) {

				if (i + 2 > temporaryButtons.length) {

					return new MessageDialogButton[] { MessageDialogButton.OK };

				} else {

					return new MessageDialogButton[] {

							MessageDialogButton.RETRY,

							MessageDialogButton.CANCEL };

				}

			} else if (temporaryButtons[i + 1]

					.compareTo(MessageDialogButton.OK) == 0) {

				if (i + 2 > temporaryButtons.length) {

					return new MessageDialogButton[] { MessageDialogButton.OK };

				} else {

					return new MessageDialogButton[] {

							MessageDialogButton.OK,

							MessageDialogButton.CANCEL };

				}

			} else if (temporaryButtons[i + 1]

					.compareTo(MessageDialogButton.YES) == 0) {



				if (i + 2 > temporaryButtons.length) {

					if (temporaryButtons[i + 2]

							.compareTo(MessageDialogButton.NO) == 0) {

						return new MessageDialogButton[] {

								MessageDialogButton.YES,

								MessageDialogButton.NO,

								MessageDialogButton.CANCEL };

					} else {

						return new MessageDialogButton[] { MessageDialogButton.OK };

					}

				} else {

					return new MessageDialogButton[] { MessageDialogButton.OK };

				}

			} else if (temporaryButtons[i + 1]

					.compareTo(MessageDialogButton.NO) == 0) {

				if (i + 2 > temporaryButtons.length) {

					if (temporaryButtons[i + 2]

							.compareTo(MessageDialogButton.YES) == 0) {

						return new MessageDialogButton[] {

								MessageDialogButton.YES,

								MessageDialogButton.NO,

								MessageDialogButton.CANCEL };

					} else {

						return new MessageDialogButton[] { MessageDialogButton.OK };

					}

				} else {

					return new MessageDialogButton[] { MessageDialogButton.OK };

				}

			}

		} else {

			return new MessageDialogButton[] { MessageDialogButton.OK };

		}



	case ABORT:

		if (i + 1 < temporaryButtons.length) {



			if (temporaryButtons[i + 1]

					.compareTo(MessageDialogButton.RETRY) == 0) {



				if (i + 2 < temporaryButtons.length) {



					if (temporaryButtons[i + 2]

							.compareTo(MessageDialogButton.IGNORE) == 0) {

						return new MessageDialogButton[] {

								MessageDialogButton.ABORT,

								MessageDialogButton.RETRY,

								MessageDialogButton.IGNORE };

					} else {

						return new MessageDialogButton[] { MessageDialogButton.OK };

					}

				} else {

					return new MessageDialogButton[] { MessageDialogButton.OK };

				}



			} else if (temporaryButtons[i + 1]

					.compareTo(MessageDialogButton.IGNORE) == 0) {



				if (i + 2 < temporaryButtons.length) {

					if (temporaryButtons[i + 2]

							.compareTo(MessageDialogButton.RETRY) == 0) {

						return new MessageDialogButton[] {

								MessageDialogButton.ABORT,

								MessageDialogButton.RETRY,

								MessageDialogButton.IGNORE };

					} else {

						return new MessageDialogButton[] { MessageDialogButton.OK };

					}



				} else {

					return new MessageDialogButton[] { MessageDialogButton.OK };

				}

			}

		} else {

			return new MessageDialogButton[] { MessageDialogButton.OK };

		}



	case RETRY:

		if (i + 1 < temporaryButtons.length) {



			if (temporaryButtons[i + 1]

					.compareTo(MessageDialogButton.ABORT) == 0) {



				if (i + 2 < temporaryButtons.length) {



					if (temporaryButtons[i + 2]

							.compareTo(MessageDialogButton.IGNORE) == 0) {

						return new MessageDialogButton[] {

								MessageDialogButton.ABORT,

								MessageDialogButton.RETRY,

								MessageDialogButton.IGNORE };

					} else {

						return new MessageDialogButton[] { MessageDialogButton.OK };

					}



				} else {

					return new MessageDialogButton[] { MessageDialogButton.OK };

				}



			} else if (temporaryButtons[i + 1]

					.compareTo(MessageDialogButton.IGNORE) == 0) {



				if (i + 2 < temporaryButtons.length) {



					if (temporaryButtons[i + 2]

							.compareTo(MessageDialogButton.ABORT) == 0) {

						return new MessageDialogButton[] {

								MessageDialogButton.ABORT,

								MessageDialogButton.RETRY,

								MessageDialogButton.IGNORE };

					} else {

						return new MessageDialogButton[] { MessageDialogButton.OK };

					}



				} else {

					return new MessageDialogButton[] { MessageDialogButton.OK };

				}



			} else if (temporaryButtons[i + 1]

					.compareTo(MessageDialogButton.CANCEL) == 0) {



				if (i + 2 > temporaryButtons.length) {

					return new MessageDialogButton[] { MessageDialogButton.OK };

				} else {

					return new MessageDialogButton[] {

							MessageDialogButton.RETRY,

							MessageDialogButton.CANCEL };

				}



			}

		} else {

			return new MessageDialogButton[] { MessageDialogButton.OK };

		}



	case IGNORE:

		if (i + 1 < temporaryButtons.length) {



			if (temporaryButtons[i + 1]

					.compareTo(MessageDialogButton.RETRY) == 0) {



				if (i + 2 < temporaryButtons.length) {



					if (temporaryButtons[i + 2]

							.compareTo(MessageDialogButton.ABORT) == 0) {

						return new MessageDialogButton[] {

								MessageDialogButton.ABORT,

								MessageDialogButton.RETRY,

								MessageDialogButton.IGNORE };

					} else {

						return new MessageDialogButton[] { MessageDialogButton.OK };

					}



				} else {

					return new MessageDialogButton[] { MessageDialogButton.OK };

				}



			} else if (temporaryButtons[i + 1]

					.compareTo(MessageDialogButton.ABORT) == 0) {



				if (i + 2 < temporaryButtons.length) {



					if (temporaryButtons[i + 2]

							.compareTo(MessageDialogButton.RETRY) == 0) {

						return new MessageDialogButton[] {

								MessageDialogButton.ABORT,

								MessageDialogButton.RETRY,

								MessageDialogButton.IGNORE };

					} else {

						return new MessageDialogButton[] { MessageDialogButton.OK };

					}



				} else {

					return new MessageDialogButton[] { MessageDialogButton.OK };

				}



			} else {

				return new MessageDialogButton[] { MessageDialogButton.OK };

			}



		}

		break;



	}

	return new MessageDialogButton[] { MessageDialogButton.OK };

}

}
victorwss

What a F_CK is this? :shock:

peczenyj

What a F_CK is this? :shock:

Fortran + Swing.

B
victorwss:
Mauricio Linhares:
...

What a porra is this? :shock:

public class MessageDialogUtils {

  private static Collection<MessageDialogButton> OK_CANCEL;
  private static Collection<MessageDialogButton> YES_NO;
  private static Collection<MessageDialogButton> YES_NO_CANCEL;
  private static Collection<MessageDialogButton> RETRY_CANCEL;
  private static Collection<MessageDialogButton> ABORT_RETRY_IGNORE;
  
  static {
    OK_CANCEL = new ArrayList<MessageDialogButton>();
    OK_CANCEL.add(MessageDialogButton.OK);
    OK_CANCEL.add(MessageDialogButton.CANCEL);

    YES_NO = new ArrayList<MessageDialogButton>();
    YES_NO.add(MessageDialogButton.YES);
    YES_NO.add(MessageDialogButton.NO);

    YES_NO_CANCEL = new ArrayList<MessageDialogButton>(YES_NO);
    YES_NO_CANCEL.add(MessageDialogButton.CANCEL);

    RETRY_CANCEL = new ArrayList<MessageDialogButton>();
    RETRY_CANCEL.add(MessageDialogButton.RETRY);
    RETRY_CANCEL.add(MessageDialogButton.CANCEL);

    ABORT_RETRY_IGNORE = new ArrayList<MessageDialogButton>();
    ABORT_RETRY_IGNORE.add(MessageDialogButton.ABORT);
    ABORT_RETRY_IGNORE.add(MessageDialogButton.RETRY);
    ABORT_RETRY_IGNORE.add(MessageDialogButton.IGNORE);
  }

  public static MessageDialogButton[] buttonsTreatment(MessageDialogButton... buttons) {

    List list = Arrays.asList(buttons);

    if (list.containsAll(OK_CANCEL))
      return OK_CANCEL.toArray();

    else if (list.containsAll(YES_NO_CANCEL))
      return YES_NO_CANCEL.toArray();

    else if (list.containsAll(YES_NO))
      return YES_NO.toArray();

    else if (list.containsAll(RETRY_CANCEL))
      return RETRY_CANCEL.toArray();

    else if (list.containsAll(ABORT_RETRY_IGNORE))
      return ABORT_RETRY_IGNORE.toArray();

    return new MessageDialogButton[] { MessageDialogButton.OK };
  }
}

Tô sem uma IDE aqui pra compilar, mas isso deve fazer mais ou menos o serviço. :)

Mauricio_Linhares

Exatamente isso Bruno :slight_smile:

Juro que quando eu vi esse código pela primeira vez, tive que admirar o autor, eu, pessoalmente, não tenho condições intelectuais pra seguir todos os caminhos e returns que ele fez.

B
Outra opção é ordenar o enum conforme abaixo e usar o Arrays.sort().
public enum MessageDialogButton
{
  OK, YES, NO, ABORT, RETRY, IGNORE, CANCEL;
}

public class MessageDialogUtils {

  public static MessageDialogButton[] buttonsTreatment(MessageDialogButton... buttons) {

    Arrays.sort(buttons);
    return buttons;
  }
}
Só não tem o OK :P

O melhor mesmo é parar de tapar o sol com peneira e fazer um enum com as opções fixas, e substituir este buttonsTreatment por eles.

Mauricio_Linhares

Detalhe, o bloco de inicialização do seu primeiro código tem que ser estático, ele tá de instancia.

B

Blocos assim não são implicitamente estáticos? :?

Mauricio_Linhares

Blocos assim não são implicitamente estáticos? :?

Nops, você tem que colocar assim:

static { //isso é um bloco estático }

B

Blocos assim não são implicitamente estáticos? :?

Nops, você tem que colocar assim:

static { //isso é um bloco estático }
Bom saber, obrigado por tirar minha dúvida! Irei corrigir.

victorwss

Blocos assim não são implicitamente estáticos? :?

Você acaba de errar duas questões na SCJP!
Blocos assim o compilador coloca no construtor da classe. Isso é um inicializador de instância e não um inicializador de classe.

B

kkk, ainda bem que estou estudando aqui pelo GUJ :wink:

(se bem que falta eu visitar o forum de certificações…)

Mauricio_Linhares

victorwss:
Você acaba de errar duas questões na SCJP!
Blocos assim o compilador coloca no construtor da classe. Isso é um inicializador de instância e não um inicializador de classe.

Construtor da classe?

Bem, blocos de inicialização estática são executados após a classe ter sido definida pela máquina virtual (depois de um defineClass() da vida) e os blocos de inicialização de instância (os que não tem static) são executados exatamente antes do construtor quando um objeto está sendo criado.

victorwss

Mauricio Linhares:
victorwss:
Você acaba de errar duas questões na SCJP!
Blocos assim o compilador coloca no construtor da classe. Isso é um inicializador de instância e não um inicializador de classe.

Construtor da classe?

Bem, blocos de inicialização estática são executados após a classe ter sido definida pela máquina virtual (depois de um defineClass() da vida) e os blocos de inicialização de instância (os que não tem static) são executados exatamente antes do construtor quando um objeto está sendo criado.

Na verdade o compilador cria os métodos combinando os inicializadores de instância e os construtores, colocando lá também a chamada ao construtor da superclasse.

kicolobo

Infelizmente não tenho mais o código fonte desta pérola, mas já peguei um projeto em uma firma no qual, para cada CLASSE, havia um PACOTE, no qual existia exatamente UMA CLASSE.

Era um sistema com umas 50 classes, mais ou menos assim.

empresa.entidade.Produto.Produto
empresa.entidade.Categoria.Categoria

E por aí ia.

Ao questionar o “programador”, o mesmo teve uma crise histérica comigo e partiu! :shock:

victorwss

Você poderia nos descrever como isso ocorreu com mais detalhes? 8)

kicolobo

Claro :smiley:

A primeira vista, ao ver aquela enorme quantidade de pacotes (tenho 10 graus de miopia e uns 8 de astigmatismo) pensei: “Uau! Que coisa complexa para algo tão simples!” - E era realmente um sistema muito simples.

Chegando mais perto do monitor, me dei conta do que de fato eram aqueles pacotes. Claro, não pude deixar de “esboçar” um sorriso.
Foi quando perguntei: “Criatura, não faria mais sentido colocar estas classes em um mesmo pacote? Pra que criar um pacote por classe? Qual o sentido disto?”

O sujeito me olhou com olhar de ódio estampado na face, levantou-se diante de mim e disse:

“Kico, você é um metido! Não respeita os que estão começando.” bla bla bla bla bla bla.
(Detalhe: a criatura é formada e estava fazendo pós graduação. FORMADO!)

Se levantou, foi ao banheiro e, uma semana depois, saiu da empresa.

Mas o mais curioso é: eu não ridicularizei o cara! Eu só questionei! Afinal de contas, poderia haver alguma “sabedoria oculta” por trás desta pérola.

E foi isto.

kicolobo

Esta é outra clássica que já vi.

Em um sistema que estavamos desenvolvendo, uma programadora resolveu criar a interface gráfica de uma parte do sistema que, dependendo da ação do usuário, poderia ter consequências desastrosas, pois milhares de registros poderiam ser alterados (no caso, dizia respeito à exclusão de bancos de dados).

Pois bem: a programadora terminou o trabalho, veio toda contente para nós e, juntos, fomos apresentar o resultado para o cliente. O estado de confiança da “profissional” alastrou-se entre nós. Naquele momento, possuíamos CERTEZA de que tudo daria certo (claro, nem sequer haviamos olhado o resultado do trabalho, pois o tempo era nulo).

Então, estamos na frente do cliente, e segue o seguinte diálogo.

_ A ferramenta de exclusão de registros está pronta?
_ Sim, e ficou ótima. A performance ficou excelente.
(haviamos visto os testes unitários desta parte e, realmente, ela tinha razão. A performance era perfeita. E o código, era realmente muito bacana, mas voltemos ao diálogo)

_ Gostaria de ver como isto está no sistema.
_ Ok, vou lhe mostrar. Aqui está o botão. Clique nele para ver o que acontece.

(nossos corações pararam por um segundo ao ver o que surgiu na tela. Nós naquele momento só haviamos visto a camada de negócio. Não a interface gráfica que ela havia desenvolvida (mea culpa, mea culpa, mea culpa!))

Eis que surge na tela uma caixa de diálogo com o seguinte texto:
“Você está prestes a apagar todos os registros do projeto X. Deseja continuar?”
E um único botão: “Ok.”

Rafael_Afonso

Este fui eu quem fez, de ontem para hoje e foi bem sutil: Tinha um array de chars com um número par como tamanho. Tinha que percorrê-lo 2 a 2. O for que eu fiz foi o seguinte:

for (int i = 0; i < array.length; i =+ 2) {
     int digitoAtual = array[i] - '0';
     int digitoSeguinte = array[i + 1] - '0';
     // ...
}

O problema é que para arrays longos dava loop infinito e daí dava pau no programa. Só depois de olhar melhor o código é que percebi que ao fazer i =+ 2 na verdade eu estava atribuindo sempre o valor +2 a i. Na verdade o correto seria i += 2. Creio que estou tão acostumado a usar i ++ para percorre arrays que esqueci deste detalhe.

Jeanioz

kicolobo:
Esta é outra clássica que já vi.

Em um sistema que estavamos desenvolvendo, uma programadora resolveu criar a interface gráfica de uma parte do sistema que, dependendo da ação do usuário, poderia ter consequências desastrosas, pois milhares de registros poderiam ser alterados (no caso, dizia respeito à exclusão de bancos de dados).

Pois bem: a programadora terminou o trabalho, veio toda contente para nós e, juntos, fomos apresentar o resultado para o cliente. O estado de confiança da “profissional” alastrou-se entre nós. Naquele momento, possuíamos CERTEZA de que tudo daria certo (claro, nem sequer haviamos olhado o resultado do trabalho, pois o tempo era nulo).

Então, estamos na frente do cliente, e segue o seguinte diálogo.

_ A ferramenta de exclusão de registros está pronta?
_ Sim, e ficou ótima. A performance ficou excelente.
(haviamos visto os testes unitários desta parte e, realmente, ela tinha razão. A performance era perfeita. E o código, era realmente muito bacana, mas voltemos ao diálogo)

_ Gostaria de ver como isto está no sistema.
_ Ok, vou lhe mostrar. Aqui está o botão. Clique nele para ver o que acontece.

(nossos corações pararam por um segundo ao ver o que surgiu na tela. Nós naquele momento só haviamos visto a camada de negócio. Não a interface gráfica que ela havia desenvolvida (mea culpa, mea culpa, mea culpa!))

Eis que surge na tela uma caixa de diálogo com o seguinte texto:
“Você está prestes a apagar todos os registros do projeto X. Deseja continuar?”
E um único botão: “Ok.”

Ah, isso é fácil de corrigir na frente do cliente:

  • É só clicar no xizinho… :lol:
danieldestro

Colaboração de um amigo:

if(validateCodPessoa(document.forms['loginForm'].codPessoa) == false){ return false; }

Só faltou o

else return true;

hahahahaha

B

danieldestro:
Colaboração de um amigo:

if(validateCodPessoa(document.forms['loginForm'].codPessoa) == false){ return false; }

Só faltou o

else return true;

hahahahaha

Qual o problema? Há mais checagens abaixo? O código inteiro é só este if?

danieldestro

Nenhum problema, mas olha que mais simples:

return validateCodPessoa(document.forms['loginForm'].codPessoa);
B

[quote=danieldestro]Nenhum problema, mas olha que mais simples:

return validateCodPessoa(document.forms['loginForm'].codPessoa);

Por isso que perguntem se haviam mais checagens.

Se a pessoa quisesse colocar um alert lá para debugar, ou se quisesse implementar mais validações no futuro, aquele código estaria ótimo.

jcmird

100% Pog ahauhaua… tem programdor que gosta de ver o código bem grande … Este vai ser um post eterno no guj ahauah.

jingle

[quote=danieldestro]Nenhum problema, mas olha que mais simples:

return validateCodPessoa(document.forms['loginForm'].codPessoa);

desta sua forma… ele retornaria true caso o validateCodPessoa retorna true… e como você mostrou no código dele não tem o “else return true”…

dava pra mudar pra algo assim

if(!validateCodPessoa(document.forms['loginForm'].codPessoa)){ return false; }

Pedrosa

E essa gambiarra para pegar o codigo e incrementar + 1:

public Long buscarSequencial() throws Exception {
		Long retorno = new Long(0);
		String select = 
			"select" +
				" pro.sequencial" +
			" from" +
				" Protocolo as pro" +
			" order by" +
				" pro.atualizacao desc" +
			"";

		List lst = getHibernateTemplate().find(select);
		if (!lst.isEmpty()) {
			retorno = (Long) lst.get(0);
		}
       return retorno

Depois o cidadao coloca sequencial + 1 e da um monte de pau, olha que ta em Hibernate, usem sequence pelo amor de Deus.

Refatorado.

return  Long.valueOf(getSession().createSQLQuery(querySequence).uniqueResult().toString());
T

Em alguma ocasião de sua vida você já usou C? No tempo do Kernighan & Ritchie era possível usar:

i += 2;

ou

i =+ 2;

É desnecessário dizer que isso era um pouco ambíguo, e não conheço nenhum compilador (mesmo o MS C 3.0) que implemente a segunda forma, que está obsoleta há muitos anos.

danieldestro

Lindo:

for( int i=0; i<lista.size(); i++ ) {
  // ... código

  if( i < lista.size() ) {
    // SEMPRE
  } else {
    // NUNCA
  }
}
M
danieldestro:
Lindo:
for( int i=0; i<lista.size(); i++ ) {
  // ... código

  if( i < lista.size() ) {
    // SEMPRE
  } else {
    // NUNCA
  }
}
Esse é um dos mais feios (é só pensar um pouco, caramba!!) e, mesmo assim, dos mais comuns. E erros não faltam: mais de 40 páginas e, com certeza, tem muito mais...
B
danieldestro:
Lindo:
for( int i=0; i<lista.size(); i++ ) {
  // ... código

  if( i < lista.size() ) {
    // SEMPRE
  } else {
    // NUNCA
  }
}

Esse me lembra uns mais comuns, principalmente com jstl em jsps:

São do tipo
for (alguma coisa)
{
  if (condição que acontece somente uma vez, na primeira iteração)

  if (ou alguma outra condição, que se for falsa, não era nem pra ter entrado no laço)
}

E lá vai o servidor executando laços sem necessidade....

gui_sv

auhauhauhauhauha

Este virou um bom topico de POG

Programacao Orientada a Gambiarra …

huauhauhauhahu

sempre que fizer um codigo…vou consultar aqui para ver se tem como melhorar … ahuuahuhauha

danieldestro
Hard way:
package pacote.muito.doido;

public class ParametrosPesquisaXyz {

    private Long codTaxa_1 = 0L;
    private Long codTaxa_2 = 0L;
    private Long codTaxa_3 = 0L;
    private Long codTaxa_4 = 0L;
    private Long codTaxa_5 = 0L;
    private Long codTaxa_6 = 0L;
    private Long codTaxa_7 = 0L;
    private Long codTaxa_8 = 0L;

    public void setParametros(int idx, Long valor) {
            switch (idx) {
                case 1:
                    codTaxa_1 = valor;
                    break;
                case 2:
                    codTaxa_2 = valor;
                    break;
                case 3:
                    codTaxa_3 = valor;
                    break;
                case 4:
                    codTaxa_4 = valor;
                    break;
                case 5:
                    codTaxa_5 = valor;
                    break;
                case 6:
                    codTaxa_6 = valor;
                    break;
                case 7:
                    codTaxa_7 = valor;
                    break;
                case 8:
                    codTaxa_8 = valor;
                    break;
            }        
    }

    public Long getParametros(int idx) {
            switch (idx) {
                case 1:
                    return codTaxa_1;
                case 2:
                    return codTaxa_2;
                case 3:
                    return codTaxa_3;
                case 4:
                    return codTaxa_4;
                case 5:
                    return codTaxa_5;
                case 6:
                    return codTaxa_6;
                case 7:
                    return codTaxa_7;
                case 8:
                    return codTaxa_8;
                default:
                    return 0L;
            }        
    }

}

Introduzindo o conceito de ARRAY para o progamador desavisado:

package pacote.muito.doido;

public class ParametrosPesquisaXyz {

    private Long[] codTaxa = new Long[8];

    public ParametrosPesquisaXyz() {
        for(int i=0; i<codTaxa.length; i++)
            codTaxa[i] = 0L;
    }

    public void setParametros(int idx, Long valor) {
        codTaxa[i-1] = valor;
    }

    public Long getParametros(int idx) {
        if( idx > codTaxa.length )
            return 0L;
        return codTaxa[i-1];
    }

}
danieldestro
/**
 * Método que retorna a primeira metade de uma lista de Objetos.
 */
public List<Object> getPrimeiraMetade(List<Object> listaInicial) {
  List<Object> listaFinal = new ArrayList<Object>();
  int primeiraMetade = (int) Math.ceil(Double.valueOf(listaInicial.size()) / Double.valueOf(2));
  for (int i = 0; i < primeiraMetade; i++) {
    listaFinal.add(listaInicial.get(i));
  }
  return listaFinal;
}

/**
 * Método que retorna a segunda metade de uma lista de Objetos.
 */
public List<Object> getSegundaMetade(List<Object> listaInicial) {
  // implementacao aqui...
  return listaFinal;
}

Que tal cortar a gambiarra e usar um único método que você passa um argumento para delimitar o subset da lista? Além do que, usar Generics facilita a vida.

victorwss
danieldestro:
/**
 * Método que retorna a primeira metade de uma lista de Objetos.
 */
public List<Object> getPrimeiraMetade(List<Object> listaInicial) {
  List<Object> listaFinal = new ArrayList<Object>();
  int primeiraMetade = (int) Math.ceil(Double.valueOf(listaInicial.size()) / Double.valueOf(2));
  for (int i = 0; i < primeiraMetade; i++) {
    listaFinal.add(listaInicial.get(i));
  }
  return listaFinal;
}

/**
 * Método que retorna a segunda metade de uma lista de Objetos.
 */
public List<Object> getSegundaMetade(List<Object> listaInicial) {
  // implementacao aqui...
  return listaFinal;
}

Que tal cortar a gambiarra e usar um único método que você passa um argumento para delimitar o subset da lista? Além do que, usar Generics facilita a vida.

Que NOOBice!

M
danieldestro:
/**
 * Método que retorna a primeira metade de uma lista de Objetos.
 */
public List<Object> getPrimeiraMetade(List<Object> listaInicial) {
  List<Object> listaFinal = new ArrayList<Object>();
  int primeiraMetade = (int) Math.ceil(Double.valueOf(listaInicial.size()) / Double.valueOf(2));
  for (int i = 0; i < primeiraMetade; i++) {
    listaFinal.add(listaInicial.get(i));
  }
  return listaFinal;
}

/**
 * Método que retorna a segunda metade de uma lista de Objetos.
 */
public List<Object> getSegundaMetade(List<Object> listaInicial) {
  // implementacao aqui...
  return listaFinal;
}

Que tal cortar a gambiarra e usar um único método que você passa um argumento para delimitar o subset da lista? Além do que, usar Generics facilita a vida.


Cada dia melhor... :)

Por isso fica a dica (extraída da assinatura de victorwss):

[color=darkred]Always code as if the person who will maintain your code is a maniac serial killer that knows where you live.[/color] :shock:

gui_sv

Daniel,

huauhauhahu

onde vc acha tanto codigo tosco assim ??? auhauhhau

esse topico é mto bom para aprender como nao programar !!!

danieldestro

É segredo!

richardpeder

E se quiser viver deve mantê-lo muiiiiito em segredo! :smiley: :stuck_out_tongue:

danieldestro

Gentilmente cedido por um amigo:

request.setAttribute(SuspenderEntregaDelegate.SUSPENDER_ENTREGA, request.getParameter(SuspenderEntregaDelegate.SUSPENDER_ENTREGA));
victorwss

[quote=danieldestro]Gentilmente cedido por um amigo:

request.setAttribute(SuspenderEntregaDelegate.SUSPENDER_ENTREGA, request.getParameter(SuspenderEntregaDelegate.SUSPENDER_ENTREGA));

Já vi bastante desse tipo de coisa.
Tende a ser comum quando você abusa de <jsp:include > e semelhantes.

O

Fazendo refactory aqui achei isso:
o obj abaixo é um Object[]:obj[j + 1] = new BigDecimal(((BigDecimal) obj[j]).toString());
Só precisava de:

obj[j + 1] = obj[j];

Outro:

valor.add(((BigDecimal) obj[j-1]).multiply(new BigDecimal(-1)));

em vez de:valor.subtract((BigDecimal) obj[j-1]);
Como disse um amigo, esse aí é um verdadeiro alquimista.
Eu vou dizer que foi eu pra não dar briga aqui na empresa, ahuahuauhah. Por outro lado, tenho minhas próprias pérolas, quando achar ou lembrar posto.

B

ozix:
Só precisava de:

obj[j + 1] = obj[j];


Eu ia falar que da nova maneira ele não estaria criando um novo objeto, talvez desse algum problema, mas como BigDecimals são imutáveis, então pode compartilhá-los à vontade.

B

[quote=victorwss]

danieldestro:
Gentilmente cedido por um amigo:

request.setAttribute(SuspenderEntregaDelegate.SUSPENDER_ENTREGA, request.getParameter(SuspenderEntregaDelegate.SUSPENDER_ENTREGA));

Já vi bastante desse tipo de coisa.
Tende a ser comum quando você abusa de <jsp:include > e semelhantes.

É bem comum também qdo precisa passar objetos entre séries de páginas, mas não tem como ou não sabe usar o escopo apropriado.

danieldestro

request.setAttribute("existeMaisDeUmCodigo", "existeMaisDeUmCodigo"); request.setAttribute("emailComMaisDeUmCodigo", form.getEmailPessoa().trim().toUpperCase()); request.setAttribute("codigosDoUsuario", codPessoa);

Pra que Struts? E o legal foi a primeira linha.

victorwss

Brilhante! Assim podemos ter certeza de que existe mais de um código. :twisted:

arthurminarini

conheço um programador que gosta de nomes bem intuitivos. É SERIO MESMO NÃO É ZUAÇÃO

if (loginBlz) {
     blzPodePassar = true;
     sairAtualizandoMensagemQueFoiMostradaAUmTempoAtras();
  }
B

arthurminarini:
conheço um programador que gosta de nomes bem intuitivos. É SERIO MESMO NÃO É ZUAÇÃO

if (loginBlz) { blzPodePassar = true; sairAtualizandoMensagemQueFoiMostradaAUmTempoAtras(); }

Corrigido:

if (loginBlz) {
     blzPodePassar = true;
     sairAtualizandoMensagemQueFoiMostradaHaUmTempoAtras();
  }
danieldestro

Pior se ele foi um atendente de telemarketing antes.

boolean estaraEstandoFazendoCompraPosterior = true;
Rodrigo.Lima

danieldestro:
Pior se ele foi um atendente de telemarketing antes.

boolean estaraEstandoFazendoCompraPosterior = true;

Garanto que esse aí fala “vou ir”

Leozin

E se quiser viver deve mantê-lo muiiiiito em segredo! :smiley: :stuck_out_tongue:

Ufa, melhor eu ficar quieto então rsrs

diguix

Já que reviveram esta thread, e por acaso acabo de me deparar com algo sobrenatural rs
segue ai:

var lIQtdIntervaloDiasPermitido = pIsAnoBissexto ? parseInt(90) : parseInt(90);

Interessante não?
O que seria dos amantes de refactory como eu, senão houvesse este tipo de código? hehehe

:smiley: Fico feliz !!

Marky.Vasconcelos

Eu tinha visot uma pérola mosntra esses tempos… procurei o tópico e não achei se eu ver denovo eu posto.

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?

Feijao

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);
}
ViniGodoy

Esses dias vi um conjunto grande de códigos toscos, um seguido do outro.
E o pior, o local onde estavam escritos chamava-se “Prova de Certificação Java”.

Ou alguém discorda que os códigos da prova de certificação não são toscos? Sinceramente, se alguém viesse com código daquele e fosse meu funcionário, acho que demitia na hora. :lol:

T

Eu escrevo propositadamente vários códigos toscos aqui no GUJ, só para servirem como um exemplo didático.

Em um programa decente você não usaria

public static void main (String[] args) throws Exception

mas eu normalmente mostro assim para não deixar o código cheio de “try/catch”.

Em código de produção, obviamente, ponho os tratamentos adequados.

deniswsrosa

[quote=danieldestro]Pior se ele foi um atendente de telemarketing antes.

boolean estaraEstandoFazendoCompraPosterior = true;

Poxa… esse ai chutou o balde mesmo!

Guilherme_Gomes
if(tipo.equalsIgnoreCase("1")){
	// ...
}

Muitas vezes me confundi com os meus 1’s minúsculos e maiúsculos.

Detalhe, o nome da classe que tem esse trecho de código é DirfServilet… com ‘i’ em Servlet!

mario.fts
if (this != null)
 //continua

sério… muito sério.

T
mario.fts:
if (this != null)
 //continua

sério... muito sério.

É 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

diego2005
thingol:
mario.fts:
if (this != null)
 //continua

sério... muito sério.

É 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

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

T+

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.

peczenyj

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?

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

B

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); }

Cada getPk é uma consulta ao banco?

S

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

victorwss

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:

danieldestro

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

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();
        }
    }
danieldestro

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

J

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

function vaiParaOProximoCampo(campoAtual) { ...

Ainda se funcionasse…

O cara deve ter confundido com pascal. rs

T

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

function vaiParaOProximoCampo(campoAtual) { ...

Ainda se funcionasse…

O cara deve ter confundido com pascal. rs

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.

Marky.Vasconcelos

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

danielJaponeis

vi alguem na facul fazer:

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

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;

CintiaDR

Gente, esses dias peguei um:

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

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);
T

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.

Feijao

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;
}
victorwss

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) { ... }

Andre_Fonseca

mais uma contribuição

cath (Exception e) { throw new Exception(e); }

java.lang.Exception mesmo

eltonk

E esse caso?! Sem comentários… :lol:

if (bean.getName().equals("XXXXX")) {

   } else {
        processOtherCompany();
   }
Jose111

quem nunca fez uma pog que atire a primeira pedra^^

victorwss

Eu já fiz, assumo. Inclusive postei uma de minha própria autoria várias páginas atrás. :smiley:

albertongai

victorwss:
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) { ... }

Putz nem me fala o sistema que eu estou mexendo atual, tem trocentas constantes pra lá e pra cá… mas cá entre nós a única alternativa é os enums ou colocar tudo isso em properties? pra mim no fundo parece tudo igual só muda a cara da coisa…( cara de gambiarra )

Andre_Brito

albertongai:
victorwss:
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) { ... }

Putz nem me fala o sistema que eu estou mexendo atual, tem trocentas constantes pra lá e pra cá… mas cá entre nós a única alternativa é os enums ou colocar tudo isso em properties? pra mim no fundo parece tudo igual só muda a cara da coisa…( cara de gambiarra )


Tenho um amigo que diz que prefere uma classe com umonte de statics do que enum… Não desse tipo dos números que o Victor passou, mas enfim…

paulog

peczenyj:
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?

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

Ahahahahaha…
Basicamente, já falta um break depois do close(). Se o uso do for fosse “válido”, então que pelo menos estivesse correto.

Um colega meu deu uma alternativa:

public static final double FRACTION = 0.25;
public static final int COUNT = 100;
public static final int TOTAL = (int) COUNT * FRACTION;

for (int i = 0; i < TOTAL; ++i) {
}

Assim é possível determinar a “performance” do for mudando o valor de FRACTION. Prontamente respondi, falando que deveríamos até disponibilizar para o usuário algum controle visual para mudar esse valor, como se fosse uma resistência de um circuito elétrico.
Hahahahaha… Poderia ler o valor de alguma propriedade também…

C

JavaScript + Scriptlet + Java = Aberrações

// Não colocar nenhuma funcao JS apos este metodo...
function imprimirValoresControlePaginas(){
<% if(request.getAttribute("listaPaginas") != null){
	java.util.LinkedHashMap<Integer,Integer> listaPaginas = (java.util.LinkedHashMap<Integer,Integer> ) request.getAttribute("listaPaginas");
	java.util.Iterator<Integer>  it = listaPaginas.keySet().iterator();
	out.print("var vlrLista = \"<b>Página</b><br>");
	while(it.hasNext()){
		Integer key = (Integer) it.next();
		out.print(key + "-" +listaPaginas.get(key) + "<br>");
	}
	out.print("\";");
}%>
	document.getElementById("mostraLista").innerHTML = vlrLista;
}

atentem para o detalhe de se criar uma variável javasricot no meio do scriptlet

Marky.Vasconcelos

Oh SHIT…

boolean valor = getValor();
if(valor == true){
  objeto = new Objeto(true);
}else if(valor == false){
  objeto = new Objeto(false);
}else{
  objeto = null;
}
anurb.coimbra
public static void escreveNoLog(Exception e){
		 if (e == null) return;
			StackTraceElement[] ste = e.getStackTrace();
			for (int i = 0; i < ste.length; i++){
				
			}
		}

estou bestificada olhando para este código. O método não faz nada de útil, só aumenta o tempo de processamento.

Tosco, não? Além do mais as principais variáveis são estáticas, todas as classes estão acessando-as, alterando-as. Os botões são estáticos, criados num canto, adicionados em outro, capturado evento em outra classe. Nada de encapsulamento, péssimas praticas de OO, difícil entendimento e manutenção.

Vontade de pegar o infeliz que fez isso e… :twisted:

luistiagos

quem não lembra da velha gambi para fazer muitas vezes sqls dinamicos?

where 1 = 1
Marky.Vasconcelos

luistiagos:
quem não lembra da velha gambi para fazer muitas vezes sqls dinamicos?

where 1 = 1

Eu usava isso para fazer SQL Injection. XD

Focao

Eu gosto dos comentários e os nomes dos métodos misturando português com inglês…
E o uso do FIXME e sem falar do números mágicos.
E pior aí vc clica com o direito e vai em referências no projeto abre uma lista com 325 ocorrências.

public static boolean isValidCnpj(String cnpj) {

 // FIXME: Fazer validacao de cnpj de verdade !!!
 cnpj = removeSeparators(cnpj, false);
 if (cnpj.length() != 14) {
   return false;
 }
 return true;
}
private static String removeSeparators(String str, boolean validateCPF) {

 StringBuffer buffer = new StringBuffer(str);
 if (validateCPF) {
  if (str.length() == 14) { // se for validacao de CPF e estiver com mascara
     buffer.deleteCharAt(11).deleteCharAt(7).deleteCharAt(3);
  }
 } else if (str.length() == 18) { // ser for validacao de CNPJ e estiver com mascara
    buffer.deleteCharAt(15).deleteCharAt(10).deleteCharAt(6).deleteCharAt(2);
}
 return buffer.toString();
}
S

Avisa a esse sujeito sobre o método replaceAll.

B

Aproveita e indica o Caelum Stella para validar os números de documento.

Jose111
String a;
a=1+"";
Feijao
select * from pedido_renovacao pe where pe.DAT_RENOVACAO between TO_DATE('07/07/2009', 'DD/MM/YYYY') and TO_DATE('07/07/2009', 'DD/MM/YYYY') and rownum between 0 and 1000000 ORDER BY DAT_RENOVACAO DESC

Adorei a parte do rownum!

Limite sua query, traga os registros entre 0 e 100000000000000000000000000000000000000!!!

Andre_Fonseca

Jose111:
String a; a=1+"";

isso é outra forma de fazer cast de numeros para string, vcs não sabiam?? já vi varias vezes… :smiley:

luistiagos

Minha contribuição:

public class dadosGenerico {
   public String str1;
   public String str2;
   public String str3;
   public String str4;
   public String str5;
   public String str6;
   public String str7;
   public String str8;
   public String str9;
   public String str10;
   public String str11;
   public String str12;
   public String str13;
   public String str14;
   public String str15;
   public String str16;
   public String str17;
   public String str18;
   public String str19;
   public String str20;
   public String str21;
   public String str22;
   public String str23;
   public String str24;
   public String str25;
   public String str26;
   public String str27;
   public String str28;
   public String str29;
   public String str30;

   public dadosGenerico(){

   }
}
luistiagos
public String criptografa(String x) {

        try {
            //Um monte de tranqueira aqui...
        } catch (javax.crypto.BadPaddingException e) {
            System.out.println(e.getMessage());
            return null;
        } catch (IllegalBlockSizeException e) {
            System.out.println(e.getMessage());
            return null;
        } catch (java.io.IOException e) {
            System.out.println(e.getMessage());
            return null;
        } catch (java.security.InvalidKeyException e) {
            System.out.println(e.getMessage());
            return null;
        }
    }
adriano_si

Ele tem alguma justificativa boa pra pensar assim ??? quer dizer… alguém tem ???

Falows :wink:

Mero_Aprendiz

luistiagos:
quem não lembra da velha gambi para fazer muitas vezes sqls dinamicos?

where 1 = 1

kkkkkkkkkkkkkkkkkk
[size=18]Crássica![/size]

Já vi situações que esse POO (Programação orientada à oreagem) era motivo de travamento no banco Pervasive!
Sinistro!

Ataxexe

Um pedaço da classe Utils de um sistema da empresa na qual trabalho:

public static String br(boolean pRetornoCarro) {
    return !pRetornoCarro ? "" + (char) 13 : "" + (char) 13 + (char) 10;
  }

  /**
    * retorna uma table de altura 3 para dar um espacamento no html
    * (substitui BR)
    */
  public static String espacoHTML() {
    return "<TABLE>" + br() + "     <TR>" + br() + "       <TD height=3>" + br() + "       </TD>" + br() + "     </TR>" + br() + "  </TABLE>" + br();
  }

  /**
    * retorna uma table de altura pHeight, para dar um espacamento no html
    * (substitui BR)
    */
  public static String espacoHTML(int pHeight) {
    return "<TABLE>" + br() + "     <TR>" + br() + "       <TD height=" + pHeight + ">" + br() + "       </TD>" + br() + "     </TR>" + br() + "  </TABLE>" + br();
  }

  public static String maxString(int pLength, String pString, boolean pComPontinhos) {
    if (stringVazia(pString)) {
      return "";
    }
    if (pString.length() > pLength) {
      return pComPontinhos ? pString.substring(0, pLength - 3) + "..." : pString.substring(0, pLength);
    }
    return pString;
  }

  public static int novoCodigo(int pCodAtual) {
    return pCodAtual + 1;
  }

  /**
   * Aplica o Plural
   */
  public static String plural(String texto) {
    if (stringVazia(texto)) {
      return "";
    }

    if (testaFinalString(texto, "ao")) {
      return texto.substring(0, texto.length() - 2) + "oes";
    }
    if (testaFinalString(texto, "is") || testaFinalString(texto, "or") || testaFinalString(texto, "ar")) {
      return texto + "es";
    }
    if (testaFinalString(texto, "l")) {
      return texto.substring(0, texto.length() - 1) + "ies";
    }
    if (testaFinalString(texto, "ly")) {
      return texto.substring(0, texto.length() - 2) + "ies";
    }

    return texto + "s";
  }
/**
   * Método que converte uma String no padrão #,##0.00 para um double
   */
  public static double stringToDouble(String pString) {
    if (stringVazia(pString)) {
      return Double.NEGATIVE_INFINITY;
    }

    String aux = pString;
    String[] vecPonto = stringToArray(pString, ".", true);
    String[] vecVirgula = stringToArray(pString, ",", true);

    if (vecVirgula.length > 1 && vecPonto.length > 1) {
      if (vecVirgula.length == vecPonto.length) {
        if (vecVirgula[0].length() < vecPonto[0].length()) {
          aux = trocaSubString(aux, ",", "");
        } else {
          aux = trocaSubString(aux, ".", "");
          aux = trocaSubString(aux, ",", ".");
        }
      } else if (vecVirgula.length > vecPonto.length) {
        aux = trocaSubString(aux, ",", "");
      } else {
        aux = trocaSubString(aux, ".", "");
        aux = trocaSubString(aux, ",", ".");
      }
    } else if (vecVirgula.length > 2 || vecPonto.length > 2) {
      aux = trocaSubString(aux, ".", "");
      aux = trocaSubString(aux, ",", "");
    } else if (vecVirgula.length == 2) {
      aux = trocaSubString(aux, ",", ".");
    }

    return (new Double(aux)).doubleValue();
  }

  /**
   * testa se a string termina em XXXXX
   */
  public static boolean testaFinalString(String texto, String teste) {
    if (stringVazia(texto) || stringVazia(teste) || teste.length() > texto.length()) {
      return false;
    }
    return texto.substring(texto.length() - teste.length()).equals(teste);
  }

  /**
   * testa se a string inicia em XXXXX
   */
  public static boolean testaInicioString(String texto, String teste) {
    if (stringVazia(texto) || stringVazia(teste) || teste.length() > texto.length()) {
      return false;
    }
    return texto.substring(0, teste.length()).equals(teste);
  }
Jose111

WTF !!!

aplica o plural :lol: :lol: :lol: :lol: :lol:

Onde é utilizado aquilo?

S

Pior são esses testaFinalString e testaInicioString.
Para que usar o startsWith e endsWith de String, né?

Era bom colocar, além da pérola, o jeito certo de fazer.
Para comparar o número de linhas (geralmente bem menor), para ensinamento e pelos novos códigos toscos que isso pode gerar :mrgreen:

Rafael_Nunes

Jose111:
WTF !!!

aplica o plural :lol: :lol: :lol: :lol: :lol:

Onde é utilizado aquilo?

Provavelmente algum tipo de correção ortográfica. Estou fazendo um em português e ao menos as regras de português são muuuuuuuuuito mais complexas que esse método.

S

O Rails usa algo assim, não?
Ao criar uma entidade Story, ele cria a tabela Stories no banco.

O Netbeans também tinha algo assim no editor de código, acho que era no template de foreach.

L

aplica o plural

essa eu to curioso.

S
Num certo enum...
public static TipoPessoa valueOf(int codigo) {
    TipoPessoa valor = null;
    for (TipoPessoa elemento : values()) {
        if (elemento.getCodigo() == codigo) {
            valor = elemento;
            break;
        }
    }
    if (valor == null) {
        throw new IllegalArgumentException("Código inválido: " + codigo);
    }

    return valor;
}
Melhor seria:
public static TipoPessoa valueOf(int codigo) {
    for (TipoPessoa elemento : values())
        if (TipoPessoa elemento.getCodigo() == codigo)
            return elemento;

    throw new IllegalArgumentException("Código inválido: " + codigo);
}
fabiofalci

Jose111:
WTF !!!

aplica o plural :lol: :lol: :lol: :lol: :lol:

Onde é utilizado aquilo?

Já precisei criar um código pra aplicar plural, num gerador de código.

Y

Bruno Laturner:
arthurminarini:
conheço um programador que gosta de nomes bem intuitivos. É SERIO MESMO NÃO É ZUAÇÃO

if (loginBlz) { blzPodePassar = true; sairAtualizandoMensagemQueFoiMostradaAUmTempoAtras(); }

Corrigido:

if (loginBlz) { blzPodePassar = true; sairAtualizandoMensagemQueFoiMostradaHaUmTempoAtras(); }

Na verdade, o erro apenas piorou. ‘há’ um tempo ‘atrás’ é pleonasmo.

O correto seria:

sairAtualizandoMensagemQueFoiMostradaHaUmTempo();

Ou

sairAtualizandoMensagemQueFoiMostradaUmTempoAtras();
Y

luistiagos:
quem não lembra da velha gambi para fazer muitas vezes sqls dinamicos?

where 1 = 1

Não consideraria isso uma gambiarra. É apenas um meio de tornar um código menos condicional. Agrega-se a isso o fato de ‘1 = 1’ ser uma expressão que os SGDB’s normalmente já são capazes de desconsiderar e, ainda que ‘resolvam’ a condição, o envolvimento na operação seja totalmente ignorável.

No caso de um SQL dinâmico (independente à existência de Hibernate ou de quaisquer frameworks e afins), como seria o correto*?

*sendo, para fins de explicação, ‘correto’ o antônimo de ‘gambiarra’

luistiagos

Yky Mattshawn:
luistiagos:
quem não lembra da velha gambi para fazer muitas vezes sqls dinamicos?

where 1 = 1

Não consideraria isso uma gambiarra. É apenas um meio de tornar um código menos condicional. Agrega-se a isso o fato de ‘1 = 1’ ser uma expressão que os SGDB’s normalmente já são capazes de desconsiderar e, ainda que ‘resolvam’ a condição, o envolvimento na operação seja totalmente ignorável.

No caso de um SQL dinâmico (independente à existência de Hibernate ou de quaisquer frameworks e afins), como seria o correto*?

*sendo, para fins de explicação, ‘correto’ o antônimo de ‘gambiarra’

É estranho… pq 1 sera sempre = 1…

Y

luistiagos:

É estranho… pq 1 sera sempre = 1…

Mas tu mesmo disseste:

para fazer muitas vezes sqls dinamicos

A questão não é o resultado de 1 = 1, mas por que ele está sendo utilizado.

Sempre vi esse tipo de SQL em códigos que geravam instruções SQL dinâmicas. Suponha que tu tenhas um SELECT básico com vários filtros OPCIONAIS.

SELECT tabela.ID FROM tabela

Filtros: CampoA e CampoB. Um ou outro dos campos pode ser filtrado, mas nenhum é obrigatório, bem como não são dependentes entre si. Sem o uso do 1 = 1, preciso condicionar bem mais o código, ficando assim em exemplo (em JS pra simplificar):

var sql = "SELECT tabela.ID FROM tabela";
var existeWhere = false;

if (campoA.value != "")
  {
   if (!existeWhere)
     {
      existeWhere = true;
      sql += " WHERE";
     }
   else
      { sql += " AND"; }

   sql += "tabela.CampoA = " + campoA.value;
  }

if (campoB.value != "")
  {
   if (!existeWhere)
     {
      existeWhere = true;
      sql += " WHERE";
     }
   else
      { sql += " AND"; }

   sql += "tabela.CampoB = " + campoB.value;
  }

Perceba, acima, que é necessário que os códigos subsequentes ‘conheçam’ a existência do WHERE na instrução.

Mas veja como ficaria simples se eu usasse o 1 = 1:

var sql = "SELECT tabela.ID FROM tabela WHERE 1 = 1";

if (campoA.value != "")
  { sql += " AND tabela.CampoA = " + campoA.value; }

if (campoB.value != "")
  { sql += " AND tabela.CampoB = " + campoB.value; }

Concluindo: a expressão 1 = 1 existe só e somente só nestas especificidades de alguma necessidade de otimização (lê-se isso como ‘subtração’) de linhas de código.

B

luistiagos:
Yky Mattshawn:
luistiagos:
quem não lembra da velha gambi para fazer muitas vezes sqls dinamicos?

where 1 = 1

Não consideraria isso uma gambiarra. É apenas um meio de tornar um código menos condicional. Agrega-se a isso o fato de ‘1 = 1’ ser uma expressão que os SGDB’s normalmente já são capazes de desconsiderar e, ainda que ‘resolvam’ a condição, o envolvimento na operação seja totalmente ignorável.

No caso de um SQL dinâmico (independente à existência de Hibernate ou de quaisquer frameworks e afins), como seria o correto*?

*sendo, para fins de explicação, ‘correto’ o antônimo de ‘gambiarra’

É estranho… pq 1 sera sempre = 1…

Lógica booleana no SQL é estranha mesmo.

Um AND x = 1 AND x = 2 vai trazer valores onde x é 1 ou 2.

Y

Bruno Laturner:
luistiagos:
Yky Mattshawn:
luistiagos:
quem não lembra da velha gambi para fazer muitas vezes sqls dinamicos?

where 1 = 1

Não consideraria isso uma gambiarra. É apenas um meio de tornar um código menos condicional. Agrega-se a isso o fato de ‘1 = 1’ ser uma expressão que os SGDB’s normalmente já são capazes de desconsiderar e, ainda que ‘resolvam’ a condição, o envolvimento na operação seja totalmente ignorável.

No caso de um SQL dinâmico (independente à existência de Hibernate ou de quaisquer frameworks e afins), como seria o correto*?

*sendo, para fins de explicação, ‘correto’ o antônimo de ‘gambiarra’

É estranho… pq 1 sera sempre = 1…

Lógica booleana no SQL é estranha mesmo.

Um AND x = 1 AND x = 2 vai trazer valores onde x é 1 ou 2.

Mas qual o torpe SGDB que tens usado?

Ao menos no MySQL isso não funciona assim não…

Aliás, se testares alguma instrução do tipo que citaste com o ‘EXPLAIN’ no início, o MySQL será enfático ao declarar:

Impossible WHERE

P.S.: não considero a lógica booleana no SQL muito diferente da existente nas linguagens de programação. O SQL, às vezes, pode exigir mais atenção quanto à procedência de parêntesis, uma vez que toda a lógica se faz numa única linha (saldo SPs e FNCs), mas nada que torne essa lógica estranha.

B

Estranho, fiz no Oracle, tentei com uma consulta simples e realmente não deu certo.

Falei o que disse acima baseado numa consulta meio complicada. Agora tenho que achar ela de novo pra confirmar.

C

Yky Mattshawn:

Concluindo: a expressão 1 = 1 existe só e somente só nestas especificidades de alguma necessidade de otimização (lê-se isso como ‘subtração’) de linhas de código.

Ou, só existe qndo não se usa um Hibernate Criteria(ou qq outro tipo de abstração do SQL) =)

Y

clone_zealot:
Yky Mattshawn:

Concluindo: a expressão 1 = 1 existe só e somente só nestas especificidades de alguma necessidade de otimização (lê-se isso como ‘subtração’) de linhas de código.

Ou, só existe qndo não se usa um Hibernate Criteria(ou qq outro tipo de abstração do SQL) =)

Somente na abstração da suposta comodidade de uma API gigante…

Veja o que podemos encontrar nos códigos do Hibernate:

core\src\main\java\org\hibernate\criterion\Junction.java(76): if ( criteria.size()==0 ) return "1=1";
core\src\main\java\org\hibernate\criterion\Example.java(238): if ( buf.length()==1 ) buf.append("1=1"); //yuck!
testsuite\src\test\java\org\hibernate\test\component\basic\ComponentTest.java(159): s.createQuery( "from Employee e where e.person = :p and 1 = 1 and 2=2" ).setParameter( "p", emp.getPerson() ).list();

testsuite\src\test\java\org\hibernate\test\hql\HqlParserTest.java(392): parse( "select foo.foo.foo.foo from foo in class org.hibernate.test.Foo, foo2 in class org.hibernate.test.Foo where foo = foo2.foo and not not ( not foo.string='fizard' ) and foo2.string between 'a' and (foo.foo.string) and ( foo2.string in ( 'fiz', 'blah') or 1=1 )" );

testsuite\src\test\java\org\hibernate\test\hql\HqlParserTest.java(784): parse( "from c in class org.hibernate.test.C2 where 1=1 or 1=1" );

testsuite\src\test\java\org\hibernate\test\legacy\ABCTest.java(78): assertTrue( s.find("from C2 c where 1=1 or 1=1").size()==0 );

testsuite\src\test\java\org\hibernate\test\legacy\FooBarTest.java(523): " and ( foo2.string in ( 'fiz', 'blah') or 1=1 )"

Pelo visto, tem mais gente que usa esse ‘auxílio’… até o pessoal abstrato, digo, o pessoal responsável pela abstração do Hibernate… :wink:

OBS: aquela comentário ‘yuck’ está mesmo no source do Hibernate.

luistiagos

clone_zealot:
Yky Mattshawn:

Concluindo: a expressão 1 = 1 existe só e somente só nestas especificidades de alguma necessidade de otimização (lê-se isso como ‘subtração’) de linhas de código.

Ou, só existe qndo não se usa um Hibernate Criteria(ou qq outro tipo de abstração do SQL) =)

Não existe não… vc não ve… ou vc sabe exatamente a query que o Criteria gera por traz?
ja vi o hql gerando muita query bizzara… :shock: por isto não gosto muito do hql e nem Criteria…
depende muito do que vai fazer… se for algo simples dai blza… mas se for algo complexo ele pode gerar uma bizzarisse com a query do sql nativo…

ViniGodoy

Lembrei de mais um clássico. Davamos manutenção num sistema feito em C, e descobrimos que algumas variáveis de controle, imprescindíveis para o funcionamento do sistema, eram globais.

Isso por sí só já mereceria um lugar nessa lista… porém, uma delas tem destaque de honra:
A variável se chamava i.

Exatamente. Qualquer código que fizesse um "for (i = 0; i < x; i++)" estaria corrompendo um valor de controle importante, e global…

Obviamente, alguns programadores (que vieram depois do inteligente que declarou esse global), tentavam fazer declarações de i em escopos locais, recebiam um warning (de variável eclipsada) e então removiam a declaração…

danieldestro

switch(i){ case 0: plano.setDescricao(visitas.get(i).getDataVisita() == null?"":DateUtil.format( visitas.get(i).getDataVisita(), "dd/MM/yyyy")); break; case 1: plano.setColuna1(visitas.get(i).getDataVisita() == null?"":DateUtil.format( visitas.get(i).getDataVisita(), "dd/MM/yyyy")); break; case 2: plano.setColuna2(visitas.get(i).getDataVisita() == null?"":DateUtil.format( visitas.get(i).getDataVisita(), "dd/MM/yyyy")); break; case 3: plano.setColuna3(visitas.get(i).getDataVisita() == null?"":DateUtil.format( visitas.get(i).getDataVisita(), "dd/MM/yyyy")); break; case 4: plano.setColuna4(visitas.get(i).getDataVisita() == null?"":DateUtil.format( visitas.get(i).getDataVisita(), "dd/MM/yyyy")); break; case 5: plano.setColuna5(visitas.get(i).getDataVisita() == null?"":DateUtil.format( visitas.get(i).getDataVisita(), "dd/MM/yyyy")); break; case 6: plano.setColuna6(visitas.get(i).getDataVisita() == null?"":DateUtil.format( visitas.get(i).getDataVisita(), "dd/MM/yyyy")); break; case 7: plano.setColuna7(visitas.get(i).getDataVisita() == null?"":DateUtil.format( visitas.get(i).getDataVisita(), "dd/MM/yyyy")); break; case 8: plano.setColuna8(visitas.get(i).getDataVisita() == null?"":DateUtil.format( visitas.get(i).getDataVisita(), "dd/MM/yyyy")); break; case 9: plano.setColuna9(visitas.get(i).getDataVisita() == null?"":DateUtil.format( visitas.get(i).getDataVisita(), "dd/MM/yyyy")); break; case 10: plano.setColuna10(visitas.get(i).getDataVisita() == null?"":DateUtil.format( visitas.get(i).getDataVisita(), "dd/MM/yyyy")); break; case 11: plano.setColuna11(visitas.get(i).getDataVisita() == null?"":DateUtil.format( visitas.get(i).getDataVisita(), "dd/MM/yyyy")); break; case 12: plano.setColuna12(visitas.get(i).getDataVisita() == null?"":DateUtil.format( visitas.get(i).getDataVisita(), "dd/MM/yyyy")); break; }

Vamos salvá-lo da manutenção tenebrosa:

String data = visitas.get(i).getDataVisita() == null?"":DateUtil.format( visitas.get(i).getDataVisita(), "dd/MM/yyyy"); switch(i){ case 0: plano.setDescricao(data); break; case 1: plano.setColuna1(data); break; case 2: plano.setColuna2(data); break; case 3: plano.setColuna3(data); break; case 4: plano.setColuna4(data); break; case 5: plano.setColuna5(data); break; case 6: plano.setColuna6(data); break; case 7: plano.setColuna7(data); break; case 8: plano.setColuna8(data); break; case 9: plano.setColuna9(data); break; case 10: plano.setColuna10(data); break; case 11: plano.setColuna11(data); break; case 12: plano.setColuna12(data); break; }

Ainda daria pra melhorar, mas já ajudou bastante.

Feijao

Eu faria assim ainda:

String data = visitas.get(i).getDataVisita() == null?"":DateUtil.format( visitas.get(i).getDataVisita(), "dd/MM/yyyy");  

if (i == 0) {
    plano.setDescricao(data);
} else {
    BeanUtils.setProperty(plano, "coluna" + i, data);
}
danieldestro
try {
  // algum código que lança ValidacaoException
} catch (ValidacaoException e) {
  ValidacaoException validacao = new ValidacaoException();
  for (MensagemValidacao val : e.getMensagens()) {
    validacao.add(val.getKey());
  }

  addActionError(validacao);

  return INPUT;
}

Vou salvar a alma do incauto:

try {
  // algum código que lança ValidacaoException
} catch (ValidacaoException e) {
  addActionError(e);
  return INPUT;
}

Nota do usuário: o método "addActionError" tem uma sobrecarga que recebe um ValidacaoException e já faz o trabalho repetitivo.

B

// até tentei discutir, mas cliente quer por que quer bananas. public List selectBananas() throws SQLException

H

Eu tinha um colega que quando fazia um booble-sort com objetos do tipo Pessoa, colocava o nome da variável temporária de jesus. O motivo: “Apenas Jesus pode salvar as Pessoas”.

Ataxexe

Enquanto isso, na classe utilitária do sistema:

// guaranteed to hold execution of current thread for at least the specified number of milliseconds
  public static void hold(int millis) {
    int remainder = millis;
    long start = System.currentTimeMillis();
    do {
      try {
        Thread.sleep(Math.max(MIN_PAUSE_INTERVAL,  remainder));
      } catch (InterruptedException _) { }
      remainder = millis - (int)(System.currentTimeMillis() - start);
    } while (remainder > 0);
  }
  
  // return 'true' if the the specified number of milliseconds has elapsed
  public static boolean sleep(int millis) {
    long start = System.currentTimeMillis();
    try {
      Thread.sleep(Math.max(MIN_PAUSE_INTERVAL, millis));
    }
    catch (InterruptedException _) { }
    return (millis <= (int)(System.currentTimeMillis() - start));
  }

  // wait until one of the following takes place:
  //   - the provided monitor is signalled
  //   - a spurios wakeup has occurred
  //   - the specified number of milliseconds has elapsed
  // return 'true' if the the specified number of milliseconds has elapsed
  public static boolean wait(Object monitor, int millis) {
    int remainder = millis;
    long start = System.currentTimeMillis();
    synchronized (monitor) {
      do {
        try {
          monitor.wait(Math.max(remainder, MIN_PAUSE_INTERVAL));
          remainder = millis - (int)(System.currentTimeMillis() - start);
          break;
        } catch (InterruptedException e) {
          remainder = millis - (int)(System.currentTimeMillis() - start);
        }
      } while (remainder > 0);
    }
    return (remainder <= 0);
  }

  // wait until one of the following takes place:
  //   - the provided callable monitor returns 'true' upon inquiry
  //   - the specified number of milliseconds has elapsed
  // return the monitor's response to the last inquiry
  public static boolean wait(Callable<Boolean> monitor, int millis) throws IllegalStateException {
    boolean result;
    try {
      result = monitor.call().booleanValue();
    } catch (Exception e) {
      throw new IllegalStateException(e);
    }
    if (!result) {
      int remainder = millis;
      long start = System.currentTimeMillis();
      synchronized (monitor) {
        do {
          try {
            monitor.wait(Math.max(remainder, MIN_PAUSE_INTERVAL));
            try {
              result = monitor.call().booleanValue();
            } catch (Exception e) {
              throw new IllegalStateException(e);
            }
          } catch (InterruptedException _) { }
          remainder = millis - (int)(System.currentTimeMillis() - start);
        } while (!result && remainder > 0);
      }
    }
    return result;
  }

Lindo!!!!!!!!!

danieldestro

Um dos “famosos” truques para apresentar a tela de “Aguarde, carregando…”, para impressionar o usuário com uma Splash Screen bonita. rsrsrs

danieldestro

Nome da classe: [color=blue]Cobranca[/color][color=orange]WebService[/color][color=green]Delegate[/color][color=red]ServiceLocator[/color]

Isso é o que eu chamo de multi-pattern!

francislon

O if…else que eu nem acreditei quando vi:

if ( num >= 10 ) { //codigo } else { if ( num < 10 ) { //codigo } else { //me diga quando o fluxo do programa entrará nesse else? ¬¬ } }

danieldestro

Olha, vou dizer que tem programador que tem o “dom” de fazer isso funcionar… hahahahaha

O

public boolean isEmpty() { return ((lista == null) && (lista.size() != 0)); }

danieldestro

Super-jeito-bom-de-tratar-exceção:

try { // algum código aqui } catch( ValidacaoException e ) { String erro = this.converterI18NMessageKeys(e); // converte as KEYS da exceção para mensagens i18n String msgNenhumRegistro = converterI18NMessageKey("msg.009")+"<br/>"; // pega mensagem i18n if ( erro.equals(msgNenhumRegistro) ) { // lançar erro de inconsistência da base de dados throw new AjaxException(converterI18NMessageKey("msg.0128.erro.base.inconsistente")); } }

“Super-bom” comparar as mensagens i18n da exceção para ver o “tipo” do erro, ainda mais com HTML incluso. Acho que neste caso um código ajudaria.

luistiagos

ozix:
public boolean isEmpty() { return ((lista == null) && (lista.size() != 0)); }

esse ai logo logo vai receber um belo de um NullPointerException

lina

Oi,

Revirando a codificação da sun:

/** * Provides a hint as to whether or not newly created <code>JDialog</code>s * should have their Window decorations (such as borders, widgets to * close the window, title...) provided by the current look * and feel. If <code>defaultLookAndFeelDecorated</code> is true, * the current <code>LookAndFeel</code> supports providing window * decorations, and the current window manager supports undecorated * windows, then newly created <code>JDialog</code>s will have their * Window decorations provided by the current <code>LookAndFeel</code>. * Otherwise, newly created <code>JDialog</code>s will have their * Window decorations provided by the current window manager. * <p> * You can get the same effect on a single JDialog by doing the following: * <pre> * JDialog dialog = new JDialog(); * dialog.setUndecorated(true); * dialog.getRootPane().setWindowDecorationStyle(JRootPane.PLAIN_DIALOG); * </pre> * * @param defaultLookAndFeelDecorated A hint as to whether or not current * look and feel should provide window decorations * @see javax.swing.LookAndFeel#getSupportsWindowDecorations * @since 1.4 */ public static void setDefaultLookAndFeelDecorated(boolean defaultLookAndFeelDecorated) { if (defaultLookAndFeelDecorated) { SwingUtilities.appContextPut(defaultLookAndFeelDecoratedKey, Boolean.TRUE); } else { SwingUtilities.appContextPut(defaultLookAndFeelDecoratedKey, Boolean.FALSE); } }

:twisted:

Tchauzin!

L

if(condicao){ //não faz nada }else{ //o código aqui }

ps:. tinha exatamente esse coment…“não faz nada”
acho q n conhecia o “!condicao”

mario.fts

não é código, mas continua tosco:

ramilani12

danieldestro:
Nome da classe: [color=blue]Cobranca[/color][color=orange]WebService[/color][color=green]Delegate[/color][color=red]ServiceLocator[/color]

Isso é o que eu chamo de multi-pattern!

q nada é híbrido!

Andre_Fonseca

String yes_no = rs.getString("foo"); if (yes_no != null) { if ( yes_no.equals("Y") || yes_no.equals("YES") || yes_no.equals("Yes") || yes_no.equals("y") || yes_no.equals("yes") ) ret = true; }

albertongai

André Fonseca:
String yes_no = rs.getString("foo"); if (yes_no != null) { if ( yes_no.equals("Y") || yes_no.equals("YES") || yes_no.equals("Yes") || yes_no.equals("y") || yes_no.equals("yes") ) ret = true; }

bacana ein!

A

André Fonseca:
String yes_no = rs.getString("foo"); if (yes_no != null) { if ( yes_no.equals("Y") || yes_no.equals("YES") || yes_no.equals("Yes") || yes_no.equals("y") || yes_no.equals("yes") ) ret = true; }

Só faltou comparar caso seja não :lol:

[risos]

ramilani12

André Fonseca:
String yes_no = rs.getString("foo"); if (yes_no != null) { if ( yes_no.equals("Y") || yes_no.equals("YES") || yes_no.equals("Yes") || yes_no.equals("y") || yes_no.equals("yes") ) ret = true; }

Alguem avisa para cidadao que existe equalsIgnoreCase() :slight_smile: :slight_smile:

danieldestro

Ele esqueceu de testar todas as possíveis:

yes
Yes
yEs
yeS
YES
YEs
YeS
yES

haaahhahaha

danieldestro

Adoro a criatividade na hora de dar nomes.

DAOConsultaConsultaAplicacao

É o pattern Pleonasmo Vicioso.

ViniGodoy

Eu já vi:
DaoConsultaDaoConsulta

Marky.Vasconcelos

Ja vi um método que se chamava.

boolean podeConsultar(String sql)

Nesse método verificava se havia algum dado que pude-se ser resgatado e retornava um boolean.

Eu ein…

andrerios

Já levei bronca de “senior” (o kra tinha 4 anos na empresa e só trabalhou la, e com um framework proprio td feito com JavaSE, Swing) pq eu usei operador ternário em uma condicao simples como no exemplo:

<condicaoQueNaoLembro> ? true : false;

ao invez de:

if(<condicaoQueNaoLembro>) {
  return true;
} else {
  return false;
}

A justificativa dele nem foi por questão de legibilidade e sim de performance hahahaha ele dizia que operador ternario leva o dobro do tempo de um if normal… so se for o dobro do tempo pra ele (programador) entender o que está sendo feito

dm_thiago

andrerios:
Já levei bronca de “senior” (o kra tinha 4 anos na empresa e só trabalhou la, e com um framework proprio td feito com JavaSE, Swing) pq eu usei operador ternário em uma condicao simples como no exemplo:

<condicaoQueNaoLembro> ? true : false;

ao invez de:

if(<condicaoQueNaoLembro>) {
  return true;
} else {
  return false;
}

A justificativa dele nem foi por questão de legibilidade e sim de performance hahahaha ele dizia que operador ternario leva o dobro do tempo de um if normal… so se for o dobro do tempo pra ele (programador) entender o que está sendo feito

de todo o jeito, acho que o melhor era fazer

return condicaoQueNaoLembro
ViniGodoy

Você podia agrada-lo:

List<Boolean> condicoes = new ArrayList<Boolean>();
condicoes.add(true);
condicoes.add(false);

int index = condicaoQueNaoLembro ? (18720 % 10) : (192812701 % 100);
return condicoes.get(index);
andrerios

dm_thiago:
andrerios:
Já levei bronca de “senior” (o kra tinha 4 anos na empresa e só trabalhou la, e com um framework proprio td feito com JavaSE, Swing) pq eu usei operador ternário em uma condicao simples como no exemplo:

<condicaoQueNaoLembro> ? true : false;

ao invez de:

if(<condicaoQueNaoLembro>) {
  return true;
} else {
  return false;
}

A justificativa dele nem foi por questão de legibilidade e sim de performance hahahaha ele dizia que operador ternario leva o dobro do tempo de um if normal… so se for o dobro do tempo pra ele (programador) entender o que está sendo feito

de todo o jeito, acho que o melhor era fazer

return condicaoQueNaoLembro

Nao retornava true/false direto senao com certeza usaria essa ideia… foi so um exemplo :wink:

condicaoQueNaoLembro ? fazAlgoSeTrue() : fazAlgoSeFalse();
andrerios
ViniGodoy:
Você podia agrada-lo:
List<Boolean> condicoes = new ArrayList<Boolean>();
condicoes.add(true);
condicoes.add(false);

int index = condicaoQueNaoLembro ? (18720 % 10) : (192812701 % 100);
return condicoes.get(index);

Ai de duas uma, ou ele se demitia ou se matava hahahaha

JonathanSSantos

imagina isso entao:

public boolean continuaValidacao(){
   boolean continuaValidando = true;
   List<Usuario> usuarios = DAO.getAllUsuarios();
   for (Usuario user : usuarios){
      continuaValidando = (user != null ? true : false);
   }
   return continuaValidando;
}

HAHA

Marky.Vasconcelos
ViniGodoy:
Você podia agrada-lo:
List<Boolean> condicoes = new ArrayList<Boolean>();
condicoes.add(true);
condicoes.add(false);

int index = condicaoQueNaoLembro ? (18720 % 10) : (192812701 % 100);
return condicoes.get(index);

Demorei pra entender que só o que importava é o 18720 e 192812701.
Levei um susto quando vi.
Pensei que fosse outro jogo binario que nem um que voce postou uma vez para pegar os maiores numeros.

g4j

JonathanSSantos:
imagina isso entao:

public boolean continuaValidacao(){
   boolean continuaValidando = true;
   List<Usuario> usuarios = DAO.getAllUsuarios();
   for (Usuario user : usuarios){
      continuaValidando = (user != null ? true : false);
   }
   return continuaValidando;
}

HAHA

kkk, não acredito que alguem possa implementar algo assim…

Esqueceu de pedir a alternativa: Qual a pior?
código inútil? operador ternário inútil? falta de um teste para parar o for?

g4j

já vi varias “coisas” do tipo:

if (sql == null) {
       executa(sql);
} else {
       executa(sql);
       executaOutro(cliente);
}
Ataxexe

Enquanto isso, no código da infraestrutura:

this.persistenceAlias = persistenceAlias();   //MALWARE
//  this.persistenceAlias = "alias";

// MALWARE temporario - INICIO
protected static String persistenceAlias() {
// ... código louco aqui
}
// MALWARE temporario - FIM

e, logo após o susto:

// result: [i][0] holds key for entry on SELECT control,
//         [i][1] holds value,
//         [i][2] indicates whether the entry is selected
Object[][] result = null;

O legal é que disseram que na época da construção do sistema (2001) não existiam design patterns.

De repente o Java também não era orientado a objetos naquela época...

danieldestro

Esse pessoal POGueiro deveria usar estas camisas: http://www.cafepress.com/codergear/5033878

Java_Boy

danieldestro:
Esse pessoal POGueiro deveria usar estas camisas: http://www.cafepress.com/codergear/5033878

WTF!?

Será que eles fazem desconto ?!

renamed

A.L:
danieldestro:
Esse pessoal POGueiro deveria usar estas camisas: http://www.cafepress.com/codergear/5033878

WTF!?

Será que eles fazem desconto ?!

eu vi umas camisas mto maneiras na parte q nao e informatica huahuauhahua

“I’m not a ginecologist… but i’ll take a look at it” hauuhauhahua

maikelsperandio
public Boolean existeSemAprovador(Long codigo) throws Exception {
     try {
          ...
          return (Integer) query.uniqueResult() == 1 ? Boolean.TRUE : Boolean.FALSE;

     } catch (Exception e) {
          ...
     }
          ...
     }

E o colega ainda teimou dizendo que era obrigatório o operador ternário. :? Sendo que bastaria apenas um return (Integer) query.uniqueResult() == 1;

kicolobo

É mais um erro de experiência do usuário, mas vamos lá: em um sistema crítico encontrei um recurso que possibilitava excluir todos os registros referentes a uma tabela (especialmente importante).

O usuário clicava em excluir e era exposta uma caixa de diálogo escrito: “Tem certeza de que deseja excluir todos os registros da tabela?”

Havia uma única opção: “Ok”

E se a janela fosse fechada, a exclusão mesmo assim era executada.
Descobrimos isto quando sentimos um tremor de grau 9.4 da escala Richter após um usuário acidentalmente executar a operação.

ramilani12

kicolobo:
É mais um erro de experiência do usuário, mas vamos lá: em um sistema crítico encontrei um recurso que possibilitava excluir todos os registros referentes a uma tabela (especialmente importante).

O usuário clicava em excluir e era exposta uma caixa de diálogo escrito: “Tem certeza de que deseja excluir todos os registros da tabela?”

Havia uma única opção: “Ok”

E se a janela fosse fechada, a exclusão mesmo assim era executada.
Descobrimos isto quando sentimos um tremor de grau 9.4 da escala Richter após um usuário acidentalmente executar a operação.

e o backup? .hehehehehe

Felagund

kicolobo:
É mais um erro de experiência do usuário, mas vamos lá: em um sistema crítico encontrei um recurso que possibilitava excluir todos os registros referentes a uma tabela (especialmente importante).

O usuário clicava em excluir e era exposta uma caixa de diálogo escrito: “Tem certeza de que deseja excluir todos os registros da tabela?”

Havia uma única opção: “Ok”

E se a janela fosse fechada, a exclusão mesmo assim era executada.
Descobrimos isto quando sentimos um tremor de grau 9.4 da escala Richter após um usuário acidentalmente executar a operação.

OH MY GOOD,

é a legitma funcionalidade que ninguem devia ver e sempre tem um usuário que ve auhauhuhauha

Tchello

kicolobo:
É mais um erro de experiência do usuário, mas vamos lá: em um sistema crítico encontrei um recurso que possibilitava excluir todos os registros referentes a uma tabela (especialmente importante).

O usuário clicava em excluir e era exposta uma caixa de diálogo escrito: “Tem certeza de que deseja excluir todos os registros da tabela?”

Havia uma única opção: “Ok”

E se a janela fosse fechada, a exclusão mesmo assim era executada.
Descobrimos isto quando sentimos um tremor de grau 9.4 da escala Richter após um usuário acidentalmente executar a operação.

Só de imaginar a situação já senti calafrios, imagine então vivencia-la =Z
E era requisito executar a operação mesmo que o usuário fechasse a janela sem clicar em OK?

ramilani12

Tchello:
kicolobo:
É mais um erro de experiência do usuário, mas vamos lá: em um sistema crítico encontrei um recurso que possibilitava excluir todos os registros referentes a uma tabela (especialmente importante).

O usuário clicava em excluir e era exposta uma caixa de diálogo escrito: “Tem certeza de que deseja excluir todos os registros da tabela?”

Havia uma única opção: “Ok”

E se a janela fosse fechada, a exclusão mesmo assim era executada.
Descobrimos isto quando sentimos um tremor de grau 9.4 da escala Richter após um usuário acidentalmente executar a operação.

Só de imaginar a situação já senti calafrios, imagine então vivencia-la =Z
E era requisito executar a operação mesmo que o usuário fechasse a janela sem clicar em OK?

não sei como é apresentado para usuário mas é em JS?, o cara q desenvolveu não sabia do famoso confirm?

Eduardo_Bregaida
Afe olha esse que achei num programa velho daqui:
private static int getNumberForSeconds(int i){
		int byte0 = 0;
		
		switch (i){
			case 0:
				byte0 =	11;
				break;
			case 1:
				byte0 =	17;
				break;
			case 2:
				byte0 =	21;
				break;
			case 3:
				byte0 =	31;
				break;				
			case 4:
				byte0 =	56;
				break;
			case 5:
				byte0 =	34;
				break;
			case 6:
				byte0 =	42;
				break;
			case 7:
				byte0 =	3;
				break;
			case 8:			
				byte0 =	18;
				break;
			case 9:
				byte0 =	13;
				break;
			case 10:
				byte0 =	12;
				break;
			case 11:
				byte0 =	18;
				break;
			case 12:
				byte0 =	22;
				break;
			case 13:
				byte0 =	32;
				break;
			case 14:
				byte0 =	57;
				break;
			case 15:
				byte0 =	35;
				break;
			case 16:
				byte0 =	43;
				break;
			case 17:
				byte0 =	4;
				break;
			case 18:
				byte0 =	19;
				break;
			case 19:
				byte0 =	14;
				break;
			case 20:
				byte0 =	9;
				break;
			case 21:
				byte0 =	20;
				break;
			case 22:
				byte0 =	23;
				break;
			case 23:
				byte0 =	33;
				break;
			case 24:
				byte0 =	58;
				break;
			case 25:
				byte0 =	36;
				break;
			case 26:
				byte0 =	44;
				break;
			case 27:
				byte0 =	5;
				break;
			case 28:
				byte0 =	24;
				break;
			case 29:
				byte0 =	15;
				break;
			case 30:
				byte0 =	62;
				break;
			case 31:
				byte0 =	25;
				break;
			case 32:
				byte0 =	34;
				break;
			case 33:
				byte0 =	59;
				break;
			case 34:
				byte0 =	37;
				break;
			case 35:
				byte0 =	45;
				break;
			case 36:
				byte0 =	6;
				break;
			case 37:
				byte0 =	25;
				break;
			case 38:
				byte0 =	16;
				break;
			case 39:
				byte0 =	27;
				break;
			case 40:
				byte0 =	63;
				break;
			case 41:
				byte0 =	26;
				break;
			case 42:
				byte0 =	35;
				break;
			case 43:
				byte0 =	60;
				break;
			case 44:
				byte0 =	38;
				break;
			case 45:
				byte0 =	46;
				break;
			case 46:
				byte0 =	7;
				break;
			case 47:
				byte0 =	26;
				break;
			case 48:
				byte0 =	17;
				break;
			case 49:
				byte0 =	28;
				break;
			case 50:
				byte0 =	14;
				break;
			case 51:
				byte0 =	36;
				break;
			case 52:
				byte0 =	2;
				break;
			case 53:
				byte0 =	39;
				break;
			case 54:
				byte0 =	47;
				break;
			case 55:
				byte0 =	8;
				break;
			case 56:
				byte0 =	29;
				break;
			case 57:
				byte0 =	22;
				break;
			case 58:
				byte0 =	55;
				break;
			case 59:
				byte0 =	33;
			break;
		}
		
		return byte0;
	}
O

Supostamente Configuration é um Singleton, agora se você já gostava de singletons vai gostar muito mais disso:

Configuration c = new Configuration(); Configuration.configuration = c; //... String senha = Configuration.getInstance().getSenha();

thegoergen
Eduardo Bregaida:
Afe olha esse que achei num programa velho daqui:
private static int getNumberForSeconds(int i){
		int byte0 = 0;
		
		switch (i){
			case 0:
				byte0 =	11;
				break;
			case 1:
				byte0 =	17;
				break;
			case 2:
				byte0 =	21;
				break;
			case 3:
				byte0 =	31;
				break;				
			case 4:
				byte0 =	56;
				break;
			case 5:
				byte0 =	34;
				break;
			case 6:
				byte0 =	42;
				break;
			case 7:
				byte0 =	3;
				break;
			case 8:			
				byte0 =	18;
				break;
			case 9:
				byte0 =	13;
				break;
			case 10:
				byte0 =	12;
				break;
			case 11:
				byte0 =	18;
				break;
			case 12:
				byte0 =	22;
				break;
			case 13:
				byte0 =	32;
				break;
			case 14:
				byte0 =	57;
				break;
			case 15:
				byte0 =	35;
				break;
			case 16:
				byte0 =	43;
				break;
			case 17:
				byte0 =	4;
				break;
			case 18:
				byte0 =	19;
				break;
			case 19:
				byte0 =	14;
				break;
			case 20:
				byte0 =	9;
				break;
			case 21:
				byte0 =	20;
				break;
			case 22:
				byte0 =	23;
				break;
			case 23:
				byte0 =	33;
				break;
			case 24:
				byte0 =	58;
				break;
			case 25:
				byte0 =	36;
				break;
			case 26:
				byte0 =	44;
				break;
			case 27:
				byte0 =	5;
				break;
			case 28:
				byte0 =	24;
				break;
			case 29:
				byte0 =	15;
				break;
			case 30:
				byte0 =	62;
				break;
			case 31:
				byte0 =	25;
				break;
			case 32:
				byte0 =	34;
				break;
			case 33:
				byte0 =	59;
				break;
			case 34:
				byte0 =	37;
				break;
			case 35:
				byte0 =	45;
				break;
			case 36:
				byte0 =	6;
				break;
			case 37:
				byte0 =	25;
				break;
			case 38:
				byte0 =	16;
				break;
			case 39:
				byte0 =	27;
				break;
			case 40:
				byte0 =	63;
				break;
			case 41:
				byte0 =	26;
				break;
			case 42:
				byte0 =	35;
				break;
			case 43:
				byte0 =	60;
				break;
			case 44:
				byte0 =	38;
				break;
			case 45:
				byte0 =	46;
				break;
			case 46:
				byte0 =	7;
				break;
			case 47:
				byte0 =	26;
				break;
			case 48:
				byte0 =	17;
				break;
			case 49:
				byte0 =	28;
				break;
			case 50:
				byte0 =	14;
				break;
			case 51:
				byte0 =	36;
				break;
			case 52:
				byte0 =	2;
				break;
			case 53:
				byte0 =	39;
				break;
			case 54:
				byte0 =	47;
				break;
			case 55:
				byte0 =	8;
				break;
			case 56:
				byte0 =	29;
				break;
			case 57:
				byte0 =	22;
				break;
			case 58:
				byte0 =	55;
				break;
			case 59:
				byte0 =	33;
			break;
		}
		
		return byte0;
	}

Caraca!! Mas o que isso aqui era pra fazer?
E o qeu eu aprendi programando é que "Documentação não existe, né?" hahhaha

Eduardo_Bregaida

Hahaha sei lá, estava pegando minutos e passando pra segundos, zuado, sem documentação? e o nome do método? parece padrão Java? :lol:

danieldestro

Sensacional:

msg.setEstado(("" + rsMensagem.getString("ESTADO")).equals("null") ? "" : rsMensagem.getString("ESTADO"));
luiz.portnoy

Não sei se ja postaram isso mas…

for (int i =0; i < 10; i++)
{
   if (i == 4)
   {
    break;
   }
   else
   {
     // faz algo
   }

}

?!?!?!!?
porque nao:

for (int i =0; i <4; i++)
{
  
}
dm_thiago
luiz.portnoy:
Não sei se ja postaram isso mas...
for (int i =0; i < 10; i++)
{
   if (i == 4)
   {
    break;
   }
   else
   {
     // faz algo
   }

}

?!?!?!!?
porque nao:

for (int i =0; i <4; i++)
{
  
}

Porque por algum motivo você poderia alterar o valor de i no meio do método e pular o 4.

Marky.Vasconcelos

Pior que vi algo assim:

public class TestePcExtractDao extends TestCase{
public static void main(String[]args){
System.out.println("0001".compareTo("0002"));
}
}

Fiquei incredulo com a monstruosidade desse teste unitario.

PauloBrito

Bom, não foi em Java, foi em Delphi (ótima IDE para encontrar pérolas), mas vale a pena o frio na espinha. Seria algo assim:

(...)
   int maiorID = [acha o maior id de um conjunto de dados];

   ArrayList<String> array = new ArrayList<String>(maiorID + 1);
   
   for (int id : [ids do cojunto de dados])
      array.set(id, ...)
   (...)

Dessa forma, se eu quero uma informação relacionada ao código 25, uso array.get(25). No caso em questão, o conjunto de dados tinha 4 registros e os códigos iam de 17202010 até 17242010! Ou seja, um array de quase 2 milhões de posições para guardar 4 valores!

Imagina se os ids fossem CNPJs!

M
public OutputStream getOutputStream() throws IOException {
		throw new IOException("cannot do this"); //OH RLY?!?!?!
}

Outra que eu vi que não tenho acesso ao código agora foi o seguinte,

Era um método que fazia um calculo muito complexo. E no final do código tinha o seguinte comentario


/**
*
*Esse método foi implementado graças a CHUCK NORRIS
*
**/

Aonde trabalhamos parou por uma hora com a piada.
Observação, o resultado do código ainda estava errado.

mario.fts

Quando eu vi isso:

Map<Integer, Map<Integer, Map<Integer, Map<Integer, Map<Integer, List<Carta>>>>>> cartasSol = new HashMap<Integer, Map<Integer, Map<Integer, Map<Integer, Map<Integer, List<Carta>>>>>>();

Eu fiquei assustado. Mas nada se compara a utilização desta variável:

for (Entry<Integer, Map<Integer, Map<Integer, Map<Integer, Map<Integer, List<Carta>>>>>> _entryEnc : cartas.entrySet()) {  
				for (Entry<Integer, Map<Integer, Map<Integer, Map<Integer, List<Carta>>>>> _entryOp : _entryEnc.getValue().entrySet())   
					for (Entry<Integer, Map<Integer, Map<Integer, List<Carta>>>> _entryProd : _entryOp.getValue().entrySet())   
						for (Entry<Integer, Map<Integer, List<Carta>>> _entryOper : _entryProd.getValue().entrySet())   
							for (Entry<Integer, List<Carta>> _entryEmp : _entryOper.getValue().entrySet()){
									
								Carta carta = _entryEmp.getValue().get(0);
....

Do caralho né?

R

mario.fts:
Quando eu vi isso:

Map<Integer, Map<Integer, Map<Integer, Map<Integer, Map<Integer, List<Carta>>>>>> cartasSol = new HashMap<Integer, Map<Integer, Map<Integer, Map<Integer, Map<Integer, List<Carta>>>>>>();

Eu fiquei assustado. Mas nada se compara a utilização desta variável:

for (Entry<Integer, Map<Integer, Map<Integer, Map<Integer, Map<Integer, List<Carta>>>>>> _entryEnc : cartas.entrySet()) {  
				for (Entry<Integer, Map<Integer, Map<Integer, Map<Integer, List<Carta>>>>> _entryOp : _entryEnc.getValue().entrySet())   
					for (Entry<Integer, Map<Integer, Map<Integer, List<Carta>>>> _entryProd : _entryOp.getValue().entrySet())   
						for (Entry<Integer, Map<Integer, List<Carta>>> _entryOper : _entryProd.getValue().entrySet())   
							for (Entry<Integer, List<Carta>> _entryEmp : _entryOper.getValue().entrySet()){
									
								Carta carta = _entryEmp.getValue().get(0);
....

Do caralho né?

Esse merecia um Oscar…

deniswsrosa

mario.fts:
Quando eu vi isso:

Map<Integer, Map<Integer, Map<Integer, Map<Integer, Map<Integer, List<Carta>>>>>> cartasSol = new HashMap<Integer, Map<Integer, Map<Integer, Map<Integer, Map<Integer, List<Carta>>>>>>();

Eu fiquei assustado. Mas nada se compara a utilização desta variável:

for (Entry<Integer, Map<Integer, Map<Integer, Map<Integer, Map<Integer, List<Carta>>>>>> _entryEnc : cartas.entrySet()) {  
				for (Entry<Integer, Map<Integer, Map<Integer, Map<Integer, List<Carta>>>>> _entryOp : _entryEnc.getValue().entrySet())   
					for (Entry<Integer, Map<Integer, Map<Integer, List<Carta>>>> _entryProd : _entryOp.getValue().entrySet())   
						for (Entry<Integer, Map<Integer, List<Carta>>> _entryOper : _entryProd.getValue().entrySet())   
							for (Entry<Integer, List<Carta>> _entryEmp : _entryOper.getValue().entrySet()){
									
								Carta carta = _entryEmp.getValue().get(0);
....

Do caralho né?

Depois dessa podem trancar o tópico pq não vai aparecer código mais tosco que isso…

Códigos Toscos Winner!

M

Coisas assim faz me ter que pegar um caderno e desenhar o que esta acontecendo.

lucas_carvalho100

mario.fts:
Quando eu vi isso:

Map<Integer, Map<Integer, Map<Integer, Map<Integer, Map<Integer, List<Carta>>>>>> cartasSol = new HashMap<Integer, Map<Integer, Map<Integer, Map<Integer, Map<Integer, List<Carta>>>>>>();

Eu fiquei assustado. Mas nada se compara a utilização desta variável:

for (Entry<Integer, Map<Integer, Map<Integer, Map<Integer, Map<Integer, List<Carta>>>>>> _entryEnc : cartas.entrySet()) {  
				for (Entry<Integer, Map<Integer, Map<Integer, Map<Integer, List<Carta>>>>> _entryOp : _entryEnc.getValue().entrySet())   
					for (Entry<Integer, Map<Integer, Map<Integer, List<Carta>>>> _entryProd : _entryOp.getValue().entrySet())   
						for (Entry<Integer, Map<Integer, List<Carta>>> _entryOper : _entryProd.getValue().entrySet())   
							for (Entry<Integer, List<Carta>> _entryEmp : _entryOper.getValue().entrySet()){
									
								Carta carta = _entryEmp.getValue().get(0);
....

Do caralho né?

Agora imagina vc entrando em uma empresa que tem um código desse… e os caras mais velhos jogam essa bomba na sua mão(o cara novo ta empolgado da isso pra ele)… kkkkk…

Foda …

Alexandre_Saudate

deniswsrosa:

Depois dessa podem trancar o tópico pq não vai aparecer código mais tosco que isso…

Códigos Toscos Winner!

Putz, esse merece mesmo…

O tópico tem, aproximadamente:

4 anos,
700 respostas,
77000 visualizações

e esse é o mais tosco!!! Cara, precisa ser muito bom pra superar essa concorrência!!! :lol:

Tchello

Hoje, dando manutenção num sistema antigo, mau feito, porco, altamente acoplado e “baixamente” coeso (tem coisa de tudo qto é função pra todo lado, em toda parte do sistema).

Eis que encontro essa forma… alegórica, digamos assim, de iterar em um Vector (eles não conhecem List) :

Vector lista = DAO.recuperaLista(); //o mané recupera a lista com vector, sim, sem user generics
				
		   int i = 0; //o mané declara esse int e nunca usa				
			
                  //agora o artista se revela de vez, nunca tinha imaginado uma iteração tão.. ahnn.... linda.

		  while (!lista.isEmpty() ) {								
			chamaUmMetdo((MeuObjectoVO)lista.remove(0));				
                 }

Ok, ainda ta “legível”, mas o resto do código, minha nossa.

Andre_Fonseca

essa é clássica

int i=0;

while (true) {
  if (i==3) {
    break;
  }
  i++;
}
luistiagos
public String getFormatoArquivo() {
        String wnome = null;
        if (Arquivo.getName().endsWith(".jpeg")) {
            wnome = new String("jpeg");
        }
        if (Arquivo.getName().endsWith(".jpg")) {
            wnome = new String("jpg");
        }
        if (Arquivo.getName().endsWith(".gif")) {
            wnome = new String("gif");
        }
        if (Arquivo.getName().endsWith(".png")) {
            wnome = new String("png");
        }
        if (Arquivo.getName().endsWith(".pcx")) {
            wnome = new String("pcx");
        }
        if (Arquivo.getName().endsWith(".pij")) {
            wnome = new String("pij");
        }
        return wnome;
    }
A

luistiagos:
public String getFormatoArquivo() { String wnome = null; if (Arquivo.getName().endsWith(".jpeg")) { wnome = new String("jpeg"); } if (Arquivo.getName().endsWith(".jpg")) { wnome = new String("jpg"); } if (Arquivo.getName().endsWith(".gif")) { wnome = new String("gif"); } if (Arquivo.getName().endsWith(".png")) { wnome = new String("png"); } if (Arquivo.getName().endsWith(".pcx")) { wnome = new String("pcx"); } if (Arquivo.getName().endsWith(".pij")) { wnome = new String("pij"); } return wnome; }

Na verdade isto é um padrão mundialmente aceito como pode ser visto nesta coleção de patterns.

Provavelmente por isso achei um código muito semelhante em um projeto que estou trabalhando essa semana.

Marky.Vasconcelos

Nossa, essa eu vi em um projeto aqui, nem acreditei.

public Connection getConnection() throws SQLException {

        if (conexao == null) {
            throw new SQLException("Conexao para acesso ao MSSQL negada. Tente mais tarde.");
        }
        return conexao;

    }

“Tente mais tarde”? HuHAuaHua

adriano_si

Marky.Vasconcelos:
Nossa, essa eu vi em um projeto aqui, nem acreditei.

public Connection getConnection() throws SQLException {

        if (conexao == null) {
            throw new SQLException("Conexao para acesso ao MSSQL negada. Tente mais tarde.");
        }
        return conexao;

    }

“Tente mais tarde”? HuHAuaHua

Tente mais tarde… heuehueeheueheue e aí, mais tarde o SQL continua errado, e o usuário entra no LOOP infinito de tentar mais tarde…

Hauahauahauahauahauahauahauhauha, muito boa… a Galera tá rachando de rir aqui na empresa…

Anime

Adorei… :stuck_out_tongue:

Não sabia o que era POG…Fiquei com vergonha de perguntar… :stuck_out_tongue: :roll:

Eduardo_Bregaida

Marky.Vasconcelos:
Nossa, essa eu vi em um projeto aqui, nem acreditei.

public Connection getConnection() throws SQLException {

        if (conexao == null) {
            throw new SQLException("Conexao para acesso ao MSSQL negada. Tente mais tarde.");
        }
        return conexao;

    }

“Tente mais tarde”? HuHAuaHua

huauhauhhua pior que isso é cara usando:

try{ //aqui faz algo }catch (Exception e){ //aqui faz algo se não passou no try }

No lugar de usar um if, ele alegava ser mais rápido kkkkkkkkkkkkk :lol:

try{ //aqui faz algo }catch (Exception e){ }

Ou isso um catch seco, sem nada para ser tratado kkkkkkkkkkkkk :lol:

Priuli

adriano_si:
Marky.Vasconcelos:
Nossa, essa eu vi em um projeto aqui, nem acreditei.

public Connection getConnection() throws SQLException {

        if (conexao == null) {
            throw new SQLException("Conexao para acesso ao MSSQL negada. Tente mais tarde.");
        }
        return conexao;

    }

“Tente mais tarde”? HuHAuaHua

Tente mais tarde… heuehueeheueheue e aí, mais tarde o SQL continua errado, e o usuário entra no LOOP infinito de tentar mais tarde…

Hauahauahauahauahauahauahauhauha, muito boa… a Galera tá rachando de rir aqui na empresa…

Esta pérola deve ta em tudo que é lugar… Aqui peguei um sistema feito a 3 anos com VRaptor e tb segue a risca este padrão de tente novamente eterno… Só que o projeto usa hibernate e não JDBC… rsss

huiahuiaa

victorwss

Essa foi um amigo meu que viu:

int numero = Integer.parseInt(new Integer("".length()).toString());
luistiagos

[quote=victorwss]Essa foi um amigo meu que viu:

int numero = Integer.parseInt(new Integer("".length()).toString());

WTF :shock: :shock: :shock:

Anime

[quote=victorwss]Essa foi um amigo meu que viu:

int numero = Integer.parseInt(new Integer("".length()).toString());

Criativo… :stuck_out_tongue:

drigo.angelo

[quote=victorwss]Essa foi um amigo meu que viu:

int numero = Integer.parseInt(new Integer("".length()).toString());

My eyes… are bleeding :shock:

adriano_si

Acho que poderíamos excluir essa última pérola, sendo que é de um de nossos amigos ativos aqui no fórum, que embora seja iniciante, ajuda bastante alguns outros iniciantes… Logo ainda não tem a experiência e o conhecimento da API apurados… Poderíamos dispensar ou manter o tópico sem conhecimento dos autores…

Enfim… é minha opnião…

Abs []

danieldestro

adriano_si:
Acho que poderíamos excluir essa última pérola, sendo que é de um de nossos amigos ativos aqui no fórum, que embora seja iniciante, ajuda bastante alguns outros iniciantes… Logo ainda não tem a experiência e o conhecimento da API apurados… Poderíamos dispensar ou manter o tópico sem conhecimento dos autores…

Enfim… é minha opnião…

Abs []

Link removido para manter anonimato do usuario.

Ironlynx

Na verdade isto é um padrão mundialmente aceito como pode ser visto nesta coleção de patterns.

Provavelmente por isso achei um código muito semelhante em um projeto que estou trabalhando essa semana.


Fala nada não que outro dia eu encontrei uns velhos códigos da Sun com bizarrices semelhantes…

int numero = Integer.parseInt(new Integer("".length()).toString());

Esse é um mago! :lol:

A
Foxlol:
public class Teste {
		
	public static void main(String args[]) {	                                       
		String teste = "*";
		if (teste.contains("*") && new StringUtil().isStringValida(teste)) {
			System.out.print("funcionou\n");
		} else {
			System.out.print("nao funcionou\n");
		}
	}
}

class StringUtil{
	
	public boolean isStringValida(String valor){
		boolean flag = false;
		final String caracteresNaoAprovados[] = {
				"a","b","c","d","e","f","g","h","i","j","l","m","n","o","p","q",
				"r","s","t","u","v","x","z","k","w","y","1","2","3","4","5","6",
				"7","8","9","0","/","´",",",".","?","!","'","\"",")","(","&","%",
				"-","+","$","#",
		};
		forMae : for (int i = 0; i < valor.length(); i++) { 
			for (int j = 0; j < caracteresNaoAprovados.length; j++) {
				if (caracteresNaoAprovados[j].equalsIgnoreCase(String.valueOf(valor.charAt(i)))) {
					flag = false;
					break forMae;
				}else{
					flag = true;
				}
			}
		}
		if (flag) {
			return true;
		}else{
			return false;
		}
	}
}

Olá Foxlol, belê? :D

Concordo ficou pouco elegante esse código, eu fui o autor dele, sei que ficou pouco performático também tenho "ciência disso hehehe" menos mal né? hehehe...

Cara é o seguinte, por exemplo o davidbuzatto, gosto da postura dele, ele critíca mas dá uma solução/sugere soluções alternativas, aliás ele já me ajudou muitas vezes, resumindo,
gostaria, se não fosse pedir muito que você desse-nos uma solução alternativa ao código postado por mim, gostaria de ver como você resolveria. Topa o desafio? Ou vai frangar? hehehe...

Abraços e espero que não me entenda mal heim.

André AS

danieldestro

Acho que não vou precisar remover tópico mal educado ou de provocações, vou?

victorwss

Tópico não. Mensagem talvez. Mas por enquanto não temos (eu acho) nada de errado aqui, apenas um usuário desafiando outro de uma forma até agora saudável.

Anime

Achei de muito mal gosto, ficar comentando dessa forma o código de um usuário, se for assim vai ter muito código para comentar, meu mesmo tem vários, agora sei que não fiz da melhor forma, mas na época me pareceu correto… :roll:

Melhorou… :wink:

davidbuzatto

adriano_si:
Acho que poderíamos excluir essa última pérola, sendo que é de um de nossos amigos ativos aqui no fórum, que embora seja iniciante, ajuda bastante alguns outros iniciantes… Logo ainda não tem a experiência e o conhecimento da API apurados… Poderíamos dispensar ou manter o tópico sem conhecimento dos autores…

Enfim… é minha opnião…

Abs []

É verdade. Falha a minha de dar corda, mas não resisti.
Acredito que não seja nem questão de falta de conhecimento da API, mas falta de parar e pensar um pouquinho, o que me parece ser o motivo da maioria dos códigos “toscos” postados aqui não é mesmo? Não é vergonha para ninguém fazer alguma coisa que parece absurda para os outros. Quem aqui já não fez algo do tipo? Acho que se a gente for levar a ferro e fogo tudo que rola no GUJ, o fórum vai virar uma guerra. Eu mesmo já fiz cada uma… Acontece pessoal. Vamos relaxar certo? Aqui tem um projeto que postei fazem dois anos. Eu não era nenhum iniciante, mas baixem os fontes e vejam o tanto de código tosco que tem dentro do projeto (não é taaanto tbm hehehehe). Ta certo, nem parei para refatorar nada, era só um passa tempo para distrair a cabeça, mas acontece. Vejam a linha 117 da classe JPanelEstado. Tosquíssimo :smiley:

André, não é nada pessoal viu cara. Concordo plenamente com o que o Adriano disse. Vc é um cara super esforçado e que sempre tenta contribuir com o GUJ, além de ter uma postura sempre muito pacata, não se ofendendo facilmente. Ponto para você! :wink:
Concordo com o Victor. O André só está propondo que o outro colega faça algo diferente.

Anime, não é questão de bom ou mal gosto, a questão é saber entender. Tem gente que vai ficar chateado, isso é fato, mas tem gente que vai aprender com isso. Eu por exemplo, se alguém criticasse algo que fiz, com certeza iria parar e pensar ao invés de ficar ofendido. Todo mundo está aqui para aprender. Tenho consciência que as vezes sou até um pouco mal educado em algumas respostas, mas a intenção é sempre ajudar, pq se a intenção não fosse essa, eu nem “perderia” tempo acessando o GUJ ou ajudando na moderação. Já que estamos criticando, posso fazer uma crítica Anime? Coloque um espaço depois das pontuações no seu texto. Confesso que sofro para ler o que você escreve na maioria das vezes :smiley:

[]'s

Anime

davidbuzatto:
adriano_si:
Acho que poderíamos excluir essa última pérola, sendo que é de um de nossos amigos ativos aqui no fórum, que embora seja iniciante, ajuda bastante alguns outros iniciantes… Logo ainda não tem a experiência e o conhecimento da API apurados… Poderíamos dispensar ou manter o tópico sem conhecimento dos autores…

Enfim… é minha opnião…

Abs []

É verdade. Falha a minha de dar corda, mas não resisti.
Acredito que não seja nem questão de falta de conhecimento da API, mas falta de parar e pensar um pouquinho, o que me parece ser o motivo da maioria dos códigos “toscos” postados aqui não é mesmo? Não é vergonha para ninguém fazer alguma coisa que parece absurda para os outros. Quem aqui já não fez algo do tipo? Acho que se a gente for levar a ferro e fogo tudo que rola no GUJ, o fórum vai virar uma guerra. Eu mesmo já fiz cada uma… Acontece pessoal. Vamos relaxar certo? Aqui tem um projeto que postei fazem dois anos. Eu não era nenhum iniciante, mas baixem os fontes e vejam o tanto de código tosco que tem dentro do projeto (não é taaanto tbm hehehehe). Ta certo, nem parei para refatorar nada, era só um passa tempo para distrair a cabeça, mas acontece. Vejam a linha 117 da classe JPanelEstado. Tosquíssimo :smiley:

André, não é nada pessoal viu cara. Concordo plenamente com o que o Adriano disse. Vc é um cara super esforçado e que sempre tenta contribuir com o GUJ, além de ter uma postura sempre muito pacata, não se ofendendo facilmente. Ponto para você! :wink:
Concordo com o Victor. O André só está propondo que o outro colega faça algo diferente.

Anime, não é questão de bom ou mal gosto, a questão é saber entender. Tem gente que vai ficar chateado, isso é fato, mas tem gente que vai aprender com isso. Eu por exemplo, se alguém criticasse algo que fiz, com certeza iria parar e pensar ao invés de ficar ofendido. Todo mundo está aqui para aprender. Tenho consciência que as vezes sou até um pouco mal educado em algumas respostas, mas a intenção é sempre ajudar, pq se a intenção não fosse essa, eu nem “perderia” tempo acessando o GUJ ou ajudando na moderação. Já que estamos criticando, posso fazer uma crítica Anime? Coloque um espaço depois das pontuações no seu texto. Confesso que sofro para ler o que você escreve na maioria das vezes :smiley:

[]'s

Desculpe, mas não foi uma critica e sim minha opinião, ou será que pode ser visto como critica, estou confusa… :roll: Sabe nunca fui boa nesse negocio de pontuação e digitação, quando fiz curso, fazia de conta que estava fazendo as coisas e não fazia nada rsrs… Ué, eu não gostava… Acho que exagerei no espaço agora, espero que não sofra tanto… : )

Obs: Você perguntou se podia fazer a critica, mas não esperou eu responder… : )

programadora

Gente, tbm acho que tem gente que se ofende fácil aqui no GUJ, mas tudo depende de como as coisas são colocadas.
Não é novidade pra ninguém que quando se trata de internet, um texto pode ser interpretado de diversas formas e as pessoas podem levar a mal um comentário que não tinha a menor intenção de ser maldoso.
Na minha opinião, esse tópico começou bem, como uma crítica construtiva para nós desenvolvedores melhorarmos a qualidade de nossos códigos, mas depois passou a ser mesmo “zuação” o que eu, particularmente, não concordo. Quem nunca se viu numa situação de “desespero”, tendo um prazo apertado e fazendo uma POG? Quem falar que nunca fez, tá mentindo. hehehe

Vlws

adriano_si

davidbuzatto:

Tem gente que vai ficar chateado, isso é fato, mas tem gente que vai aprender com isso. Eu por exemplo, se alguém criticasse algo que fiz, com certeza iria parar e pensar ao invés de ficar ofendido.

Verdade David, tbm não encararia como ofensa… o problema é que no fórum, essa linha é muito tênue e diferente de você, as demais pessoas estavam debochando e não apenas perplexos… heueheuheue

A verdade é que eu também ainda faço código toscos. Outro dia refatorando uma classe minha… nussa…

tinha algo do tipo

if(condMinha == 0) { return true; } else { return false; } Heuheueheueehueheueehue… acontece com todo mundo eu acho… O grande problema dos que encontramos no fórum, muitas vezes não é porque a pessoa não quis pensar um pouquinho, é porque não tinha tempo pra pensar com o chefe pressionando a entrega 8) hhihihihihihhihi

Abs []

danieldestro

Quem nunca fez um código tosco que aperte a primeira tecla.

Andre_Fonseca

Principalmente quando tem aquela classe de 30 mil linhas de código do sistema “crítico” que está rodando em produção já a alguns anos :slight_smile:

A

Olá gente, bom dia a todos… :smiley:

Adoro receber dicas, quem quiser, fique a vontade para me propor idéias…

Foxlol, não vai encarar o desafio?! [color=darkblue]Or don’t you like any challenge LOL?![/color] 8)

Queria aproveitar a deixa só para agradecer em especial ao André Fonseca e ao David que já me ajudaram muitas vezes, direta ou indiretamente…

Abraços e obrigado pela atenção de todos.

André AS

danieldestro

A solução está no próprio tópico.

Eduardo_Bregaida

Pensem em como esse tópico nos ajuda.
Hoje vc fez um código assim:

if(a==2){ return true; }else{ return false; }
Dai você estudou mais, fez outros códigos, conheceu outros programadores, leu refactoring, etc, quer dizer que vc evoluiu, depois de 1 ano vc vê essse codigo e melhora.
A cada ano que passa você deve abrir seu fonte do ano anterior e ver, se achar que pode ser melhorado é porque você aprendeu, no dia que achar que fez um código perfeito significa que não aprendeu mais nada, saia da empresa que está, vá estudar mais, pois você parou e isso não é bom, aprendi isso com o Paulo Silveira e sigo como regra até hoje.
Esse tópico além de mostrar erros dos nossos projetos, também mostra como melhoramos para notar esse erro (muitas vezes nós que fazemos e acabamos postando aqui), mas independente de quem fez, você notou o erro, a má eficiência, etc, logo você evoluiu, é o que este tópico quer dizer.
Não estamos aqui para julgar fonte de ninguém, nem ficar tirando sarro das pessoas que o fizeram.
Então vamos parar de mimimi que eu achei outro código tosco no projeto kkkkk :lol:

if (itemVO.isVendido()==true)
{
	item.setStatus("0");
}
else
{
	item.setStatus("1");
	item.setObservacao("");
}

Detalhe existe um Enum aonde estão aqueles Magic Numbers String e que diabo uma variável boolean precisa de um == true… hoje está assim:

if (itemVO.isVendido())
{
	item.setStatus(EnumVenda.VENDA);
}
	item.setStatus(EnumVenda.ESTORNO);

O campo observação foi colocado no reset do formulário onde deveria estar. :smiley:

Abdon

“Ta bunitu” minha gente!!!

private void listaPaises(UsuarioVO usuario) { Collection results = new ArrayList(); PaisVO pais = new PaisVO(); pais.setCodigo("ACS"); pais.setDescricao("Açores"); results.add(pais); pais = new PaisVO(); pais.setCodigo("ADA"); pais.setDescricao("Adélia"); results.add(pais); pais = new PaisVO(); pais.setCodigo("ATO"); pais.setDescricao("Afeganistão"); results.add(pais); pais = new PaisVO(); pais.setCodigo("ASL"); pais.setDescricao("África do Sul"); results.add(pais); pais = new PaisVO(); pais.setCodigo("AAC"); pais.setDescricao("Alasca"); results.add(pais); pais = new PaisVO(); pais.setCodigo("ABA"); pais.setDescricao("Albânia"); results.add(pais); pais = new PaisVO(); pais.setCodigo("AMA"); pais.setDescricao("Alemanha"); results.add(pais); pais = new PaisVO(); pais.setCodigo("ADR"); pais.setDescricao("Andorra"); results.add(pais); pais = new PaisVO(); pais.setCodigo("ANG"); pais.setDescricao("Angola"); results.add(pais); pais = new PaisVO(); pais.setCodigo("ANL"); pais.setDescricao("Anguila"); results.add(pais); pais = new PaisVO(); pais.setCodigo("ATR"); pais.setDescricao("Antártica"); results.add(pais); pais = new PaisVO(); pais.setCodigo("ATG"); pais.setDescricao("Antigua"); results.add(pais); pais = new PaisVO(); pais.setCodigo("ATN"); pais.setDescricao("Antilhas Holandesas"); results.add(pais); pais = new PaisVO(); pais.setCodigo("ARD"); pais.setDescricao("Arábia Saudita"); results.add(pais); pais = new PaisVO(); pais.setCodigo("AGA"); pais.setDescricao("Argélia"); results.add(pais); pais = new PaisVO(); pais.setCodigo("ATA"); pais.setDescricao("Argentina"); results.add(pais); pais = new PaisVO(); pais.setCodigo("ANA"); pais.setDescricao("Armênia"); results.add(pais); pais = new PaisVO(); pais.setCodigo("AUA"); pais.setDescricao("Aruba"); results.add(pais); pais = new PaisVO(); pais.setCodigo("AIA"); pais.setDescricao("Austrália"); results.add(pais); pais = new PaisVO(); pais.setCodigo("ASA"); pais.setDescricao("Áustria"); results.add(pais); pais = new PaisVO(); pais.setCodigo("AZO"); pais.setDescricao("Azerbaijão"); results.add(pais); pais = new PaisVO(); pais.setCodigo("BHS"); pais.setDescricao("Bahamas"); results.add(pais); pais = new PaisVO(); pais.setCodigo("BRN"); pais.setDescricao("Bahrein"); results.add(pais); pais = new PaisVO(); pais.setCodigo("GTO"); pais.setDescricao("Baia Guantanamo"); results.add(pais); pais = new PaisVO(); pais.setCodigo("BGS"); pais.setDescricao("Bangladesh"); results.add(pais); pais = new PaisVO(); pais.setCodigo("BBS"); pais.setDescricao("Barbados"); results.add(pais); pais = new PaisVO(); pais.setCodigo("BLS"); pais.setDescricao("Belarus"); results.add(pais); pais = new PaisVO(); pais.setCodigo("BGA"); pais.setDescricao("Bélgica"); results.add(pais); pais = new PaisVO(); pais.setCodigo("BZE"); pais.setDescricao("Belize"); results.add(pais); pais = new PaisVO(); pais.setCodigo("BNN"); pais.setDescricao("Benin"); results.add(pais); pais = new PaisVO(); pais.setCodigo("BMS"); pais.setDescricao("Bermudas"); results.add(pais); pais = new PaisVO(); pais.setCodigo("BLA"); pais.setDescricao("Bolívia"); results.add(pais); pais = new PaisVO(); pais.setCodigo("BSA"); pais.setDescricao("Bósnia e Herzegovina"); results.add(pais); pais = new PaisVO(); pais.setCodigo("BWA"); pais.setDescricao("Botsuana"); results.add(pais); pais = new PaisVO(); pais.setCodigo("BRA"); pais.setDescricao("Brasil"); results.add(pais); pais = new PaisVO(); pais.setCodigo("BNI"); pais.setDescricao("Brunei"); results.add(pais); pais = new PaisVO(); pais.setCodigo("BIA"); pais.setDescricao("Bulgária"); results.add(pais); pais = new PaisVO(); pais.setCodigo("BKA"); pais.setDescricao("Burkina Faso"); results.add(pais); pais = new PaisVO(); pais.setCodigo("BRI"); pais.setDescricao("Burundi"); results.add(pais); pais = new PaisVO(); pais.setCodigo("BTO"); pais.setDescricao("Butão"); results.add(pais); pais = new PaisVO(); pais.setCodigo("CVE"); pais.setDescricao("Cabo Verde"); results.add(pais); pais = new PaisVO(); pais.setCodigo("CRM"); pais.setDescricao("Camarões"); results.add(pais); pais = new PaisVO(); pais.setCodigo("CBD"); pais.setDescricao("Campuchea"); results.add(pais); pais = new PaisVO(); pais.setCodigo("CDA"); pais.setDescricao("Canadá"); results.add(pais); pais = new PaisVO(); pais.setCodigo("QTR"); pais.setDescricao("Catar"); results.add(pais); pais = new PaisVO(); pais.setCodigo("CQO"); pais.setDescricao("Cazaquistão"); results.add(pais); pais = new PaisVO(); pais.setCodigo("CHD"); pais.setDescricao("Chade"); results.add(pais); pais = new PaisVO(); pais.setCodigo("CLE"); pais.setDescricao("Chile"); results.add(pais); pais = new PaisVO(); pais.setCodigo("CHN"); pais.setDescricao("China"); results.add(pais); pais = new PaisVO(); pais.setCodigo("CPE"); pais.setDescricao("Chipre"); results.add(pais); pais = new PaisVO(); pais.setCodigo("CGA"); pais.setDescricao("Cingapura"); results.add(pais); pais = new PaisVO(); pais.setCodigo("CKI"); pais.setDescricao("Ciskei"); results.add(pais); pais = new PaisVO(); pais.setCodigo("CLA"); pais.setDescricao("Colômbia"); results.add(pais); pais = new PaisVO(); pais.setCodigo("CMO"); pais.setDescricao("Comores"); results.add(pais); pais = new PaisVO(); pais.setCodigo("CNG"); pais.setDescricao("Congo"); results.add(pais); pais = new PaisVO(); pais.setCodigo("CDP"); pais.setDescricao("Coréia do Norte"); results.add(pais); pais = new PaisVO(); pais.setCodigo("CRP"); pais.setDescricao("Coréia do Sul"); results.add(pais); pais = new PaisVO(); pais.setCodigo("CMM"); pais.setDescricao("Costa do Marfim"); results.add(pais); pais = new PaisVO(); pais.setCodigo("CRA"); pais.setDescricao("Costa Rica"); results.add(pais); pais = new PaisVO(); pais.setCodigo("CAA"); pais.setDescricao("Croácia"); results.add(pais); pais = new PaisVO(); pais.setCodigo("CZT"); pais.setDescricao("Crozet"); results.add(pais); pais = new PaisVO(); pais.setCodigo("CBA"); pais.setDescricao("Cuba"); results.add(pais); pais = new PaisVO(); pais.setCodigo("DGA"); pais.setDescricao("Diego Garcia"); results.add(pais); pais = new PaisVO(); pais.setCodigo("DMA"); pais.setDescricao("Dinamarca"); results.add(pais); pais = new PaisVO(); pais.setCodigo("DJI"); pais.setDescricao("Djibuti"); results.add(pais); pais = new PaisVO(); pais.setCodigo("DNA"); pais.setDescricao("Dominica"); results.add(pais); pais = new PaisVO(); pais.setCodigo("EGO"); pais.setDescricao("Egito"); results.add(pais); pais = new PaisVO(); pais.setCodigo("SDR"); pais.setDescricao("El Salvador"); results.add(pais); pais = new PaisVO(); pais.setCodigo("EAU"); pais.setDescricao("Emirados Árabes Unidos"); results.add(pais); pais = new PaisVO(); pais.setCodigo("EDR"); pais.setDescricao("Equador"); results.add(pais); pais = new PaisVO(); pais.setCodigo("ERI"); pais.setDescricao("Eritréia"); results.add(pais); pais = new PaisVO(); pais.setCodigo("EVA"); pais.setDescricao("Eslovênia"); results.add(pais); pais = new PaisVO(); pais.setCodigo("EPA"); pais.setDescricao("Espanha"); results.add(pais); pais = new PaisVO(); pais.setCodigo("EUA"); pais.setDescricao("Estados Unidos"); results.add(pais); pais = new PaisVO(); pais.setCodigo("USA"); pais.setDescricao("Estados Unidos"); results.add(pais); pais = new PaisVO(); pais.setCodigo("ETA"); pais.setDescricao("Estônia"); results.add(pais); pais = new PaisVO(); pais.setCodigo("EIA"); pais.setDescricao("Etiópia"); results.add(pais); pais = new PaisVO(); pais.setCodigo("FJI"); pais.setDescricao("Fiji"); results.add(pais); pais = new PaisVO(); pais.setCodigo("FPS"); pais.setDescricao("Filipinas"); results.add(pais); pais = new PaisVO(); pais.setCodigo("FLA"); pais.setDescricao("Finlândia"); results.add(pais); pais = new PaisVO(); pais.setCodigo("FMA"); pais.setDescricao("Formosa"); results.add(pais); pais = new PaisVO(); pais.setCodigo("FCA"); pais.setDescricao("França"); results.add(pais); pais = new PaisVO(); pais.setCodigo("GBO"); pais.setDescricao("Gabão"); results.add(pais); pais = new PaisVO(); pais.setCodigo("GBA"); pais.setDescricao("Gâmbia"); results.add(pais); pais = new PaisVO(); pais.setCodigo("GAA"); pais.setDescricao("Gana"); results.add(pais); pais = new PaisVO(); pais.setCodigo("GGA"); pais.setDescricao("Georgia"); results.add(pais); pais = new PaisVO(); pais.setCodigo("GTR"); pais.setDescricao("Gibraltar"); results.add(pais); pais = new PaisVO(); pais.setCodigo("GST"); pais.setDescricao("Globalstar"); results.add(pais); pais = new PaisVO(); pais.setCodigo("GDA"); pais.setDescricao("Granada"); results.add(pais); pais = new PaisVO(); pais.setCodigo("GCA"); pais.setDescricao("Grécia"); results.add(pais); pais = new PaisVO(); pais.setCodigo("GLA"); pais.setDescricao("Groelândia"); results.add(pais); pais = new PaisVO(); pais.setCodigo("GLE"); pais.setDescricao("Guadalupe"); results.add(pais); pais = new PaisVO(); pais.setCodigo("GAM"); pais.setDescricao("Guam"); results.add(pais); pais = new PaisVO(); pais.setCodigo("GMA"); pais.setDescricao("Guatemala"); results.add(pais); pais = new PaisVO(); pais.setCodigo("GNA"); pais.setDescricao("Guiana"); results.add(pais); pais = new PaisVO(); pais.setCodigo("GFA"); pais.setDescricao("Guiana Francesa"); results.add(pais); pais = new PaisVO(); pais.setCodigo("GNE"); pais.setDescricao("Guiné"); results.add(pais); pais = new PaisVO(); pais.setCodigo("GBS"); pais.setDescricao("Guiné Bissau"); results.add(pais); pais = new PaisVO(); pais.setCodigo("GEL"); pais.setDescricao("Guiné Equatorial"); results.add(pais); pais = new PaisVO(); pais.setCodigo("HTI"); pais.setDescricao("Haiti"); results.add(pais); pais = new PaisVO(); pais.setCodigo("HVI"); pais.setDescricao("Havaí"); results.add(pais); pais = new PaisVO(); pais.setCodigo("HLA"); pais.setDescricao("Holanda"); results.add(pais); pais = new PaisVO(); pais.setCodigo("HDS"); pais.setDescricao("Honduras"); results.add(pais); pais = new PaisVO(); pais.setCodigo("HKG"); pais.setDescricao("Hong Kong"); results.add(pais); pais = new PaisVO(); pais.setCodigo("HGA"); pais.setDescricao("Hungria"); results.add(pais); pais = new PaisVO(); pais.setCodigo("IMN"); pais.setDescricao("Iêmen"); results.add(pais); pais = new PaisVO(); pais.setCodigo("MRA"); pais.setDescricao("IIhas Marianas do Norte"); results.add(pais); pais = new PaisVO(); pais.setCodigo("ACO"); pais.setDescricao("Ilhas Ascensão"); results.add(pais); pais = new PaisVO(); pais.setCodigo("CRS"); pais.setDescricao("Ilhas Carolinas"); results.add(pais); pais = new PaisVO(); pais.setCodigo("CYN"); pais.setDescricao("Ilhas Cayman"); results.add(pais); pais = new PaisVO(); pais.setCodigo("CTS"); pais.setDescricao("Ilhas Christmas"); results.add(pais); pais = new PaisVO(); pais.setCodigo("CKG"); pais.setDescricao("Ilhas Cocos Keeling"); results.add(pais); pais = new PaisVO(); pais.setCodigo("COK"); pais.setDescricao("Ilhas Cook"); results.add(pais); pais = new PaisVO(); pais.setCodigo("FRE"); pais.setDescricao("Ilhas Faroe"); results.add(pais); pais = new PaisVO(); pais.setCodigo("KMA"); pais.setDescricao("Ilhas Kamaran"); results.add(pais); pais = new PaisVO(); pais.setCodigo("MDA"); pais.setDescricao("Ilhas Madeira"); results.add(pais); pais = new PaisVO(); pais.setCodigo("FKA"); pais.setDescricao("Ilhas Malvinas"); results.add(pais); pais = new PaisVO(); pais.setCodigo("MSL"); pais.setDescricao("Ilhas Marshall"); results.add(pais); pais = new PaisVO(); pais.setCodigo("MWY"); pais.setDescricao("Ilhas Midway"); results.add(pais); pais = new PaisVO(); pais.setCodigo("NFK"); pais.setDescricao("Ilhas Norfolk"); results.add(pais); pais = new PaisVO(); pais.setCodigo("NFH"); pais.setDescricao("Ilhas Norfolk"); results.add(pais); pais = new PaisVO(); pais.setCodigo("PRM"); pais.setDescricao("Ilhas Perim"); results.add(pais); pais = new PaisVO(); pais.setCodigo("PCN"); pais.setDescricao("Ilhas Pitcairn"); results.add(pais); pais = new PaisVO(); pais.setCodigo("RNO"); pais.setDescricao("Ilhas Reunião"); results.add(pais); pais = new PaisVO(); pais.setCodigo("RDZ"); pais.setDescricao("Ilhas Rodrigues"); results.add(pais); pais = new PaisVO(); pais.setCodigo("SVT"); pais.setDescricao("Ilhas S. Vicente"); results.add(pais); pais = new PaisVO(); pais.setCodigo("SLN"); pais.setDescricao("Ilhas Salomão"); results.add(pais); pais = new PaisVO(); pais.setCodigo("SHA"); pais.setDescricao("Ilhas Santa Helena"); results.add(pais); pais = new PaisVO(); pais.setCodigo("TRS"); pais.setDescricao("Ilhas Turks e Caicos"); results.add(pais); pais = new PaisVO(); pais.setCodigo("VGS"); pais.setDescricao("Ilhas Virgens Americanas"); results.add(pais); pais = new PaisVO(); pais.setCodigo("VBS"); pais.setDescricao("Ilhas Virgens Britânicas"); results.add(pais); pais = new PaisVO(); pais.setCodigo("WKE"); pais.setDescricao("Ilhas Wake"); results.add(pais); pais = new PaisVO(); pais.setCodigo("IDA"); pais.setDescricao("Índia"); results.add(pais); pais = new PaisVO(); pais.setCodigo("INA"); pais.setDescricao("Indonésia"); results.add(pais); pais = new PaisVO(); pais.setCodigo("IRA"); pais.setDescricao("Irã"); results.add(pais); pais = new PaisVO(); pais.setCodigo("IRE"); pais.setDescricao("Iraque"); results.add(pais); pais = new PaisVO(); pais.setCodigo("IDM"); pais.setDescricao("Iridium Doméstico"); results.add(pais); pais = new PaisVO(); pais.setCodigo("EUT"); pais.setDescricao("Iridium Mundial"); results.add(pais); pais = new PaisVO(); pais.setCodigo("IAA"); pais.setDescricao("Irlanda"); results.add(pais); pais = new PaisVO(); pais.setCodigo("ISA"); pais.setDescricao("Islândia"); results.add(pais); pais = new PaisVO(); pais.setCodigo("IRL"); pais.setDescricao("Israel"); results.add(pais); pais = new PaisVO(); pais.setCodigo("ILA"); pais.setDescricao("Itália"); results.add(pais); pais = new PaisVO(); pais.setCodigo("IIA"); pais.setDescricao("Iugoslavia"); results.add(pais); pais = new PaisVO(); pais.setCodigo("JMA"); pais.setDescricao("Jamaica"); results.add(pais); pais = new PaisVO(); pais.setCodigo("JPO"); pais.setDescricao("Japão"); results.add(pais); pais = new PaisVO(); pais.setCodigo("JDA"); pais.setDescricao("Jordania"); results.add(pais); pais = new PaisVO(); pais.setCodigo("KBI"); pais.setDescricao("Kiribati"); results.add(pais); pais = new PaisVO(); pais.setCodigo("KWT"); pais.setDescricao("Kuweit"); results.add(pais); pais = new PaisVO(); pais.setCodigo("LAS"); pais.setDescricao("Laos"); results.add(pais); pais = new PaisVO(); pais.setCodigo("LSO"); pais.setDescricao("Lesoto"); results.add(pais); pais = new PaisVO(); pais.setCodigo("LNA"); pais.setDescricao("Letônia"); results.add(pais); pais = new PaisVO(); pais.setCodigo("LBO"); pais.setDescricao("Líbano"); results.add(pais); pais = new PaisVO(); pais.setCodigo("LBA"); pais.setDescricao("Libéria"); results.add(pais); pais = new PaisVO(); pais.setCodigo("LIA"); pais.setDescricao("Líbia"); results.add(pais); pais = new PaisVO(); pais.setCodigo("LTN"); pais.setDescricao("Liechtenstein"); results.add(pais); pais = new PaisVO(); pais.setCodigo("LTA"); pais.setDescricao("Lituânia"); results.add(pais); pais = new PaisVO(); pais.setCodigo("LGO"); pais.setDescricao("Luxemburgo"); results.add(pais); pais = new PaisVO(); pais.setCodigo("MCU"); pais.setDescricao("Macau"); results.add(pais); pais = new PaisVO(); pais.setCodigo("MOA"); pais.setDescricao("Macedônia"); results.add(pais); pais = new PaisVO(); pais.setCodigo("MGR"); pais.setDescricao("Madagascar"); results.add(pais); pais = new PaisVO(); pais.setCodigo("MLA"); pais.setDescricao("Malásia"); results.add(pais); pais = new PaisVO(); pais.setCodigo("MWI"); pais.setDescricao("Malavi"); results.add(pais); pais = new PaisVO(); pais.setCodigo("MDS"); pais.setDescricao("Maldivas"); results.add(pais); pais = new PaisVO(); pais.setCodigo("MLI"); pais.setDescricao("Mali"); results.add(pais); pais = new PaisVO(); pais.setCodigo("MTA"); pais.setDescricao("Malta"); results.add(pais); pais = new PaisVO(); pais.setCodigo("MRS"); pais.setDescricao("Marrocos"); results.add(pais); pais = new PaisVO(); pais.setCodigo("MNA"); pais.setDescricao("Martinica"); results.add(pais); pais = new PaisVO(); pais.setCodigo("MRO"); pais.setDescricao("Maurício"); results.add(pais); pais = new PaisVO(); pais.setCodigo("MIA"); pais.setDescricao("Mauritânia"); results.add(pais); pais = new PaisVO(); pais.setCodigo("MYE"); pais.setDescricao("Mayotte"); results.add(pais); pais = new PaisVO(); pais.setCodigo("MXO"); pais.setDescricao("México"); results.add(pais); pais = new PaisVO(); pais.setCodigo("MCA"); pais.setDescricao("Micronésia"); results.add(pais); pais = new PaisVO(); pais.setCodigo("MBE"); pais.setDescricao("Moçambique"); results.add(pais); pais = new PaisVO(); pais.setCodigo("MVA"); pais.setDescricao("Moldova"); results.add(pais); pais = new PaisVO(); pais.setCodigo("MNO"); pais.setDescricao("Mônaco"); results.add(pais); pais = new PaisVO(); pais.setCodigo("MGA"); pais.setDescricao("Mongólia"); results.add(pais); pais = new PaisVO(); pais.setCodigo("MNE"); pais.setDescricao("Montenegro"); results.add(pais); pais = new PaisVO(); pais.setCodigo("MRT"); pais.setDescricao("Montserrat"); results.add(pais); pais = new PaisVO(); pais.setCodigo("MAL"); pais.setDescricao("Movsat Aero Atlântico Les"); results.add(pais); pais = new PaisVO(); pais.setCodigo("MAO"); pais.setDescricao("Movsat Aero Atlântico Oes"); results.add(pais); pais = new PaisVO(); pais.setCodigo("MAI"); pais.setDescricao("Movsat Aero Índico"); results.add(pais); pais = new PaisVO(); pais.setCodigo("MAP"); pais.setDescricao("Movsat Aero Pacífico"); results.add(pais); pais = new PaisVO(); pais.setCodigo("MNM"); pais.setDescricao("Movsat Mini M"); results.add(pais); pais = new PaisVO(); pais.setCodigo("AOE"); pais.setDescricao("Movsat Mini M AOE"); results.add(pais); pais = new PaisVO(); pais.setCodigo("AOW"); pais.setDescricao("Movsat Mini M AOR"); results.add(pais); pais = new PaisVO(); pais.setCodigo("IOR"); pais.setDescricao("Movsat Mini M IOR"); results.add(pais); pais = new PaisVO(); pais.setCodigo("POR"); pais.setDescricao("Movsat Mini M POR"); results.add(pais); pais = new PaisVO(); pais.setCodigo("ATL"); pais.setDescricao("Movsat-A Atlântico Leste"); results.add(pais); pais = new PaisVO(); pais.setCodigo("ATW"); pais.setDescricao("Movsat-A Atlântico Oeste"); results.add(pais); pais = new PaisVO(); pais.setCodigo("IDO"); pais.setDescricao("Movsat-A Índico"); results.add(pais); pais = new PaisVO(); pais.setCodigo("PCO"); pais.setDescricao("Movsat-A Pacífico"); results.add(pais); pais = new PaisVO(); pais.setCodigo("MBA"); pais.setDescricao("Movsat-B Atlântico Leste"); results.add(pais); pais = new PaisVO(); pais.setCodigo("MBO"); pais.setDescricao("Movsat-B Atlântico Oeste"); results.add(pais); pais = new PaisVO(); pais.setCodigo("MHL"); pais.setDescricao("Movsat-B HSD AOR-E (87139)"); results.add(pais); pais = new PaisVO(); pais.setCodigo("MHO"); pais.setDescricao("Movsat-B HSD AOR-W (87439)"); results.add(pais); pais = new PaisVO(); pais.setCodigo("MHI"); pais.setDescricao("Movsat-B HSD IOR (87339)"); results.add(pais); pais = new PaisVO(); pais.setCodigo("MBI"); pais.setDescricao("Movsat-B Índico"); results.add(pais); pais = new PaisVO(); pais.setCodigo("MBP"); pais.setDescricao("Movsat-B Pacífico"); results.add(pais); pais = new PaisVO(); pais.setCodigo("MBT"); pais.setDescricao("Movsat-B (8703)"); results.add(pais); pais = new PaisVO(); pais.setCodigo("MBH"); pais.setDescricao("Movsat-B (87039)"); results.add(pais); pais = new PaisVO(); pais.setCodigo("MGO"); pais.setDescricao("Movsat-GAN HSD AOR-W (87460)"); results.add(pais); pais = new PaisVO(); pais.setCodigo("MHP"); pais.setDescricao("Movsat-GAN HSD AOR-E (87160)"); results.add(pais); pais = new PaisVO(); pais.setCodigo("MGL"); pais.setDescricao("Movsat-GAN HSD AOR-E (87160)"); results.add(pais); pais = new PaisVO(); pais.setCodigo("MGI"); pais.setDescricao("Movsat-GAN HSD IOR (87360)"); results.add(pais); pais = new PaisVO(); pais.setCodigo("MGP"); pais.setDescricao("Movsat-GAN HSD POR (87260)"); results.add(pais); pais = new PaisVO(); pais.setCodigo("MGH"); pais.setDescricao("Movsat-GAN HSD (87160)"); results.add(pais); pais = new PaisVO(); pais.setCodigo("MML"); pais.setDescricao("Movsat-M Atlântico Leste"); results.add(pais); pais = new PaisVO(); pais.setCodigo("MMO"); pais.setDescricao("Movsat-M Atlântico Oeste"); results.add(pais); pais = new PaisVO(); pais.setCodigo("MMI"); pais.setDescricao("Movsat-M Índico"); results.add(pais); pais = new PaisVO(); pais.setCodigo("MMP"); pais.setDescricao("Movsat-M Pacífico"); results.add(pais); pais = new PaisVO(); pais.setCodigo("MMT"); pais.setDescricao("Movsat-M (8706)"); results.add(pais); pais = new PaisVO(); pais.setCodigo("NBA"); pais.setDescricao("Namíbia"); results.add(pais); pais = new PaisVO(); pais.setCodigo("NRU"); pais.setDescricao("Nauru"); results.add(pais); pais = new PaisVO(); pais.setCodigo("NPL"); pais.setDescricao("Nepal"); results.add(pais); pais = new PaisVO(); pais.setCodigo("NRA"); pais.setDescricao("Nicarágua"); results.add(pais); pais = new PaisVO(); pais.setCodigo("NGR"); pais.setDescricao("Niger"); results.add(pais); pais = new PaisVO(); pais.setCodigo("NGI"); pais.setDescricao("Nigéria"); results.add(pais); pais = new PaisVO(); pais.setCodigo("NUE"); pais.setDescricao("Niue"); results.add(pais); pais = new PaisVO(); pais.setCodigo("NGA"); pais.setDescricao("Noruega"); results.add(pais); pais = new PaisVO(); pais.setCodigo("NCA"); pais.setDescricao("Nova Caledônia"); results.add(pais); pais = new PaisVO(); pais.setCodigo("NZA"); pais.setDescricao("Nova Zelândia"); results.add(pais); pais = new PaisVO(); pais.setCodigo("OMN"); pais.setDescricao("Omã"); results.add(pais); pais = new PaisVO(); pais.setCodigo("PLU"); pais.setDescricao("Palau"); results.add(pais); pais = new PaisVO(); pais.setCodigo("PAL"); pais.setDescricao("Palestina"); results.add(pais); pais = new PaisVO(); pais.setCodigo("PMA"); pais.setDescricao("Panamá"); results.add(pais); pais = new PaisVO(); pais.setCodigo("PPA"); pais.setDescricao("Papua Nova Guiné"); results.add(pais); pais = new PaisVO(); pais.setCodigo("PTO"); pais.setDescricao("Paquistão"); results.add(pais); pais = new PaisVO(); pais.setCodigo("PGI"); pais.setDescricao("Paraguai"); results.add(pais); pais = new PaisVO(); pais.setCodigo("PRU"); pais.setDescricao("Peru"); results.add(pais); pais = new PaisVO(); pais.setCodigo("TTI"); pais.setDescricao("Polinésia Francesa"); results.add(pais); pais = new PaisVO(); pais.setCodigo("PLA"); pais.setDescricao("Polônia"); results.add(pais); pais = new PaisVO(); pais.setCodigo("PRO"); pais.setDescricao("Porto Rico"); results.add(pais); pais = new PaisVO(); pais.setCodigo("PTL"); pais.setDescricao("Portugal"); results.add(pais); pais = new PaisVO(); pais.setCodigo("QNA"); pais.setDescricao("Quênia"); results.add(pais); pais = new PaisVO(); pais.setCodigo("QGA"); pais.setDescricao("Quirguizia"); results.add(pais); pais = new PaisVO(); pais.setCodigo("RUO"); pais.setDescricao("Reino Unido"); results.add(pais); pais = new PaisVO(); pais.setCodigo("RCF"); pais.setDescricao("República Centro Africana"); results.add(pais); pais = new PaisVO(); pais.setCodigo("TCO"); pais.setDescricao("República Checa"); results.add(pais); pais = new PaisVO(); pais.setCodigo("EQA"); pais.setDescricao("República da Eslováquia"); results.add(pais); pais = new PaisVO(); pais.setCodigo("DCA"); pais.setDescricao("República Dominicana"); results.add(pais); pais = new PaisVO(); pais.setCodigo("RMA"); pais.setDescricao("Romênia"); results.add(pais); pais = new PaisVO(); pais.setCodigo("RDA"); pais.setDescricao("Ruanda"); results.add(pais); pais = new PaisVO(); pais.setCodigo("RSA"); pais.setDescricao("Rússia"); results.add(pais); pais = new PaisVO(); pais.setCodigo("SPM"); pais.setDescricao("S. Pierre e Miquelon"); results.add(pais); pais = new PaisVO(); pais.setCodigo("SEL"); pais.setDescricao("Saara Espanhol"); results.add(pais); pais = new PaisVO(); pais.setCodigo("SAO"); pais.setDescricao("Samôa"); results.add(pais); pais = new PaisVO(); pais.setCodigo("SAA"); pais.setDescricao("Samôa Americana"); results.add(pais); pais = new PaisVO(); pais.setCodigo("SLC"); pais.setDescricao("Santa Lucia"); results.add(pais); pais = new PaisVO(); pais.setCodigo("SMO"); pais.setDescricao("São Marino"); results.add(pais); pais = new PaisVO(); pais.setCodigo("STE"); pais.setDescricao("São Tomé e Principe"); results.add(pais); pais = new PaisVO(); pais.setCodigo("SGL"); pais.setDescricao("Senegal"); results.add(pais); pais = new PaisVO(); pais.setCodigo("SLA"); pais.setDescricao("Serra Leoa"); results.add(pais); pais = new PaisVO(); pais.setCodigo("SRB"); pais.setDescricao("Servia"); results.add(pais); pais = new PaisVO(); pais.setCodigo("SCE"); pais.setDescricao("Seychelles"); results.add(pais); pais = new PaisVO(); pais.setCodigo("SRA"); pais.setDescricao("Síria"); results.add(pais); pais = new PaisVO(); pais.setCodigo("SMA"); pais.setDescricao("Somália"); results.add(pais); pais = new PaisVO(); pais.setCodigo("SLK"); pais.setDescricao("Sri-Lanka"); results.add(pais); pais = new PaisVO(); pais.setCodigo("SKN"); pais.setDescricao("St. Kitts e Nevis"); results.add(pais); pais = new PaisVO(); pais.setCodigo("SDA"); pais.setDescricao("Suazilândia"); results.add(pais); pais = new PaisVO(); pais.setCodigo("SDO"); pais.setDescricao("Sudão"); results.add(pais); pais = new PaisVO(); pais.setCodigo("SIA"); pais.setDescricao("Suécia"); results.add(pais); pais = new PaisVO(); pais.setCodigo("SCA"); pais.setDescricao("Suiça"); results.add(pais); pais = new PaisVO(); pais.setCodigo("SNM"); pais.setDescricao("Suriname"); results.add(pais); pais = new PaisVO(); pais.setCodigo("TJO"); pais.setDescricao("Tadjiquistão"); results.add(pais); pais = new PaisVO(); pais.setCodigo("TLA"); pais.setDescricao("Tailândia"); results.add(pais); pais = new PaisVO(); pais.setCodigo("TZA"); pais.setDescricao("Tanzânia"); results.add(pais); pais = new PaisVO(); pais.setCodigo("TEA"); pais.setDescricao("Territ. Ext.Austrália"); results.add(pais); pais = new PaisVO(); pais.setCodigo("TRY"); pais.setDescricao("Thuraya"); results.add(pais); pais = new PaisVO(); pais.setCodigo("TMO"); pais.setDescricao("Timor Oriental"); results.add(pais); pais = new PaisVO(); pais.setCodigo("TGO"); pais.setDescricao("Togo"); results.add(pais); pais = new PaisVO(); pais.setCodigo("TGA"); pais.setDescricao("Tonga"); results.add(pais); pais = new PaisVO(); pais.setCodigo("TKU"); pais.setDescricao("Toquelau"); results.add(pais); pais = new PaisVO(); pais.setCodigo("TKI"); pais.setDescricao("Transkei"); results.add(pais); pais = new PaisVO(); pais.setCodigo("TDD"); pais.setDescricao("Trinidad e Tobago"); results.add(pais); pais = new PaisVO(); pais.setCodigo("TCA"); pais.setDescricao("Tristão da Cunha"); results.add(pais); pais = new PaisVO(); pais.setCodigo("TNA"); pais.setDescricao("Tunísia"); results.add(pais); pais = new PaisVO(); pais.setCodigo("TMA"); pais.setDescricao("Turcomênia"); results.add(pais); pais = new PaisVO(); pais.setCodigo("TQA"); pais.setDescricao("Turquia"); results.add(pais); pais = new PaisVO(); pais.setCodigo("TVL"); pais.setDescricao("Tuvalu"); results.add(pais); pais = new PaisVO(); pais.setCodigo("UNA"); pais.setDescricao("Ucrânia"); results.add(pais); pais = new PaisVO(); pais.setCodigo("UGA"); pais.setDescricao("Uganda"); results.add(pais); pais = new PaisVO(); pais.setCodigo("UMR"); pais.setDescricao("União de Myanmar"); results.add(pais); pais = new PaisVO(); pais.setCodigo("UGI"); pais.setDescricao("Uruguai"); results.add(pais); pais = new PaisVO(); pais.setCodigo("UKO"); pais.setDescricao("Uzbequistão"); results.add(pais); pais = new PaisVO(); pais.setCodigo("VNU"); pais.setDescricao("Vanuatu"); results.add(pais); pais = new PaisVO(); pais.setCodigo("VCO"); pais.setDescricao("Vaticano"); results.add(pais); pais = new PaisVO(); pais.setCodigo("VDA"); pais.setDescricao("Venda"); results.add(pais); pais = new PaisVO(); pais.setCodigo("VLA"); pais.setDescricao("Venezuela"); results.add(pais); pais = new PaisVO(); pais.setCodigo("VTN"); pais.setDescricao("Vietnã"); results.add(pais); pais = new PaisVO(); pais.setCodigo("WLS"); pais.setDescricao("Wallis e Futuna"); results.add(pais); usuario.setListaPais(results); }

Achei este código e acabei de me demitir da consultoria que trabalho.

lina

Oi,

Continua não muito bom… hihihi

Tchauzin!

Marky.Vasconcelos

Esse cara deve ter tido um bom trabalho só pra ficar dando Ctrl+C e Ctrl+V.

Felagund

Marky.Vasconcelos:
ovelha:

“Ta bunitu” minha gente!!!

Esse cara deve ter tido um bom trabalho só pra ficar dando Ctrl+C e Ctrl+V.

Tem alguns países ai nesse lista no minimo questionaveis…

Eu ja estou copiando aqui pros sistemas, muito interessante isso

Abdon

O legal é que o objeto usuarioVo fica na sessão da aplicação que é web.

danieldestro

ÓTIMO controle de transações.

public class GenericDAO<T extends Entity> implements DAO {
     public void insert(T classe) {  
         try{  
             tx = session.beginTransaction();  
             session.save(classe);  
             tx.commit();  
         } catch(HibernateException ex){  
             tx.rollback();  
             throw ex;  
         }  
     }  
   
     public void update(T classe) {  
         try{  
             tx = session.beginTransaction();  
             session.update(classe);  
             tx.commit();  
         } catch(HibernateException ex){  
             tx.rollback();  
            throw ex;  
        }  
     }  
   
     public void delete(T classe) {  
         try{  
             tx = session.beginTransaction();  
             session.update(classe);  
             tx.commit();  
         } catch(HibernateException ex){  
             tx.rollback();  
             throw ex;  
         }  
     }  
}
A

Oi Daniel, beleza?

Cara pode me explicar essa assinatura? public class GenericDAO<T extends Entity> implements DAO { ? Se possível pode postar o código de DAO e essa Entity…

danieldestro

Dá uma olhada aqui: http://www.guj.com.br/java/33085-genericdao

S

Eduardo Bregaida:

Esse tópico além de mostrar erros dos nossos projetos, também mostra como melhoramos para notar esse erro (muitas vezes nós que fazemos e acabamos postando aqui), mas independente de quem fez, você notou o erro, a má eficiência, etc, logo você evoluiu, é o que este tópico quer dizer.

Por isso que sugeri além de colocar as tosqueiras, colocar também uma melhor forma de fazer. Mas parece que ninguém concordou.

Enfim, achei essas 2 pérolas num conhecido framework que é vendido no Brasil:

public int compare(String s1, String s2) {
	if (s1.equals(s2))
		return 0;
	return +1;
}

E nós não entendíamos porque o TreeMap não funcionava:

Map<String, Object> map = new TreeMap<String, Object>(new ComparatorInsano()); map.put("chave", "valor"); map.get("chave"); // null!!??

Melhor seria: ora, pra que escrever um comparator de String (bugado, ainda por cima) ?

Depois teve um if que nunca entrava (esse paginaAtual é int):

if (!"1".equals(paginaAtual)) { // sempre serei } else { // nunca serei executado }

braudes

Esta é de um colega nosso! Foi solicitado a ele a criação de uma formulário, e neste havia um cálculo de frete! A solução encontrada por nosso amigo foi chamar a calculadora do windows. Mas ele se esqueceu de que o sistema era em JSF e que web é desacoplada da plataforma no cliente. Para minha surpresa a chamada não estava sendo feita no cliente, e sim, no controlador. Enquanto os testes eram feitos, várias instâncias de “calc” eram abertas no nosso servidor web (que coincidentemente era plataforma Windows). Segue o trecho brilhante do código chamado por um t:commandButton:

try {
			Runtime.getRuntime().exec("calc"); 
		} catch (Exception e) {
			getContext().addMessage(e);
		}

Pelo menos está com tratamento de exceção. :slight_smile:

luistiagos

Schuenemann:
Eduardo Bregaida:

Esse tópico além de mostrar erros dos nossos projetos, também mostra como melhoramos para notar esse erro (muitas vezes nós que fazemos e acabamos postando aqui), mas independente de quem fez, você notou o erro, a má eficiência, etc, logo você evoluiu, é o que este tópico quer dizer.

Por isso que sugeri além de colocar as tosqueiras, colocar também uma melhor forma de fazer. Mas parece que ninguém concordou.

Enfim, achei essas 2 pérolas num conhecido framework que é vendido no Brasil:

public int compare(String s1, String s2) {
	if (s1.equals(s2))
		return 0;
	return +1;
}

E nós não entendíamos porque o TreeMap não funcionava:

Map<String, Object> map = new TreeMap<String, Object>(new ComparatorInsano()); map.put("chave", "valor"); map.get("chave"); // null!!??

Melhor seria: ora, pra que escrever um comparator de String (bugado, ainda por cima) ?

Depois teve um if que nunca entrava (esse paginaAtual é int):

if (!"1".equals(paginaAtual)) { // nunca serei executado } else { // sempre serei }

qual frame?

fredferrao

luistiagos:
Schuenemann:
Eduardo Bregaida:

Esse tópico além de mostrar erros dos nossos projetos, também mostra como melhoramos para notar esse erro (muitas vezes nós que fazemos e acabamos postando aqui), mas independente de quem fez, você notou o erro, a má eficiência, etc, logo você evoluiu, é o que este tópico quer dizer.

Por isso que sugeri além de colocar as tosqueiras, colocar também uma melhor forma de fazer. Mas parece que ninguém concordou.

Enfim, achei essas 2 pérolas num conhecido framework que é vendido no Brasil:

public int compare(String s1, String s2) {
	if (s1.equals(s2))
		return 0;
	return +1;
}

E nós não entendíamos porque o TreeMap não funcionava:

Map<String, Object> map = new TreeMap<String, Object>(new ComparatorInsano()); map.put("chave", "valor"); map.get("chave"); // null!!??

Melhor seria: ora, pra que escrever um comparator de String (bugado, ainda por cima) ?

Depois teve um if que nunca entrava (esse paginaAtual é int):

if (!"1".equals(paginaAtual)) { // nunca serei executado } else { // sempre serei }

qual frame?

Eu chutaria um tal framework chamado “Jota” de uma ta “Companhia” :lol:

leoramos

Alguém apresenta operadores de comparação pra ele, fafavô:

if (contas == null || contas.size() < 1 || contas.size() > 1) { contaContabilOK = false; }

leoramos
Desculpa, mas hoje eu tô achando cada coisa... sou obrigado a postar isso também. Não sei nem se a quebra de linha vai funcionar direito com essa onça, mas lá vai:
BigDecimal valorSaldoAtualReceitaDespesaPlanoContasCooperativaRendasComTitulosEValoresMobiliariosEInstrumentosFinanceirosDerivativos = BigDecimal.ZERO;

if (lalurReceitaDespesaPlanoContasCooperativaRendasComTitulosEValoresMobiliariosEInstrumentosFinanceirosDerivativos != null)
     valorSaldoAtualReceitaDespesaPlanoContasCooperativaRendasComTitulosEValoresMobiliariosEInstrumentosFinanceirosDerivativos =  lalurReceitaDespesaPlanoContasCooperativaRendasComTitulosEValoresMobiliariosEInstrumentosFinanceirosDerivativos.getValorSaldoAtual();

Meus cavaco... é pácabá!

g4j

adriano_si:
davidbuzatto:

if(condMinha == 0) {
    return true;
} else {
    return false;
}

Abs []



Já vi muito disso… E ainda certo dia peguei um POGramador fazendo… Interrompi e mostrei “outra forma” de fazer. Ele disse: "- Nossa cara… você é fo** mesmo… " :shock:

g4j

Pasmem… Peguei um cara ensinando outro a fazer um método retornar 2 valores, rsrsrs retornava um Object[]

danieldestro

Melhor que isso… só isso: http://www.guj.com.br/java/234881-ondemand---novo-design-pattern

g4j

Melhor que isso… só isso: http://www.guj.com.br/java/234881-ondemand---novo-design-pattern

hahhaha… chega a dar ância em porco…

g4j

Já vi por aqui nego instanciando classe servlet dentro de outa classe servlet para “reusar” os métodos… rsrsrs :shock:

Felagund
leoramos:
Desculpa, mas hoje eu tô achando cada coisa... sou obrigado a postar isso também. Não sei nem se a quebra de linha vai funcionar direito com essa onça, mas lá vai:
BigDecimal valorSaldoAtualReceitaDespesaPlanoContasCooperativaRendasComTitulosEValoresMobiliariosEInstrumentosFinanceirosDerivativos = BigDecimal.ZERO;

if (lalurReceitaDespesaPlanoContasCooperativaRendasComTitulosEValoresMobiliariosEInstrumentosFinanceirosDerivativos != null)
     valorSaldoAtualReceitaDespesaPlanoContasCooperativaRendasComTitulosEValoresMobiliariosEInstrumentosFinanceirosDerivativos =  lalurReceitaDespesaPlanoContasCooperativaRendasComTitulosEValoresMobiliariosEInstrumentosFinanceirosDerivativos.getValorSaldoAtual();

Meus cavaco... é pácabá!

Pelo menos a variavel tem legibilidade :P

Tchello
leoramos:
Desculpa, mas hoje eu tô achando cada coisa... sou obrigado a postar isso também. Não sei nem se a quebra de linha vai funcionar direito com essa onça, mas lá vai:
BigDecimal valorSaldoAtualReceitaDespesaPlanoContasCooperativaRendasComTitulosEValoresMobiliariosEInstrumentosFinanceirosDerivativos = BigDecimal.ZERO;

if (lalurReceitaDespesaPlanoContasCooperativaRendasComTitulosEValoresMobiliariosEInstrumentosFinanceirosDerivativos != null)
     valorSaldoAtualReceitaDespesaPlanoContasCooperativaRendasComTitulosEValoresMobiliariosEInstrumentosFinanceirosDerivativos =  lalurReceitaDespesaPlanoContasCooperativaRendasComTitulosEValoresMobiliariosEInstrumentosFinanceirosDerivativos.getValorSaldoAtual();

Meus cavaco... é pácabá!

Mais um da serie: oddly specific!

edit:

Soh nao entendi essa parte em negrito:
lalurReceitaDespesaPlanoContasCooperativaRendasComTitulosEValoresMobiliariosEInstrumentosFinanceirosDerivativos

Anime
leoramos:
Desculpa, mas hoje eu tô achando cada coisa... sou obrigado a postar isso também. Não sei nem se a quebra de linha vai funcionar direito com essa onça, mas lá vai:
BigDecimal valorSaldoAtualReceitaDespesaPlanoContasCooperativaRendasComTitulosEValoresMobiliariosEInstrumentosFinanceirosDerivativos = BigDecimal.ZERO;

if (lalurReceitaDespesaPlanoContasCooperativaRendasComTitulosEValoresMobiliariosEInstrumentosFinanceirosDerivativos != null)
     valorSaldoAtualReceitaDespesaPlanoContasCooperativaRendasComTitulosEValoresMobiliariosEInstrumentosFinanceirosDerivativos =  lalurReceitaDespesaPlanoContasCooperativaRendasComTitulosEValoresMobiliariosEInstrumentosFinanceirosDerivativos.getValorSaldoAtual();

Meus cavaco... é pácabá!

uau... rsrs... esse gosta de digitar heim kkk...

adriano_si

Pareceu forjado… Desculpe quem postou, não lhe conheço e nem sei a situação na hora do POST, mas parece meio surreal… Tosquice em código tudo bem, agora isso é total falta de bom senso pra qualquer ser humano e fora que nem compilaria, como estaria funcionando até agora ???

Eduardo_Bregaida
Felagund:
leoramos:
Desculpa, mas hoje eu tô achando cada coisa... sou obrigado a postar isso também. Não sei nem se a quebra de linha vai funcionar direito com essa onça, mas lá vai:
BigDecimal valorSaldoAtualReceitaDespesaPlanoContasCooperativaRendasComTitulosEValoresMobiliariosEInstrumentosFinanceirosDerivativos = BigDecimal.ZERO;

if (lalurReceitaDespesaPlanoContasCooperativaRendasComTitulosEValoresMobiliariosEInstrumentosFinanceirosDerivativos != null)
     valorSaldoAtualReceitaDespesaPlanoContasCooperativaRendasComTitulosEValoresMobiliariosEInstrumentosFinanceirosDerivativos =  lalurReceitaDespesaPlanoContasCooperativaRendasComTitulosEValoresMobiliariosEInstrumentosFinanceirosDerivativos.getValorSaldoAtual();

Meus cavaco... é pácabá!

Pelo menos a variavel tem legibilidade :P

Está bem "verboso" huauhahuhuahuahua leia variáveis como frases foi oq me falaram no inicio mas isso é um parágrafo completo kkkkk boa mas tbm queria saber o que seria "lalur" lalurReceitaDespesaPlanoContasCooperativaRendasComTitulosEValoresMobiliariosEInstrumentosFinanceirosDerivativos.getValorSaldoAtual();

8)

Marky.Vasconcelos
leoramos:
Desculpa, mas hoje eu tô achando cada coisa... sou obrigado a postar isso também. Não sei nem se a quebra de linha vai funcionar direito com essa onça, mas lá vai:
BigDecimal valorSaldoAtualReceitaDespesaPlanoContasCooperativaRendasComTitulosEValoresMobiliariosEInstrumentosFinanceirosDerivativos = BigDecimal.ZERO;

if (lalurReceitaDespesaPlanoContasCooperativaRendasComTitulosEValoresMobiliariosEInstrumentosFinanceirosDerivativos != null)
     valorSaldoAtualReceitaDespesaPlanoContasCooperativaRendasComTitulosEValoresMobiliariosEInstrumentosFinanceirosDerivativos =  lalurReceitaDespesaPlanoContasCooperativaRendasComTitulosEValoresMobiliariosEInstrumentosFinanceirosDerivativos.getValorSaldoAtual();

Meus cavaco... é pácabá!

O pior não é só isso, já vi em sistemas nomes como esses (não tão grandes) nas variaveis, um monte, e parecidos. Eu sempre confundia.

Era coisas como:

BigDecimal valorSaldoAtualReceitaDespesaPlanoContasDerivativos = BigDecimal.ZERO;
BigDecimal valorSaldoAnualReceitaDespesaPlanoContasDerivativos = BigDecimal.ZERO;
BigDecimal valorSaldoAnualReceitaEntradaPlanoContasDerivados = BigDecimal.ZERO;
BigDecimal valorSaldoAtualReceitaDespesaPlanoContasIntegrados = BigDecimal.ZERO;
BigDecimal valorSaldoAnualReceitaDespesaPlanoContasIntegrados = BigDecimal.ZERO;
BigDecimal valorSaldoAnualReceitaEntradaPlanoContasDerivativos = BigDecimal.ZERO;
andreiribas
Marky.Vasconcelos:
leoramos:
Desculpa, mas hoje eu tô achando cada coisa... sou obrigado a postar isso também. Não sei nem se a quebra de linha vai funcionar direito com essa onça, mas lá vai:
BigDecimal valorSaldoAtualReceitaDespesaPlanoContasCooperativaRendasComTitulosEValoresMobiliariosEInstrumentosFinanceirosDerivativos = BigDecimal.ZERO;

if (lalurReceitaDespesaPlanoContasCooperativaRendasComTitulosEValoresMobiliariosEInstrumentosFinanceirosDerivativos != null)
     valorSaldoAtualReceitaDespesaPlanoContasCooperativaRendasComTitulosEValoresMobiliariosEInstrumentosFinanceirosDerivativos =  lalurReceitaDespesaPlanoContasCooperativaRendasComTitulosEValoresMobiliariosEInstrumentosFinanceirosDerivativos.getValorSaldoAtual();

Meus cavaco... é pácabá!

O pior não é só isso, já vi em sistemas nomes como esses (não tão grandes) nas variaveis, um monte, e parecidos. Eu sempre confundia.

Era coisas como:

BigDecimal valorSaldoAtualReceitaDespesaPlanoContasDerivativos = BigDecimal.ZERO;
BigDecimal valorSaldoAnualReceitaDespesaPlanoContasDerivativos = BigDecimal.ZERO;
BigDecimal valorSaldoAnualReceitaEntradaPlanoContasDerivados = BigDecimal.ZERO;
BigDecimal valorSaldoAtualReceitaDespesaPlanoContasIntegrados = BigDecimal.ZERO;
BigDecimal valorSaldoAnualReceitaDespesaPlanoContasIntegrados = BigDecimal.ZERO;
BigDecimal valorSaldoAnualReceitaEntradaPlanoContasDerivativos = BigDecimal.ZERO;

sem dúvida não é uma boa prática, mas eu prefiro os exemplo acima do que esses adaptados do código acima:

BigDecimal a = BigDecimal.ZERO;

if (b != null)
     a =  b.getValorSaldoAtual();
[/code]
BigDecimal a = BigDecimal.ZERO;
BigDecimal b = BigDecimal.ZERO;
BigDecimal c = BigDecimal.ZERO;
BigDecimal d = BigDecimal.ZERO;
BigDecimal e = BigDecimal.ZERO;
BigDecimal f = BigDecimal.ZERO;

E eu ja vi outros exemplos beeeem piores, tipo misturar SQL, Javascript e HTML no java, métodos com mais de 1000 linhas, etc.

manutenção Zero, compensava fazer tudo de nOvo.

Tchello

Nossa, esse que difere somente de Atual para Anual eh de f*.

Sao dois extremos, ambos sao de ferrar…

felipeguerra

Em uma página JSP qualquer:

ParametersDocument screen = (ParametersDocument) session.getAttribute("screen");
screen = screen == null ? (ParametersDocument)session.getAttribute("screen") : screen;
String functionName = screen.getParameters().getTopBar().getFormTitle();
functionName = functionName == null ? "< N&atilde;o Definido >" : functionName;
B

Num banco de dados Oracle de homologação por aí:

Tabelas:

JOAO.ANIVERSARIANTES
JOAO.CONTABIL
JOAO.EMPRESTIMO
JOAO.FGTS
JOAO.HOLERIT
JOAO.(OUTRAS 100 TABELAS)
MARIA.ANIVERSARIANTES
MARIA.CONTABIL
MARIA.EMPRESTIMO
MARIA.FGTS
MARIA.HOLERIT
MARIA.(OUTRAS 100 TABELAS)
ZEROBERTO.ANIVERSARIANTES
ZEROBERTO.CONTABIL
ZEROBERTO.EMPRESTIMO
ZEROBERTO.FGTS
ZEROBERTO.HOLERIT
ZEROBERTO.(OUTRAS 100 TABELAS)
A001.ANIVERSARIANTES
A001.CONTABIL
A001.EMPRESTIMO
A001.FGTS
A001.HOLERIT
A001.(OUTRAS 100 TABELAS)
A002.(…)
A003.(…)
B001.(…)
B002.(…)

BTW, JOAO, MARIA, etc são os nomes dos schemas…

Perdi as esperanças na humanidade…

leoramos
Tchello:
leoramos:
Desculpa, mas hoje eu tô achando cada coisa... sou obrigado a postar isso também. Não sei nem se a quebra de linha vai funcionar direito com essa onça, mas lá vai:
BigDecimal valorSaldoAtualReceitaDespesaPlanoContasCooperativaRendasComTitulosEValoresMobiliariosEInstrumentosFinanceirosDerivativos = BigDecimal.ZERO;

if (lalurReceitaDespesaPlanoContasCooperativaRendasComTitulosEValoresMobiliariosEInstrumentosFinanceirosDerivativos != null)
     valorSaldoAtualReceitaDespesaPlanoContasCooperativaRendasComTitulosEValoresMobiliariosEInstrumentosFinanceirosDerivativos =  lalurReceitaDespesaPlanoContasCooperativaRendasComTitulosEValoresMobiliariosEInstrumentosFinanceirosDerivativos.getValorSaldoAtual();

Meus cavaco... é pácabá!

Mais um da serie: oddly specific!

edit:

Soh nao entendi essa parte em negrito:
lalurReceitaDespesaPlanoContasCooperativaRendasComTitulosEValoresMobiliariosEInstrumentosFinanceirosDerivativos

Lalur é o "Livro de Apuração de Lucro Real", é um tipo de demonstração contábil intermediária. Eu trabalho com sistema bancário e tem um módulo contábil no negócio.

Ao colega que disse que pareceu meio forjado, eu não te julgo, cara. Da primeira vez que eu vi, também não acreditei.
Na realidade, acho eu que o figura que fez isso fez meio que "de propósito". Ele ainda trabalha aqui, acho que mandaram ele mexer nesses relatórios e ele fez meio a contragosto; daí esse tipo de coisa.
Problema é: como eu fiz faculdade de contábeis, todos os relatórios contábeis do sistema vêm pra eu mexer. Já dá pra saber o que eu sinto no meu dia-a-dia, né? hehe
Mas é real, tem essa porcaria no sistema, sim. É uma classe de execução de relatório.

Abraços!

leoramos
Tchello:
Marky.Vasconcelos:
O pior não é só isso, já vi em sistemas nomes como esses (não tão grandes) nas variaveis, um monte, e parecidos. Eu sempre confundia.

Era coisas como:

BigDecimal valorSaldoAtualReceitaDespesaPlanoContasDerivativos = BigDecimal.ZERO;
BigDecimal valorSaldoAnualReceitaDespesaPlanoContasDerivativos = BigDecimal.ZERO;
BigDecimal valorSaldoAnualReceitaEntradaPlanoContasDerivados = BigDecimal.ZERO;
BigDecimal valorSaldoAtualReceitaDespesaPlanoContasIntegrados = BigDecimal.ZERO;
BigDecimal valorSaldoAnualReceitaDespesaPlanoContasIntegrados = BigDecimal.ZERO;
BigDecimal valorSaldoAnualReceitaEntradaPlanoContasDerivativos = BigDecimal.ZERO;

Nossa, esse que difere somente de Atual para Anual eh de f*.

andreiribas:
sem dúvida não é uma boa prática, mas eu prefiro os exemplo acima do que esses adaptados do código acima:
BigDecimal a = BigDecimal.ZERO;  
  
if (b != null)  
     a =  b.getValorSaldoAtual();

Sao dois extremos, ambos sao de ferrar...

Legal é tentar usar o auto-complete hehe Sobre
BigDecimal a = BigDecimal.ZERO;  
  
if (b != null)  
     a =  b.getValorSaldoAtual();
eu tinha um professor que perguntava: - "O que é isso?" - "É uma variável" - "Não, campeão, isso é uma letra. Variável é outra coisa."

hehe

adriano_si

leoramos:

Lalur é o “Livro de Apuração de Lucro Real”, é um tipo de demonstração contábil intermediária. Eu trabalho com sistema bancário e tem um módulo contábil no negócio.

Ao colega que disse que pareceu meio forjado, eu não te julgo, cara. Da primeira vez que eu vi, também não acreditei.
Na realidade, acho eu que o figura que fez isso fez meio que “de propósito”. Ele ainda trabalha aqui, acho que mandaram ele mexer nesses relatórios e ele fez meio a contragosto; daí esse tipo de coisa.
Problema é: como eu fiz faculdade de contábeis, todos os relatórios contábeis do sistema vêm pra eu mexer. Já dá pra saber o que eu sinto no meu dia-a-dia, né? hehe
Mas é real, tem essa porcaria no sistema, sim. É uma classe de execução de relatório.

Abraços!

Fala cara… foi sem maldade mesmo, mas é que pareceu absurdo demais… hueheeueheueheueeheeueheueeue, desculpe se ofendí, não foi a intenção…

Boa sorte nas suas manutenções… Com esse tipo de código, você vai precisar de muita… RSRSSRSRS

Abs []

leoramos

adriano_si:
leoramos:

Lalur é o “Livro de Apuração de Lucro Real”, é um tipo de demonstração contábil intermediária. Eu trabalho com sistema bancário e tem um módulo contábil no negócio.

Ao colega que disse que pareceu meio forjado, eu não te julgo, cara. Da primeira vez que eu vi, também não acreditei.
Na realidade, acho eu que o figura que fez isso fez meio que “de propósito”. Ele ainda trabalha aqui, acho que mandaram ele mexer nesses relatórios e ele fez meio a contragosto; daí esse tipo de coisa.
Problema é: como eu fiz faculdade de contábeis, todos os relatórios contábeis do sistema vêm pra eu mexer. Já dá pra saber o que eu sinto no meu dia-a-dia, né? hehe
Mas é real, tem essa porcaria no sistema, sim. É uma classe de execução de relatório.

Abraços!

Fala cara… foi sem maldade mesmo, mas é que pareceu absurdo demais… hueheeueheueheueeheeueheueeue, desculpe se ofendí, não foi a intenção…

Boa sorte nas suas manutenções… Com esse tipo de código, você vai precisar de muita… RSRSSRSRS

Abs []

Não me ofendi não, cara, só tava te explicando o tamanho da bucha que eu peguei.
Projeto atrasadíssimo… equipe antiga era só Home Office, e nego não levava a sério. Aí já viu.
Preciso de sorte, ajuda e paciência… muita paciência hehe

Abraço!

R
leoramos:
Legal é tentar usar o auto-complete hehe Sobre
BigDecimal a = BigDecimal.ZERO;  
  
if (b != null)  
     a =  b.getValorSaldoAtual();
eu tinha um professor que perguntava: - "O que é isso?" - "É uma variável" - "Não, campeão, isso é uma letra. Variável é outra coisa."

hehe

Quisera eu ter um professor assim... Meu professor de POO tem nome de funções como f1, f2, .... e se eu uso algo bem "estruturado" ainda me corrigi em aula... me mostrando a maneira como era feita antigamente como a correta.

God_of_Java

Aqui na corporação acabei catalogando um Pattern com o nome de Forceps. O triste de tudo isso é que não estou brincando.

Segue um pequeno exemplo:

if(nome != null && nome.equals(null)) {
        // blá blá blá
}
Tchello

God_of_Java:
Aqui na corporação acabei catalogando um Pattern com o nome de Forceps. O triste de tudo isso é que não estou brincando.

Segue um pequeno exemplo:

if(nome != null && nome.equals(null)) { // blá blá blá }


WTF?

Pior deve ser o argumento usado “mas isso nunca deu erro!”

andreiribas

Tchello:
God_of_Java:
Aqui na corporação acabei catalogando um Pattern com o nome de Forceps. O triste de tudo isso é que não estou brincando.

Segue um pequeno exemplo:

if(nome != null && nome.equals(null)) { // blá blá blá }


WTF?

Pior deve ser o argumento usado “mas isso nunca deu erro!”

hahaha

Esse aí o Eclemma colore amarelo na condicao e vermelho dentro do bloco.

Alexandre_Saudate

RafaelViana:

Quisera eu ter um professor assim… Meu professor de POO tem nome de funções como f1, f2, … e se eu uso algo bem “estruturado” ainda me corrigi em aula… me mostrando a maneira como era feita antigamente como a correta.

Putz!! O professor falar que não sabe é uma coisa… agora, te corrigir pra, na sequencia, falar da forma errada é outro nível!!!

De que instituição você está falando, mesmo?

R

asaudate:
RafaelViana:

Quisera eu ter um professor assim… Meu professor de POO tem nome de funções como f1, f2, … e se eu uso algo bem “estruturado” ainda me corrigi em aula… me mostrando a maneira como era feita antigamente como a correta.

Putz!! O professor falar que não sabe é uma coisa… agora, te corrigir pra, na sequencia, falar da forma errada é outro nível!!!

De que instituição você está falando, mesmo?

Prefiro não falar a instituição, pois o curso, no geral, é bom. Esse é uma caso isolado. Se falasse o nome da instituição prejudicaria o curso como um todo.

Acredito que o problema seja a desatualização, pois o livro sobre C++ que ele indicou para a turma (e ele usa como base para as aulas) pelo que eu vi é uma edição de 1995!! Nunca havia trabalhado com C++ antes, mas tenho certeza que a linguagem mudou bastante em 16 anos… (o livro é quase mais velho do que eu :D)

Por exemplo, o exercicio que citei era mais ou menos assim:

Escreva uma classe para conter três atributos do tipo int chamados hora, min e seg e chame-a de Tempo.
d) Crie um método para adicionar dois objetos da classe Tempo passados como argumentos.

Eu fiz, o exercicio criando uma classe Tempo e no método adicionar havia apenas um parametro (o Tempo que seria somado à instância do objeto já criado). Ou seja, o somar seria um COMPORTAMENTO que mudaria o ESTADO do objeto.

Ele falou que estava errado, pois no enunciado pedia para passar dois parametros e corrigiu o meu código colocando uma versão dele. No qual a função somar recebia dois parametros Tempo. Então, para que ter a instância do objeto !!! Por que eu preciso receber como parametro o objeto se eu ja tenho o ESTADO dele… Imagino quem nunca programou antes, aprender assim… Se é para fazer assim, é mais fácil voltar a usar as structs do C!

Desculpa o desabafo mas…

Enfim, … vamos voltar a falar sobre os códigos toscos :smiley:

victorwss

Fonte desta pérola: http://www.htmlstaff.org/ver.php?id=23581

Alguém avisa ele sobre o operador ^, acho que ele não conhece… :lol: :lol:

denisdwtg
TicketExchange ticketExchange = null;
				
				Ticket objectTicket = null;
				// While para replicacao - recupera o objeto Ticket referente a ticket informada
				int cont = 0;
				logger.info("Replication Start!"+cont);
				while (cont < 20){
					try {
						logger.info("createUserWithoutPromoImpl - Waiting replication Ticket");
						objectTicket = eiService.getTicket(ticket);
						logger.info("Ticket founded!");
						cont = 19;
					} catch (InformationNotFoundException e) {
						logger.info("Exception - Waiting replication Ticket in 1000 mils");
						Thread.sleep(1000);
						logger.info("Exception - Is Back");
						
					}
					cont++;
					logger.info("Cont = "+cont);
				}

O que quiseram fazer aqui????

danieldestro

Avisa que existe o break.

Tchello

Avisa que existe o break.

Ou colocava um booleano de flag… mas ainda assim é gambiarra…

Schimuneck

Enquanto isso meu colega de trabalho:

if(evt.getKeyCode()==9){
        tab++;
         if (tab>1){
               tab = 0;
               if(evt.getKeyCode()!=8){
                    completa(EntradaTerminal.getText());}
               }
          }
         else{ 
               tab = 0;
          }
   }

Alguém sabe a probabilidade do code ser == 9 e não ser != 8?

Schimuneck

Enquanto isso meu colega de trabalho 2:

boolean primeiro = true;
   if (primeiro){
   try {    rs = st.executeQuery("select * from comandos"); }
                            catch (Exception e)
                                        { e.printStackTrace(); }
                                        primeiro = false;
   }

Diz ae, porque criar um método com essa flag? Ele faria a mesma coisa sem ela.

L

e o Colega “3” ele fez algo tbm? 8)

…só pra descontrariar :smiley:

FernandoFranzini

KKKKKKkkkk
Muito divertido esse post mesmo…cada uma…]
Então vai meus artigos para quem quiser ler -

Anime

God_of_Java:
Aqui na corporação acabei catalogando um Pattern com o nome de Forceps. O triste de tudo isso é que não estou brincando.

Segue um pequeno exemplo:

if(nome != null && nome.equals(null)) { // blá blá blá }

E um trem desse arruma emprego e eu não, que absurdo rsrs… :stuck_out_tongue:

Tenho que admitir que a pessoa tem criatividade aguçada…

WellingtonRamos

Schimuneck:
Enquanto isso meu colega de trabalho:

if(evt.getKeyCode()==9){
        tab++;
         if (tab>1){
               tab = 0;
               if(evt.getKeyCode()!=8){
                    completa(EntradaTerminal.getText());}
               }
          }
         else{ 
               tab = 0;
          }
   }

Alguém sabe a probabilidade do code ser == 9 e não ser != 8?


Já vi dessas, mas usando null.

if(obj != null) { //faz algumas coisa MAS NÃO altera obj! if(obj == null) return; }

WellingtonRamos

Schimuneck:
Enquanto isso meu colega de trabalho 2:

boolean primeiro = true;
   if (primeiro){
   try {    rs = st.executeQuery("select * from comandos"); }
                            catch (Exception e)
                                        { e.printStackTrace(); }
                                        primeiro = false;
   }

Diz ae, porque criar um método com essa flag? Ele faria a mesma coisa sem ela.


Gostaria de um motivo? CheckStyle (ou seria DressCode… :?: ) mal feito que define que não pode passar true ou false diretamente para um if ou while (tudo bem que num if, não há qualquer sentido :roll: )
Mas também já vi isso, e constantes como a abaixo:

private static int NUM_1 = 1;
D
entidade.atualiza(Long idEntidade, String nome  )
andreharry

eu sei qm fez esse código ae do daniel hauahuahau

g4j

e esse?

public void showMsg(String msg){
         System.out.println(msg);
    }

acreditem, encontrei em uma classe de “utilidades”

danieldestro

g4j:
e esse?

public void showMsg(String msg){
         System.out.println(msg);
    }

acreditem, encontrei em uma classe de “utilidades”

“ABSTRAÇÃO”

g4j

danieldestro:
g4j:
e esse?

public void showMsg(String msg){
         System.out.println(msg);
    }

acreditem, encontrei em uma classe de “utilidades”

“ABSTRAÇÃO”

Podia refatorar e torná-lo estático… :shock:

Kamikaze

g4j:
danieldestro:
g4j:
e esse?

public void showMsg(String msg){
         System.out.println(msg);
    }

acreditem, encontrei em uma classe de “utilidades”

“ABSTRAÇÃO”

Podia refatorar e torná-lo estático… :shock:

O pior é o comentário do método! =)

fabiocsilva

Já viram um código como esse?

if(<condition>){
doSomething();
}

else{
doSomething():
}

Pois eu já vi. E tem menos de um mês. Eu me pergunto o que se passa nessa pobre cabecinha…

leoviniga

fabiocsilva:
Já viram um código como esse?

if(<condition>){
doSomething();
}

else{
doSomething():
}

Pois eu já vi. E tem menos de um mês. Eu me pergunto o que se passa nessa pobre cabecinha…


Haha já vi algo parecido mais foi com switch-case…the horror

Anime

fabiocsilva:
Já viram um código como esse?

if(<condition>){
doSomething();
}

else{
doSomething():
}

Pois eu já vi. E tem menos de um mês. Eu me pergunto o que se passa nessa pobre cabecinha…

Muitas coisas, com certeza rsrs… :stuck_out_tongue:

WellingtonRamos

fabiocsilva:
Já viram um código como esse?

if(<condition>){
doSomething();
}

else{
doSomething():
}

Pois eu já vi. E tem menos de um mês. Eu me pergunto o que se passa nessa pobre cabecinha…


doAnything();

S
String cnpjSemMascara = cnpj.replaceAll("\.", "").replaceAll("\-", "").replaceAll("\/", "");

Correto: String cnpjSemMascara = cnpj.replaceAll("[./-]", "");

Outro que encontro com frequência e sempre altero:

String xyz = abc.replaceAll("ab", "");

String xyz = abc.replace("ab", "");

gilmaslima

fabiocsilva:
Já viram um código como esse?

if(<condition>){
doSomething();
}

else{
doSomething():
}

Pois eu já vi. E tem menos de um mês. Eu me pergunto o que se passa nessa pobre cabecinha…

Esse eu já vi é o famoso ElseForever

Aqui tem uns assim:

try{
         
         doSomething():

      }catch (Exception ex){
         //nao esquenta 
      }

Como eu gostaria de ter conhecido o cara q fez isso!!! :twisted: :evil: :twisted:

WellingtonRamos

Esse eu já vi (se depurar o código java, verá também).

danieldestro

Gosto de assinaturas sucintas.

WsRetornoTO gravaPedido(long codProduto, String codCampanha, long qtdExemplar, long codAssinante, String tipoAssinante, String nomAssinante, String emailAssinante, String datNascimento, String numDdd, String numTelefone, String numCep, String codTipoLogradouro, String codTituloLogradouro, String nomLogradouro, String numLogradouro, String numComplemento, String nomPais, String sglUF, String nomLocalidade, String nomBairro, long codFormaPagto, String codBanco, String codAgencia, String digAgencia, String numConta, String digConta, String codAdm, long numCartao, long validadeCartao, long qtdParcela, String valorParcela, String indInformacaoAbril, String tipoPedido, String origemExterna, String nomResponsavel, String numDocumento, String indEnderecoAlterado, String dscOrientacaoEntrega, String numDoctoPagtoDebito, String nomTitContaPagtoDebito, String datVencimentoDebito)

Colaboração de um amigo.

L

Achei num legado:

//list1 é um ArrayList
    ArrayList list2 = list1;

    list2.remove(1);

    list1 = list2;
matheuslmota

.

L

Achei isso em um JS,

var A = "<div class="+aspas+"barraLink"+aspas+"><a class="+aspas+"link"+aspas+" onclick="+aspas+"hidden();"+aspas+" href="+aspas+"#"+aspas+" style="+aspas+"color:#fff;"+aspas+">fechar</a></div>";

var B= "<iframe name="+aspas+"frame"+aspas+" id="+aspas+"frame"+aspas+" src="+aspas+url+aspas+" width="+aspas+"650px"+aspas+" height="+aspas+"500px"+aspas+" frameborder="+aspas+"0"+aspas+"></iframe>";
Marky.Vasconcelos

O que raios aspas contem?

Polverini

provavelmente aspas hasuahushauhsuahsuahushauhsua

L

Achei a declaração.

Se disser que contem aspas ninguem vai acreditar.

leoramos

Quem contém aspas é o simpatia que me faz uma m… dessas haha

Tchello

Lucas Emanuel:
Achei isso em um JS,

var A = "<div class="+aspas+"barraLink"+aspas+"><a class="+aspas+"link"+aspas+" onclick="+aspas+"hidden();"+aspas+" href="+aspas+"#"+aspas+" style="+aspas+"color:#fff;"+aspas+">fechar</a></div>";

var B= "<iframe name="+aspas+"frame"+aspas+" id="+aspas+"frame"+aspas+" src="+aspas+url+aspas+" width="+aspas+"650px"+aspas+" height="+aspas+"500px"+aspas+" frameborder="+aspas+"0"+aspas+"></iframe>";


Ele só pode ter feito isso por desconhecer o caracter de escape, só pode!

C

perto de outras esse cara eh um genio kkk… cada coisa

Kamikaze
g4j:
e esse?
public void showMsg(String msg){
         System.out.println(msg);
    }

acreditem, encontrei em uma classe de "utilidades"

public static Boolean writeStrFile(String fileName, String strData) throws IOException {
		Boolean status;

		File file = new File(fileName);
		FileWriter out = new FileWriter(file);
		out.write(strData);
		out.close();
		status = new Boolean(true);
		return status;
	}
+ do mesmo
L

Achei num sistema aqui, olha a assinatura.

public static void call(String, String, String , String, String, String, String, String, String, String, Date, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String,String, String, String, String, String, String, String, String, boolean)

Stringmaniaco.

G

Essa lá do começo, pego pesado!

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

KKK’

ederfreitas
Integer numeroNegativo = -50;
Integer numeroPositivo;
		
// Converte um número negativo para positivo
numeroPositivo = Integer.parseInt(numeroNegativo.toString().replace("-", ""));

Sem mais...

luciano2

Oque vocês me dizem disto:

String extension = getExtension(f); extension = extension.toLowerCase(); if (extension != null) { if ( extension.equals("wsq") || extension.equals("bmp") || extension.equals("tiff") || extension.equals("tif") || extension.equals("gif") || extension.equals("jpeg") || extension.equals("jpg") || extension.equals("jpe") || extension.equals("jp2") || extension.equals("jpc") || extension.equals("png") || extension.equals("iff") || extension.equals("ico") || extension.equals("wmf") || extension.equals("emf") || extension.equals("jfif") || extension.equals("rle") || extension.equals("dib") || extension.equals("win") || extension.equals("vst") || extension.equals("vda") || extension.equals("tga") || extension.equals("icb") || extension.equals("fax") || extension.equals("eps") || extension.equals("psx") || extension.equals("pcc") || extension.equals("scr") || extension.equals("rpf") || extension.equals("rla") || extension.equals("sgi") || extension.equals("rgba") || extension.equals("rgb") || extension.equals("bw") || extension.equals("psd") || extension.equals("pdd") || extension.equals("ppm") || extension.equals("pgm") || extension.equals("pbm") || extension.equals("cel") || extension.equals("pic") || extension.equals("pcd") || extension.equals("cut") || extension.equals("psp") ) { return true; } else { return false; } }

davidbuzatto

Cai na besteira de falar que ajudava em um projeto...
Na hora que ví isso aqui quase cai de costas e perdi totalmente a vontade de contribuir.
Não sei se pegaram isso pronto ou se fizeram.

import java.util.List;
import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;

public class Conexao
{
    protected Session s;
    protected String msg;

    protected Conexao(){
       AbrirSessao();
    }

    protected void AbrirSessao ()
    {
    s = HibernateUtil.getSessionFactory().openSession();
    }
    protected void fecharSessao()
    {
     if (s.isOpen())
     {
      s.close();
     }
   }
    @Override
    protected void finalize(){
        fecharSessao();
    }
    protected String manipular (String op, Object o)    {
       msg = new String();
       try{
       s.beginTransaction();

       if (op.equalsIgnoreCase("Inserir")){
           s.persist(o);
       }else if (op.equalsIgnoreCase("Alterar")){
           s.update(o);
       }else if (op.equalsIgnoreCase("Excluir")){
           s.delete(o);
       }
       s.getTransaction().commit();

    }
    catch (HibernateException he)
    {
        msg = "Não foi possivel realizar operação\n"+he.getMessage();
    }
    finally
    {
        //fecharSessao();
    }
    return msg;
}
    protected Object PesquisarPorID (String sql){
    Object obj = null;
    List resultado = pesquisar(sql);
     if (resultado != null){
      if (resultado.size() > 0){
          obj = resultado.get(0);
      }
     }
    return obj;
    }

    protected List pesquisar(String sql){
       List lista = null;
       try
       {
        s.beginTransaction();
        Query q = (Query) s.createQuery(sql);

        if(q.list().size() >0){
            lista = q.list();
        }else{
         lista = null;
        }
        } catch (HibernateException he ){
            he.getMessage();
        }finally{
           // fecharSessao();
        }
    return lista;
    }
}

Vejam a identação, o monte de más práticas e a cereja do bolo, o fabuloso método "manipular". Obra prima não?

[]'s

ManoJava

:shock:

Rodrigo_Sasaki

E se te pedem pra analisar um NullPointer e você encontra isso

public static boolean isEmpty(String str){
    if(str == null && str.length() == 0){
        return true;
    }else{
        return false;
    }
}

Sensacional hehehe

Luiz_Augusto_Prado
danieldestro:
ÓTIMO controle de transações.
public class GenericDAO<T extends Entity> implements DAO {
     public void insert(T classe) {  
         try{  
             tx = session.beginTransaction();  
             session.save(classe);  
             tx.commit();  
         } catch(HibernateException ex){  
             tx.rollback();  
             throw ex;  
         }  
     }  
   
     public void update(T classe) {  
         try{  
             tx = session.beginTransaction();  
             session.update(classe);  
             tx.commit();  
         } catch(HibernateException ex){  
             tx.rollback();  
            throw ex;  
        }  
     }  
   
     public void delete(T classe) {  
         try{  
             tx = session.beginTransaction();  
             session.update(classe);  
             tx.commit();  
         } catch(HibernateException ex){  
             tx.rollback();  
             throw ex;  
         }  
     }  
}

KKKKKkkkkkKkkkKKKKkk (rindo muito).
Se o cara conseguir compilar isso (tx não tem tipo), vai ter um controle perfeito de transações. :D
Esse cara é mais paranoico que eu.

Isso ai é só um exemplo do que vc viu não é?

Luiz_Augusto_Prado

Anime:
Achei de muito mal gosto, ficar comentando dessa forma o código de um usuário, se for assim vai ter muito código para comentar, meu mesmo tem vários, agora sei que não fiz da melhor forma, mas na época me pareceu correto… :roll:

Melhorou… :wink:

Acho que se vermos o codigo de todo mundo aqui em detalhes ninguem escapa.
Ninguem é perfeito.

Tchello
if(info.getValue().equals(new Integer("3")) || info.getValue().intValue() > 3 ){
...
}

WHYYYYYY?

getAdicted

Tchello:
if(info.getValue().equals(new Integer("3")) || info.getValue().intValue() > 3 ){ ... }

WHYYYYYY?

Boa tarde,

Eu tenho acompanhado esse tópico a algum tempo, acho que de todos esse ganhou o prêmio Lusitano, isso eh realmente um >=? hehehe

[]'s

Rafael_Nascimento
boolean bool = getBoolValue();
if(bool == true){
     //code
}
else{
     //code
}

uhauhauha, eu vi isso…

Metallica

getAdicted:
Tchello:
if(info.getValue().equals(new Integer("3")) || info.getValue().intValue() > 3 ){ ... }

WHYYYYYY?

Boa tarde,

Eu tenho acompanhado esse tópico a algum tempo, acho que de todos esse ganhou o prêmio Lusitano, isso eh realmente um >=? hehehe

[]'s

Sim, justamente o >= usado em Portugal. :lol:

Tinha visto um bem engraçado no Daily WTF:

private void metodo() {
   if( i > 3 && i < 10) {
      i++;
      insert(i);
   }
   else {
       doNothing();
   }
}

private void doNothing() {

}
Marky.Vasconcelos
Metallica:
Tinha visto um bem engraçado no Daily WTF:
private void metodo() {
   if( i > 3 && i < 10) {
      i++;
      insert(i);
   }
   else {
       doNothing();
   }
}

private void doNothing() {

}

Eu de vez em quando deixo uns "//Do nothing.." no codigo, mas esse ganhou.

Tem esse codigo que deixei na Wall do TD Game.

public class Wall extends Piece {
	@Override
	public void processAI() {
		//Don't do nothing.. Walls don't think
	}
}
Luiz_Augusto_Prado
Marky.Vasconcelos:
Metallica:
Tinha visto um bem engraçado no Daily WTF:
private void metodo() {
   if( i > 3 && i < 10) {
      i++;
      insert(i);
   }
   else {
       doNothing();
   }
}

private void doNothing() {

}

Eu de vez em quando deixo uns "//Do nothing.." no codigo, mas esse ganhou.

Tem esse codigo que deixei na Wall do TD Game.

public class Wall extends Piece {
	@Override
	public void processAI() {
		//Don't do nothing.. Walls don't think
	}
}

To ficando com medo desses topicos.
Eu tenho costume de fazer isso de vez em quando, mas isso é porque esse "doNothing()" vai se tornar alguma coisa futuramente.
Quando dá tempo eu implemento. Quando não dá, fica sujando o codigo. Hehehehe

Alexandre_Saudate

Marky.Vasconcelos:

Eu de vez em quando deixo uns “//Do nothing…” no codigo, mas esse ganhou.

Tem esse codigo que deixei na Wall do TD Game.

public class Wall extends Piece { @Override public void processAI() { //Don't do nothing.. Walls don't think } }

Na verdade, eu não acho isso uma má prática, até porque, faz sentido. Se todo “Piece” tem que fazer processamento de AI , exceto Wall’s, então, fazer nada neste caso também é lógica. É melhor do que ter uma subclasse do tipo “PieceThatProcessAI” e depois ficar fazendo teste instanceof para saber se é válido invocar o método ou não. A não ser que exista alguma técnica melhor para fazer isso que eu desconheça :wink:

Eduardo_Bregaida
if(retornoX != null && !retornoX.isEmpty()); {

“; + {” é isso aí 8)

WellingtonRamos

asaudate:
Marky.Vasconcelos:

public class Wall extends Piece { @Override public void processAI() { //Don't do nothing.. Walls don't think } }
Na verdade, eu não acho isso uma má prática, até porque, faz sentido. Se todo “Piece” tem que fazer processamento de AI , exceto Wall’s, então, fazer nada neste caso também é lógica. É melhor do que ter uma subclasse do tipo “PieceThatProcessAI” e depois ficar fazendo teste instanceof para saber se é válido invocar o método ou não. A não ser que exista alguma técnica melhor para fazer isso que eu desconheça :wink:

Vou colocar apenas um senão na sua interpretação: “Wall” não for uma “Piece”. Mesmo que fazer isso resolva um problema de implementação, na verdade o que ocorreu foi algo mal implementado forçando que “Wall” tivesse que herdar as características de “Piece” sem necessidade.
Uma solução para este caso seria o uso de interfaces com o método processAI.

Fora este caso, concordo plenamente contigo.

Marky.Vasconcelos

É que todo objeto do jogo é uma Piece: shots, monsters, towers, towers modifiers (que parecem walls mas modificam o poder dos proximos).

Não é nada demais, só a Wall que não pensa :stuck_out_tongue:

ramilani12
Lucas Emanuel:
Achei num legado:
//list1 é um ArrayList
    ArrayList list2 = list1;

    list2.remove(1);

    list1 = list2;

Esse conhece referências em Java

orlandogpe

Primeiro ano de faculdade tinhamos aula de C e algoritmos.

Quando um dia o professor pediu pra passar um exercicio feito na aula de algoritimo para C.

Um amigo abriu o caderno e meu fez mais ou menos assim no Dev-C++ :

declare num1, num2, soma : numerico
inicio
     escreva "digite 1º numero"
     leia num1
     escreva "digite 2º numero"
     leia num2
     soma = num1 + num2
     escreva " a soma dos números digitados = ", soma
fim

Ele fico bravo ainda, pq nao funcionava. kkk

ViniGodoy

denisspitfire:
for (int i = 0; i < 5000; i++) { System.gc(); }
BOM PESSOAL… É ISSO AI… QUEM PRECISA CHAMAR O GARBAGE E APAGAR BEM APAGADO… USE ESTE CÓDIGO.

Depois de ver isso, eu precisava compartilhar. Pq depois de ver esse código minha vida mudou!

Movido de: http://www.guj.com.br/java/274146-preciso-compartilhar

denisspitfire

orlandogpe:
Primeiro ano de faculdade tinhamos aula de C e algoritmos.

Quando um dia o professor pediu pra passar um exercicio feito na aula de algoritimo para C.

Um amigo abriu o caderno e meu fez mais ou menos assim no Dev-C++ :

declare num1, num2, soma : numerico
inicio
     escreva "digite 1º numero"
     leia num1
     escreva "digite 2º numero"
     leia num2
     soma = num1 + num2
     escreva " a soma dos números digitados = ", soma
fim

Ele fico bravo ainda, pq nao funcionava. kkk


ah claro que nao roda… nao tem os “;” kkkk

Marky.Vasconcelos

Um codigo que escrevi esses dias aqui no trampo:

// TODO: The most mathemagic ever
        int screenHeight = ScreenInfo.screenHeigth();
        height = (int) (screenHeight / (portrait ? 2.78 : 2.16)); // The most magic numbers ever
S
class ResponsavelComparator implements Comparator<Relatorio> {
                public int compare(Relatorio o1, Relatorio o2) {
                        if(o1.getUsuario() != null && o2.getUsuario() != null){
                                return o1.getUsuario().compareTo(o2.getUsuario());
                        }else{
                                if(o1.getUsuario() == null && o2.getUsuario() != null){
                                        return " ".compareTo(o2.getUsuario());
                                }
 
                                if(o1.getUsuario() != null && o2.getUsuario() == null){
                                        return o1.getUsuario().compareTo(" ");
                                }
 
                                return " ".compareTo(" ");
                        }
                }
        }

Certo: retornar -1, 0 ou 1 ao invés daquelas comparações sem sentido com o espaço em branco.

gomesrod

Olá,

Essa que vi hoje eu tinha que contar para alguém… como no momento estou trabalhando sozinho resolvi colocar aqui 8)

No início do desenvolvimento do sistema em que estou trabalhando, tinha esse cara - vou chama-lo de JJ - que se entitulou o Comandante do projeto (quem nunca viu isso acontecer levanta a mão…)
Uma das decisões que ele tomou foi a de fazer toda a codificação em inglês. Fiquei meio ressabiado, pois além de ser totalmente contra os padrões do cliente isso dá margem a algumas pérolas de tradução bem zuadas.

Pois bem, o desenvolvimento continuou, JJ saiu do projeto, e eu continuei o desenvolvimnto… aos poucos fui traduzindo para português, para seguir o padrão dos outros sistemas daqui e também para tirar os “embromations”
Ofício (carta de um juiz ou autoridade) => Office
Órgão (no sentido de departamento publico) => Organ
Solicitação (uma tarefa que o usuario solicitou ao sistema) => Solicitation
etc etc

Mas esse de hoje eu não aguentei:
Uma simples flag ativo/inativo foi traduzida como:

Acreditem:
[size=18]active_male (!!!)
inactive_male (!!!)
[/size]

Simplesmente o cara pesquisou essa tradução sabe-se-lá-onde e veio com um ATIVO no sentido sexual (MACHO ATIVO / MACHO NÃO-ATIVO) !!!
Coloquei esse troço no google e me espantei kkkkkkkk Quase foi para o cliente assim

Alguém me explica isso por favor!?!?!?

matheuslmota

gomesrod:
Olá,

Essa que vi hoje eu tinha que contar para alguém… como no momento estou trabalhando sozinho resolvi colocar aqui 8)

No início do desenvolvimento do sistema em que estou trabalhando, tinha esse cara - vou chama-lo de JJ - que se entitulou o Comandante do projeto (quem nunca viu isso acontecer levanta a mão…)
Uma das decisões que ele tomou foi a de fazer toda a codificação em inglês. Fiquei meio ressabiado, pois além de ser totalmente contra os padrões do cliente isso dá margem a algumas pérolas de tradução bem zuadas.

Pois bem, o desenvolvimento continuou, JJ saiu do projeto, e eu continuei o desenvolvimnto… aos poucos fui traduzindo para português, para seguir o padrão dos outros sistemas daqui e também para tirar os “embromations”
Ofício (carta de um juiz ou autoridade) => Office
Órgão (no sentido de departamento publico) => Organ
Solicitação (uma tarefa que o usuario solicitou ao sistema) => Solicitation
etc etc

Mas esse de hoje eu não aguentei:
Uma simples flag ativo/inativo foi traduzida como:

Acreditem:
[size=18]active_male (!!!)
inactive_male (!!!)
[/size]

Simplesmente o cara pesquisou essa tradução sabe-se-lá-onde e veio com um ATIVO no sentido sexual (MACHO ATIVO / MACHO NÃO-ATIVO) !!!
Coloquei esse troço no google e me espantei kkkkkkkk Quase foi para o cliente assim

Alguém me explica isso por favor!?!?!?


kkkkkkkkkkkk
Tenso!!

kicolobo

Ai um belo dia você vê seu cliente te perguntar por que na sua tela fica aparecendo o seguinte texto:

“Como é que pode o umbu ser tão bom?”

Prova: http://twitpic.com/111637

kicolobo

E ai teve aquele dia em que do nada o sistema parou de funcionar misteriosamente.

Ah… o code review…

Jaba

kicolobo:
Ai um belo dia você vê seu cliente te perguntar por que na sua tela fica aparecendo o seguinte texto:

“Como é que pode o umbu ser tão bom?”

Prova: http://twitpic.com/111637

Eu raxo demais com essas coisas!!!

Eu já vi uma cagada dessas gigante: uma vez, um sistema antigo, ainda em VB6, estava com pau no login. Ai o lazarento do meu amigo colocou um tratamento de erro porco… E eu disse que aquilo ia dar merda. Ai ele só retrucou assim:

  • Eu sei o que eu to fazendo, você duvida? Se der pau, vai aparecer essa mensagem:

MsgBox(“Batinha quando nasce, se esparrama pelo chão. Mamãe de RQuinze, Papai de 3Oitão!” & vbcrlf & “Era dia de Natal, tava preso na prisão. Não tinha perú, e os mano comeram meu cú”)

No primeiro release, 72 clientes reclamaram da mensagem.

Luiz_Augusto_Prado

Jaba:
kicolobo:
Ai um belo dia você vê seu cliente te perguntar por que na sua tela fica aparecendo o seguinte texto:

“Como é que pode o umbu ser tão bom?”

Prova: http://twitpic.com/111637

Eu raxo demais com essas coisas!!!

Eu já vi uma cagada dessas gigante: uma vez, um sistema antigo, ainda em VB6, estava com pau no login. Ai o lazarento do meu amigo colocou um tratamento de erro porco… E eu disse que aquilo ia dar merda. Ai ele só retrucou assim:

  • Eu sei o que eu to fazendo, você duvida? Se der pau, vai aparecer essa mensagem:

MsgBox(“Batinha quando nasce, se esparrama pelo chão. Mamãe de RQuinze, Papai de 3Oitão!” & vbcrlf & “Era dia de Natal, tava preso na prisão. Não tinha perú, e os mano comeram meu cú”)

No primeiro release, 72 clientes reclamaram da mensagem.

KKKKKKKKkkkkkkkkkkkk

eu costumo fazer um print assim:
Erro: arquivo X, classe X, metodo X. Usuario responsavel: Luiz. Teste verificando X DATA.

se der merda, pelo menos o cliente não vai ver palavão

kicolobo

Aqui em BH teve um momento lindo.

Uma empresa imensa que desenvolve softwares para dispositivos touch percebeu que sempre a mesma área do visor estragava.
Quando foram analisar, descobriram que era o botão mais usado pelos usuários.

Visando solucionar o problema aumentando a vida útil do equipamento, qual foi a solução adotada?
QUAL? QUAL??? QUAL???
O botão ANDA aleatóriamente pela tela hoje.
Se eu não tivesse visto, não acreditaria.

kicolobo

Este caso é famoso, e tava presente no código fonte do Maker.

Em diversos momentos aparecia no log a seguinte mensagem: “passei por aqui”

Luiz_Augusto_Prado

kicolobo:
Aqui em BH teve um momento lindo.

Uma empresa imensa que desenvolve softwares para dispositivos touch percebeu que sempre a mesma área do visor estragava.
Quando foram analisar, descobriram que era o botão mais usado pelos usuários.

Visando solucionar o problema aumentando a vida útil do equipamento, qual foi a solução adotada?
QUAL? QUAL??? QUAL???
O botão ANDA aleatóriamente pela tela hoje.
Se eu não tivesse visto, não acreditaria.

Eu não trabalho com mobile, mas estou curioso em saber como vc resolveria isso de outra forma.
Na verdade gostei da idéia do botão aleatório.
Existe outra forma melhor?

Y

Luiz Augusto Prado:
kicolobo:
Aqui em BH teve um momento lindo.

Uma empresa imensa que desenvolve softwares para dispositivos touch percebeu que sempre a mesma área do visor estragava.
Quando foram analisar, descobriram que era o botão mais usado pelos usuários.

Visando solucionar o problema aumentando a vida útil do equipamento, qual foi a solução adotada?
QUAL? QUAL??? QUAL???
O botão ANDA aleatóriamente pela tela hoje.
Se eu não tivesse visto, não acreditaria.

Eu não trabalho com mobile, mas estou curioso em saber como vc resolveria isso de outra forma.
Na verdade gostei da idéia do botão aleatório.
Existe outra forma melhor?

Eu trocaria a marca/modelo do dispositivo touch, hehehe.

Luiz_Augusto_Prado

Yky Mattshawn:
Luiz Augusto Prado:
kicolobo:
Aqui em BH teve um momento lindo.

Uma empresa imensa que desenvolve softwares para dispositivos touch percebeu que sempre a mesma área do visor estragava.
Quando foram analisar, descobriram que era o botão mais usado pelos usuários.

Visando solucionar o problema aumentando a vida útil do equipamento, qual foi a solução adotada?
QUAL? QUAL??? QUAL???
O botão ANDA aleatóriamente pela tela hoje.
Se eu não tivesse visto, não acreditaria.

Eu não trabalho com mobile, mas estou curioso em saber como vc resolveria isso de outra forma.
Na verdade gostei da idéia do botão aleatório.
Existe outra forma melhor?

Eu trocaria a marca/modelo do dispositivo touch, hehehe.

Ou trocar de dedo? Hehehe
também pensei nisso, mas nossos programas as vezes não podem obrigar os usuarios a trocarem de celular.

E

kicolobo:
Aqui em BH teve um momento lindo.

Uma empresa imensa que desenvolve softwares para dispositivos touch percebeu que sempre a mesma área do visor estragava.
Quando foram analisar, descobriram que era o botão mais usado pelos usuários.

Visando solucionar o problema aumentando a vida útil do equipamento, qual foi a solução adotada?
QUAL? QUAL??? QUAL???
O botão ANDA aleatóriamente pela tela hoje.
Se eu não tivesse visto, não acreditaria.

Isso foi inspirado no “screen saver”.

Antigamente o “screen saver” tinha um propósito: como as telas costumavam mostrar uma imagem fixa, e o fósforo do CRT costumava gastar-se se a imagem ficasse fixa, o screen saver gastava outras áreas da tela para não ficar com a tela marcada.

Nesse caso, o tal touchscreen deveria ser resistivo (ou seja, uma tela de plástico está na frente do vidro que contém a imagem.) Tais telas estragam-se rapidamente porque elas cedem um pouco com a pressão do dedo do usuário:

Luiz_Augusto_Prado

O que leva alquem a fazer um jogo destes… Pior, jogar:

fredferrao

O que leva alguem a postar um link de jogo em um tópico sobre códigos toscos :?: :shock:

maior_abandonado

Luiz Augusto Prado:
Yky Mattshawn:
Luiz Augusto Prado:
kicolobo:
Aqui em BH teve um momento lindo.

Uma empresa imensa que desenvolve softwares para dispositivos touch percebeu que sempre a mesma área do visor estragava.
Quando foram analisar, descobriram que era o botão mais usado pelos usuários.

Visando solucionar o problema aumentando a vida útil do equipamento, qual foi a solução adotada?
QUAL? QUAL??? QUAL???
O botão ANDA aleatóriamente pela tela hoje.
Se eu não tivesse visto, não acreditaria.

Eu não trabalho com mobile, mas estou curioso em saber como vc resolveria isso de outra forma.
Na verdade gostei da idéia do botão aleatório.
Existe outra forma melhor?

Eu trocaria a marca/modelo do dispositivo touch, hehehe.

Ou trocar de dedo? Hehehe
também pensei nisso, mas nossos programas as vezes não podem obrigar os usuarios a trocarem de celular.

trocar o dedo?? veja:

g4j

Não é código tosco, mas esses dias aqui na empresa um cara perguntou (para sacanear o programador):

  • "Meu deus! O sistema tá lento demais! Por acaso vc ‘comitou’ algum código com breakpoint? "
  • "Putz cara! Não sei, vou olhar… ";

hahahaha… coitado do cara depois dessa…

Luiz_Augusto_Prado

fredferrao:
Luiz Augusto Prado:

O que leva alquem a fazer um jogo destes… Pior, jogar:

O que leva alguem a postar um link de jogo em um tópico sobre códigos toscos :?: :shock:

É pra saber se foi vc quem fez ele. Foi?

ViniGodoy

Apareceu num tópico do GUJ esses dias:

Shared Function crypt(ByVal texto As String) As String
    Dim conta, posicao, gerado, A
    conta = Len(texto)
    posicao = 1
    gerado = ""
    A = 3
    Do While posicao <= conta
        gerado = gerado & Format((Val(Asc(Mid(texto, posicao, 1)) + A)), "000")
        posicao = posicao + 1
        If A = 8 Then
            A = 3
            GoTo pula
        End If
        If A = 2 Then
            A = 8
            GoTo pula
        End If
        If A = 5 Then
            A = 2
            GoTo pula
        End If
        If A = 7 Then
            A = 5
            GoTo pula
        End If
        If A = 6 Then
            A = 7
            GoTo pula
        End If
        If A = 3 Then
            A = 6
            GoTo pula
        End If
pula:
    Loop
    crypt = gerado
End Function

Para que else, switch ou arrays, né?
Como disse o Gilson Nunes, é quase como programar VB, mas com assembly na cabeça. :slight_smile:

Quem tiver curiosidade, reescrevi esse código para o rapaz do tópico em C#…
é só seguir o link para ver como poderia ser bem mais simples…

regis_hideki

Estou para ver código mais feio que da minha IC…

Esse é um dos métodos de quase 1000 linhas:

código removido pela moderação. estava deixando tudo muito lento.
caro usuário, se quiser, poste de novo, mas como anexo.
regis_hideki

Tem um arquivo .ftl que terei que dividir em 3 posts…

código removido pela moderação. estava deixando tudo muito lento.
caro usuário, se quiser, poste de novo, mas como anexo.
regis_hideki

continuação do código anterior anterior:

código removido pela moderação. estava deixando tudo muito lento.
caro usuário, se quiser, poste de novo, mas como anexo.
regis_hideki

continuação do código anterior:

código removido pela moderação. estava deixando tudo muito lento.
caro usuário, se quiser, poste de novo, mas como anexo.
Luiz_Augusto_Prado

ViniGodoy:
Apareceu num tópico do GUJ esses dias:

Shared Function crypt(ByVal texto As String) As String
    Dim conta, posicao, gerado, A
    conta = Len(texto)
    posicao = 1
    gerado = ""
    A = 3
    Do While posicao <= conta
        gerado = gerado & Format((Val(Asc(Mid(texto, posicao, 1)) + A)), "000")
        posicao = posicao + 1
        If A = 8 Then
            A = 3
            GoTo pula
        End If
        If A = 2 Then
            A = 8
            GoTo pula
        End If
        If A = 5 Then
            A = 2
            GoTo pula
        End If
        If A = 7 Then
            A = 5
            GoTo pula
        End If
        If A = 6 Then
            A = 7
            GoTo pula
        End If
        If A = 3 Then
            A = 6
            GoTo pula
        End If
pula:
    Loop
    crypt = gerado
End Function

Para que else, switch ou arrays, né?
Como disse o Gilson Nunes, é quase como programar VB, mas com assembly na cabeça. :slight_smile:

Quem tiver curiosidade, reescrevi esse código para o rapaz do tópico em C#…
é só seguir o link para ver como poderia ser bem mais simples…

Heheheh Parace código do tempo que eu tava aprendendo a programar.
Todo iniciante e estagiário precisam de supervisão por isso.
Bom que isso apareceu no forum e não na sua empresa.

B

Flex:

public function isClosed(dto:MeuDTO):Boolean { if (dto.isClosed()) { return true; } else { return false; } }

j0nny

g4j:
Não é código tosco, mas esses dias aqui na empresa um cara perguntou (para sacanear o programador):

  • "Meu deus! O sistema tá lento demais! Por acaso vc ‘comitou’ algum código com breakpoint? "
  • "Putz cara! Não sei, vou olhar… ";

hahahaha… coitado do cara depois dessa…

Se fosse Python até faria sentido…

getAdicted

j0nny:
g4j:
Não é código tosco, mas esses dias aqui na empresa um cara perguntou (para sacanear o programador):

  • "Meu deus! O sistema tá lento demais! Por acaso vc ‘comitou’ algum código com breakpoint? "
  • "Putz cara! Não sei, vou olhar… ";

hahahaha… coitado do cara depois dessa…

Se fosse Python até faria sentido…

Eh provável que exista também em outras, mas eu já trabalhei com uma linguagem que permitia você escrever: “breakpoint” no código e eles íam no build. =)

[]'s

gmoenik

E Quando o Desenvolvedor sabe que está fazendo M**** é pior…:

/**
 * @author J***** M.
 *  Classe de Utilidades que organiza, converte e repassa  
 *  todas as informações e ações referentes a execução do sistema.
 */
public class Xunxos {
     //métodos de alto nível de complexibilidade
     //...
     //...
}
Kamikaze

E esse código que encontrei.

@Override
    public List<Cliente> listarTodos(String filtro) {
        return clienteDao.listAll(Cliente.class);
    }
Ataxexe
kamikazeishida:
E esse código que encontrei.
@Override
    public List<Cliente> listarTodos(String filtro) {
        return clienteDao.listAll(Cliente.class);
    }

Pior do que isso só se você tiver um monte de listarTodos(null) proliferados pelo sistema.

gomesrod

Como criar uma linha de cabeçalho centralizada, de maneira fácil e divertida:

<tr> <td nowrap colspan="12" bgcolor="#C3D9FF" align="left"> <strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ENDERE&Ccedil;OS</strong> </td> </tr>

ramilani12

gomesrod:
Como criar uma linha de cabeçalho centralizada, de maneira fácil e divertida:

<tr> <td nowrap colspan="12" bgcolor="#C3D9FF" align="left"> <strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ENDERE&Ccedil;OS</strong> </td> </tr>

Boa!

g4j

Encontraram nova maneira de usar mensagens:

/*
     * insert
     */
    public String insert() {
        String msg = "";

        try {

           //código muito extenso omitido

           throw new Exception("Os registros foram vinculados");   
        } catch (Exception e) {
            if (msg.equals("")) {
                msg = e.getMessage();
            }
        }
        return msg;
    }
g4j

g4j:
Encontraram nova maneira de usar mensagens:

/*
     * insert
     */
    public String insert() {
        String msg = "";

        try {

           //código muito extenso omitido

           throw new Exception("Os registros foram vinculados");   
        } catch (Exception e) {
            if (msg.equals("")) {
                msg = e.getMessage();
            }
        }
        return msg;
    }

Eu ainda omiti parte do catch…

Vejam como se garante um rollback:

} catch (Exception e) {
            try {
                con.rollback();
            } catch (SQLException e2) {
                e2.printStackTrace();
            }
            if (msg.equals("")) {
                msg = e.getMessage();
            }
            try {
                con.rollback();
            } catch (SQLException e1) {
                e1.printStackTrace();
                msg = "Não foi possível incluir registro.";
            }
        } finally {
johnny_quest

Código tosco foi o que eu vi no projeto hoje…

Começava assim…

package br.com.empresa.contingencia;

public class WService extends Service {

13.000 :shock: , isso mesmo 13 mil linhas de código depois chega o final da classe

}

Quando eu vi essa classe de 13 mil linhas de código quase cai de costas, criaram quase um projeto todo dentro da classe, e para piorar
tinha mais umas 4 classes com pelo menos 10 mil linhas. Jamais tinha visto um absurdo desse antes.

G

maior_abandonado:
Luiz Augusto Prado:
Yky Mattshawn:
Luiz Augusto Prado:
kicolobo:
Aqui em BH teve um momento lindo.

Uma empresa imensa que desenvolve softwares para dispositivos touch percebeu que sempre a mesma área do visor estragava.
Quando foram analisar, descobriram que era o botão mais usado pelos usuários.

Visando solucionar o problema aumentando a vida útil do equipamento, qual foi a solução adotada?
QUAL? QUAL??? QUAL???
O botão ANDA aleatóriamente pela tela hoje.
Se eu não tivesse visto, não acreditaria.

Eu não trabalho com mobile, mas estou curioso em saber como vc resolveria isso de outra forma.
Na verdade gostei da idéia do botão aleatório.
Existe outra forma melhor?

Eu trocaria a marca/modelo do dispositivo touch, hehehe.

Ou trocar de dedo? Hehehe
também pensei nisso, mas nossos programas as vezes não podem obrigar os usuarios a trocarem de celular.

trocar o dedo?? veja:

Navegando na web, encontrei esse que achei melhor!


g4j

johnny quest:
Código tosco foi o que eu vi no projeto hoje…

Começava assim…

package br.com.empresa.contingencia;

public class WService extends Service {

13.000 :shock: , isso mesmo 13 mil linhas de código depois chega o final da classe

}

Quando eu vi essa classe de 13 mil linhas de código quase cai de costas, criaram quase um projeto todo dentro da classe, e para piorar
tinha mais umas 4 classes com pelo menos 10 mil linhas. Jamais tinha visto um absurdo desse antes.

hhehe… pede pro eclipse abrir a classe e vai buscar um café ou fumar um cigarro torcendo pra não travar.

Vinicius_Zibetti_Res

ashudhasudhuashu que erro patético...

#include <iostream>
#include <vector>
#include <stdio.h>
#include <queue>
#define INF 999999


using namespace std;

int n, xx, yy, test = 1;


int main(void){
    ios::sync_with_stdio(false);
    while(cin >> n && n != 0){
        vector<int> edges[n + 1];
        for(int i = 0; i < n - 1; i++){
            cin >> xx >> yy;
            edges[xx].push_back(yy);
            edges[yy].push_back(xx);
        }
        int miN = INF, ret = 1;
        for(int i = 1; i <= n; i++){
            int max = 0;
            int dist[n + 1];
            bool vis[n + 1];
            for(int j = 0; j < n + 1; j++) {dist[j] = 0; vis[j] = 0;}
            queue<int> q;
            q.push(i);
            while(!q.empty()){
                int x = q.front(); q.pop();
                if(dist[x] > max) max = dist[x];
                for(int y = 0; y < edges[x].size(); y++){
                    if(!vis[edges[x][y]]){
                        dist[edges[x][y]] = dist[x] + 1;
                        q.push(edges[x][y]);
                    }
                }
            }
            if(max < miN) {miN = max; ret = i;}
        }
        cout << "Teste " << test++ << "\n" << ret << "\n\n";
    }
    return 0;
}
J

To migrando um legado e analisando o código antigo em VB6, é uma coleção danada de código tosco!
Vou compartilhar os mais toscos…

olhem esse:

Public Function pegaate10(pos As Long, txt As String)
Dim tmptxt As String
Dim car As String
Dim X As Long

    tmptxt = ""
    
    For X = pos To 1 Step -1
        car = Mid(txt, X, 1)
        If car = Chr(10) Then
            Exit For
        Else
            tmptxt = car & tmptxt
        End If
    Next X

    pegaate10 = tmptxt

End Function
fredferrao

Achamos este aqui hoje, mereceu até um meme:

String[] arr=str2array.split(";");
System.out.println("Array :"+arr.length);
for(int i=0;i<arr.length;i++){  //<=== WAT??
}
algumaCoisa = arr[0];
algumaCoisa2 = arr[1];
algumaCoisa3 = arr[2];
algumaCoisa4 = arr[3];
algumaCoisa5 = arr[4];

//nomes de variaveis alteradas,

pedrinho20

Encontrei esse aqui hoje. Código bem comentado em ASP.

preco = request("txtPreco[]")
    valor = request("txtValor[]")
    desconto = request("txtDesconto[]")

    'Datas sem putaria
    dtInicSigap = request("txtDtSrvInic")    
    dtFinSigap = request("txtDtSrvFin")    
    dtEmissaoSigap = request("txtDtEmissao")
ViniGodoy

Um código que vimos recentemente aqui:

public boolean isSuperUser() {
    if ("platform-Administrator super-support".contains(username)) {
       return true;
    }

    //Aqui vinham outros testes, com base num bd
    return false;
}

O dev preguiçoso usou contains. Mas olha a m... que dá se você criar um usuário chamado "a" ou "trator" ou qualquer coisa que esteja no meio daquela string ali...

lucasportela

Um que vi aqui recentemente:

private boolean isAgenciaVazia(VoCuentas vo) {
    return vo.getAgencia() == 0 ? true : false;
}

Esse queria mostrar que sabe usar operador ternário.

D

quentinho este aqui… acabei de pegar num projeto rsrsrs

if ( criteria.list() != null && criteria.list().size() > 0 ) {
				infos = criteria.list();
			}

:roll: :roll: :roll:

ViniGodoy

Ué, qual é o problema desse código?

doravan

daniesouza:
quentinho este aqui… acabei de pegar num projeto rsrsrs

if ( criteria.list() != null && criteria.list().size() > 0 ) {
				infos = criteria.list();
			}

:roll: :roll: :roll:

Amigo, acho que você é quem tá com problema.
O código é bem válido, mostrar resultados somente se houver algo na lista é um tratamento bem trivial.

sergiotaborda

doravan:
daniesouza:
quentinho este aqui… acabei de pegar num projeto rsrsrs

if ( criteria.list() != null && criteria.list().size() > 0 ) {
				infos = criteria.list();
			}

:roll: :roll: :roll:

Amigo, acho que você é quem tá com problema.
O código é bem válido, mostrar resultados somente se houver algo na lista é um tratamento bem trivial.

Esse codigo é equivalente a

infos = criteria.list();
			if (infos  != null && infos.size() > 0 ) {
				infos = infos;
			}

entenderam o problema agora ?

D

talvez eu tenha entendido errado entao…favor me corrigir se eu estiver errado… mas quando vc faz um criteria.list ele nao vai no banco listar os dados??

e no codigo ele esta fazendo 3 vezes… indo no banco 3 vezes…

acredito que seria mais facil fazer isto…

infos = criteria.list();

if(infos != null || infos.size() >0)
{
// blah blah blah
}
ViniGodoy

Sem a gente ver o interior do método list(), ou você dizer de que API vem esse criteria, não daria para prever o que esse método faz.

H

Esse eu acabei de achar aqui!

...
boolean variavelBooleana = false;
...

if (variavelBooleana == true) {
             
} else if (variavelBooleana == false) {
                     
}

Acho que o cara queria garantir que não existisse um talvez…
aieuhiuaehuieahea

A

lucasportela:
Um que vi aqui recentemente:

private boolean isAgenciaVazia(VoCuentas vo) {
    return vo.getAgencia() == 0 ? true : false;
}

Esse queria mostrar que sabe usar operador ternário.

Oxi, que mal há nisso?

:?:

matheuslmota

andredecotia:
lucasportela:
Um que vi aqui recentemente:

private boolean isAgenciaVazia(VoCuentas vo) {
    return vo.getAgencia() == 0 ? true : false;
}

Esse queria mostrar que sabe usar operador ternário.

Oxi, que mal há nisso?

:?:

O uso redundante do operador ternário, retornar true se a condição for verdadeira e false se a condição for falsa.

rafadelnero

Mas o tipo de dado a ser comparado é um int, impossibilitando retornar diretamente true ou false.

matheuslmota

Mas o tipo de dado a ser comparado é um int, impossibilitando retornar diretamente true ou false.

Isso não importa,

vo.getAgencia() == 0

Retorna true ou false.

A

Mas o tipo de dado a ser comparado é um int, impossibilitando retornar diretamente true ou false.

Isso não importa,

vo.getAgencia() == 0

Retorna true ou false.

:?:

Vc trocou o ternário por if/else…

Q diferença isso faz?

igor_ks

eita, que dificuldade rs

private boolean isAgenciaVazia(VoCuentas vo) { return vo.getAgencia() == 0 ? true : false; }

é a mesma coisa que

private boolean isAgenciaVazia(VoCuentas vo) { return vo.getAgencia() == 0; }

vo.getAgencia() == 0 já retorna true ou false

matheuslmota

Mas o tipo de dado a ser comparado é um int, impossibilitando retornar diretamente true ou false.

Isso não importa,

vo.getAgencia() == 0

Retorna true ou false.

:?:

Vc trocou o ternário por if/else…

Q diferença isso faz?

Pra que usar ternário se o objetivo é retornar true ou false?

expressaoLogica ? A se expressaoLogica for verdadeira : B se expressaoLogica for false;

A redundância no código era “retorne true se a espressao for true e retorne false se a expressao for false”. Está claro agora?

rafadelnero

Pra que usar ternário se o objetivo é retornar true ou false?
view plaincopy to clipboardprint?
expressaoLogica ? A se expressaoLogica for verdadeira : B se expressaoLogica for false;

A redundância no código era “retorne true se a espressao for true e retorne false se a expressao for false”. Está claro agora?

O cara só quiz mostrar que sabia ternário mesmo, kkkk!!!Ficaria até um pouco mais claro o código!

lucasportela

Caramba, não sabia que o código que tinha postado tinha gerado tantas dúvidas.

Mas como já disseram, é a redundância do código.

É como se fizesse:

if(x == 1){
    return true;
else {
    return false;
}

simplesmente basta fazer:

return x==1;
Rodrigo_Sasaki

Não tem como não postar essa:Date dataAgora = new Date(Calendar.getInstance().getTime().getTime());

drsmachado

Código bem explicativo, não intrusivo…

Rodrigo_Sasaki

Nossa, e ainda por cima comentado :slight_smile:

Bruno_M_Gasparotto

Achei esse trecho de código e ficamos brincando de jogo dos sete erros aqui no trabalho:

if (!flag.equals("")&&!flag.toString().equals("null") { // faz alguma coisa que dá erro }

g4j

kkkkkk

if (msgResult.equals("Não foi possível excluir todos os registros selecionados.")){ msg = "Não foi possível excluir todos os registros selecionados."; }else if (msgResult.equals("Não foi possível excluir o registro.")){ msg = "Não foi possível excluir o registro."; }

thiago.correa

Melhor prevenir do que remediar:

if (tabelasCalculoList == null) tabelasCalculoList = new ArrayList<DataTableModel>(); else tabelasCalculoList = new ArrayList<DataTableModel>();

como o autor encontra-se em contrato de experiência, já foi encaminhado ao RH a recomendação pela não renovação do contrato de trabalho :stuck_out_tongue:

igor_ks

Huahau maldade

Julio_Murta

avaliem

ps: 80% das coisas aqui não fazem sentido

S
public Boolean getChave() {
		if (selecao != null) {
			if (selecao.containsKey("chave")) {
				if (selecao.get("chave").equals("true")) {
					return Boolean.TRUE;
				} else {
					return Boolean.FALSE;
				}
			}
			return Boolean.FALSE;
		}
		return Boolean.FALSE;
	}
Bastava:
public Boolean getChave() {
    return selecao != null && "true".equals(selecao.get("chave"));
}
Outro:
public Boolean existeRestricao() {
		String type = (String) selected.get("type");
		String no = (String) selected.get("no");
		if ("box".equals(type) && "Instance".equals(no)) {
			return true;
		}
		if (type == null && "box".equals(no)) {
			return null;
		}
		return null;

	}
Por que retornar null ao invés de false e pra que aquele último if? Poderia ser:
public Boolean existeRestricao() {
		String type = (String) selected.get("type");
		String no = (String) selected.get("no");
		return "box".equals(type) && "Instance".equals(no);
}
ViniGodoy

Invertendo o equals, dava para dispensar até o cast:

public Boolean existeRestricao() { return "box".equals(selected.get("type")) && "Instance".equals(selected.get("no")); }

S

É verdade, obrigado.
Se quiser manter as 3 linhas, dá pra trocar o tipo por Object ao invés de String.

Mais uma. Essa classe é das “boas”…

public String getNomeFuncao() { if (selected != null) { if (selected.containsKey("box")) { return null; } if (selected.containsKey("nome")) { return (String) selected.get("nome"); } return "-1"; } return "-1"; }
Parece que a pessoa acredita que esse map.containsKey() evita null pointer. Em muitos pontos tem esse if antes de usar o valor. Mas nesse caso a lógica ficaria diferente sem ele.

Obs: para não ser injusto, alguns nomes toscos foram edição minha.

ErickRAR

Já devem ter postado algo assim, mas gastei umas horas ajustando códigos de gente que não conhecia resource managers.

If System.Globalization.CultureInfo.CurrentCulture.Name = "pt-BR" Then
            strErrorMessage = "Por favor, tente mais tarde!"
        Else
            strErrorMessage = "Please, try again later!"
        End If
ViniGodoy

Artigo muito apropriado no coding horror:
http://blog.codinghorror.com/new-programming-jargon/

ErickRAR

ViniGodoy:
Artigo muito apropriado no coding horror:
http://blog.codinghorror.com/new-programming-jargon/

Só não entendi o porquê do 21, ou então está mal colocado:


21. Smurf Naming Convention
SmurfAccountView -> SmurfAccountDTO -> SmurfAccountController

Acho uma nomenclatura válida. O ruim é quando fazem:

public class Cliente{
   private String clienteNome;
   private String clienteCPF;
}
ViniGodoy

Acho que isso tira sarro da programação da Apple. Pq o prefixo no Objective-C é geralmente o nome do seu projeto ou módulo (já que lá não existem pacotes). Aí os prefixos ficam toscos.

S

A string tem que ser diferente de vazio e igual a outra coisa?

if (operador != null && !operador.equals("") && operador.equalsIgnoreCase("ou"))

Basta:

if ("ou".equalsIgnoreCase(operador))
G

e o meu arquiteto que eu perguntando sobre como recuperar os relacionamentos na minha entidade em cascata ele me solta: no jpql deve ter um FULL FETCH.
certa vez esse mesmo arquiteto escreveu a seguinte linha de código:

if("null".equals(object))

ahuehuehuahue

S

Um código que encontro com frequência neste sistema é algo do tipo:

List<Classe> lista = new ArrayList<Classe>(0);
Qual seria a possível vantagem de criar uma coleção com tamanho zero? Só consigo ver a falta de eficiência ao adicionar elementos.

ViniGodoy

Expremer alguns bytes de memória enquanto um ArrayList não é usado? Se a restrição de memória for assim tão absurda, talvez o ideal seria usar um array primitivo.

S

Pois é… e pior que, em vários casos, há logo abaixo um laço adicionando elementos.

ViniGodoy

Aí é POG mesmo.

danieldestro

Lampejo de inteligência:

if (lista == null) { request.setAttribute("listaEstabelecimentos", lista); } else { request.setAttribute("listaEstabelecimentos", lista); request.setAttribute("listaEstabelecimentosCount", lista.size()); }

danieldestro

Clareza de código e separação de statements (declaração, depois atribuição):

List<InclusaoEstacao> lista; lista = systemFacade.buscaListInclusaoEstacao();

danieldestro

Temos um campeão:

while((pergunta = quiz.proximaPergunta()) != null) { if (pergunta == null) { break; } }

Rodrigo_Sasaki

danieldestro:
Temos um campeão:

while((pergunta = quiz.proximaPergunta()) != null) { if (pergunta == null) { break; } }


Inception… :slight_smile:

S

danieldestro:
Temos um campeão:

while((pergunta = quiz.proximaPergunta()) != null) { if (pergunta == null) { break; } }


Mas o código é só isso mesmo? Mais nada dentro do laço?

ViniGodoy

danieldestro:
Temos um campeão:

while((pergunta = quiz.proximaPergunta()) != null) { if (pergunta == null) { break; } }

Só faltou o resto do código estar num else. Programação extremamente precavida.

S

Falando em programação precavida, encontro com frequência checagens de null em objetos instanciados ou dereferenciados poucas linhas acima.

Ataxexe

Não sei se cheguei a postar este códido de um sistema que trabalhei há um tempo:

/** 
   * Método que converte uma String no padrão #,##0.00 para um double 
   */
  public static double stringToDouble(String pString) {
    if (stringVazia(pString)) {
      return Double.NEGATIVE_INFINITY;
    }
  
    String aux = pString;
    String[] vecPonto = stringToArray(pString, ".", true);
    String[] vecVirgula = stringToArray(pString, ",", true);
  
    if (vecVirgula.length > 1 && vecPonto.length > 1) {
      if (vecVirgula.length == vecPonto.length) {
        if (vecVirgula[0].length() < vecPonto[0].length()) {
          aux = trocaSubString(aux, ",", "");
        } else {
          aux = trocaSubString(aux, ".", "");
          aux = trocaSubString(aux, ",", ".");
        }
      } else if (vecVirgula.length > vecPonto.length) {
        aux = trocaSubString(aux, ",", "");
      } else {
        aux = trocaSubString(aux, ".", "");
        aux = trocaSubString(aux, ",", ".");
      }
    } else if (vecVirgula.length > 2 || vecPonto.length > 2) {
      aux = trocaSubString(aux, ".", "");
      aux = trocaSubString(aux, ",", "");
    } else if (vecVirgula.length == 2) {
      aux = trocaSubString(aux, ",", ".");
    }
  
    return (new Double(aux)).doubleValue();
  }

Detalhe que nem incluí os métodos trocaSubString, stringVazia e stringToArray.

Até escrevi um post no meu blog sobre essa maravilha. O infinito negativo caso a string seja vazia é quase um chute nos testículos.

S
public class Disponibilidade {
    // outros atributos
    private List<String> diaMesList = new ArrayList<String>(0);

    // Vários métodos que não usam essa lista

    public List<String> getDiaMesList() {
        if (diaMesList == null || diaMesList.isEmpty()) {
            diaMesList = new ArrayList<String>(0);
        }
        if (diaMes != null) {
            diaMesList = new ArrayList<String>(0);
            diaMesList.add(diaMes.toString());
        }
        return diaMesList;
    }

     public void setDiaMesList(List<String> diaMesList) {
         this.diaMesList = diaMesList;
    }
}
mauriciot.silva

Em um lugar que eu já trabalhei tinha um desses.

public Date yyyymmdd2ddmmyyyy(String data)

ramilani12

Como verificar uma String

if (value.getName().toUpperCase().equals("billingId") || value.getName().toUpperCase() .equals("BILLINGID")) { if (!getCdrmedUsageTypeRegister().validateUsageType( value.getValue())) { result.registerError(data, ERROR_VALUE_BILLINGID_IS_INVALID); }

Não era mais fácil:

if (value.getName().equalsIgnoreCase("billingid") {

}
S

doc.setModelo(cabecalho == null ? null : cabecalho);

S
Ao que parece, o sujeito criou esse monstro recursivo por não conhecer o iterator.
private void removeRecursos(List<String> list, List<String> from) {
		if (from == null) {
			return;
		}
		// ser for o mesmo objeto, clona para evitar
		// ConcurrentModificationException
		if (from.equals(list)) {
			from = new ArrayList<String>(list);
		}
		for (String papel : from) {
			removeRecursos(papel, list);
		}
	}

	/**
	 * Remove da lista, recursivamente
	 */
	private void removeRecursos(final String rec, List<String> list) {
		for (final String p : getRecursos(rec)) {
			list.remove(p);
			removeRecursos(p, list);
		}
	}
Fora que não sabe a diferença de == e equals(). Pra que essa lista extra, ao invés de retornar o getResultList()?
private ArrayList<Documento> listaAssociados(Documento doc) {
		ArrayList<Documento> lista = new ArrayList<Documento>();
                // criação da query
		List<Documento> list = q.getResultList();
		if (list != null && !list.isEmpty()) {
			lista.addAll(list);
		}
		return lista;
	}
ViniGodoy

Schuenemann:
Pra que essa lista extra, ao invés de retornar o getResultList()?

private ArrayList<Documento> listaAssociados(Documento doc) { ArrayList<Documento> lista = new ArrayList<Documento>(); // criação da query List<ProcessoDocumento> list = q.getResultList(); if (list != null && !list.isEmpty()) { lista.addAll(list); } return lista; }

Talvez ele quisesse fazer uma cópia. Mas nesse caso, também dava para fazer:

return new ArrayList<Document>(q.getResultList());

Outra coisa é retornar um ArrayList no lugar da interface List.
Esse é realmente um código feio em vários níveis.

S

Existe algum motivo para querer fazer uma cópia?

ViniGodoy

Sei lá, não estou com os fontes. Mas aparentemente, nesse caso, não.

De qualquer forma, mesmo que ele queira fazer a cópia, fez de um jeito muito desajeitado.

Alexandre_Saudate

Sim. Muitas vezes, uma API retorna uma lista que não é modificável (muitas vezes sem saber disso) e você quer manipular essa lista. Então, você faz uma cópia.

Por exemplo, esse código:

Object object = new Object();
		
List<Object> minhaLista = Arrays.asList(object, object);
minhaLista.add(new Object());

Lança uma UnsupportedOperationException. Mas esse não:

Object object = new Object();
		
List<Object> minhaLista = Arrays.asList(object, object);
minhaLista = new ArrayList<Object>(minhaLista);
minhaLista.add(new Object());

[]'s

Julio_Murta
public static int CodUFIBGE(string UF)
        {
            if (UF == "RO") return 11;
            else
                if (UF == "AC") return 12;
                else
                    if (UF == "AM") return 13;
                    else
                        if (UF == "RR") return 14;
                        else
                            if (UF == "PA") return 15;
                            else
                                if (UF == "AP") return 16;
                                else
                                    if (UF == "TO") return 17;
                                    else
                                        if (UF == "MA") return 21;
                                        else
                                            if (UF == "PI") return 22;
                                            else
                                                if (UF == "CE") return 23;
                                                else
                                                    if (UF == "RN") return 24;
                                                    else
                                                        if (UF == "PB") return 25;
                                                        else
                                                            if (UF == "PE") return 26;
                                                            else
                                                                if (UF == "AL") return 27;
                                                                else
                                                                    if (UF == "SE") return 28;
                                                                    else
                                                                        if (UF == "BA") return 29;
                                                                        else
                                                                            if (UF == "MG") return 31;
                                                                            else
                                                                                if (UF == "ES") return 32;
                                                                                else
                                                                                    if (UF == "RJ") return 33;
                                                                                    else
                                                                                        if (UF == "SP") return 35;
                                                                                        else
                                                                                            if (UF == "PR") return 41;
                                                                                            else
                                                                                                if (UF == "SC") return 42;
                                                                                                else
                                                                                                    if (UF == "RS") return 43;
                                                                                                    else
                                                                                                        if (UF == "MS") return 50;
                                                                                                        else
                                                                                                            if (UF == "MT") return 51;
                                                                                                            else
                                                                                                                if (UF == "GO") return 52;
                                                                                                                else
                                                                                                                    if (UF == "DF") return 53;
                                                                                                                    else
                                                                                                                    {
                                                                                                                        return 0;
                                                                                                                    }
        }
Rodrigo_Sasaki

Hahahaha, essa thread realmente não tem preço!

getAdicted
/**
	 * @param stringToCovert the stringToCovert to set
     * @return the stringConverted - Metodo para converter String para Float
     */   
    public float convertStringFloat(String stringToCovert) {

        float stringConverted = java.lang.Float.parseFloat(stringToCovert);

        return stringConverted;
    }

E tem um para cada tipo Wrapper.

[]'s

S

???
(TipoDependencia é um enum)

public List<TipoDependencia> getTiposDependenciaPrimaria(){ List<TipoDependencia> asList = Arrays.asList(TipoDependencia.values()); List<TipoDependencia> list = new LinkedList<TipoDependencia>(asList); list.remove(TipoDependencia.B); list.remove(TipoDependencia.G); list.remove(TipoDependencia.PD); list.remove(TipoDependencia.FA); return list; }

Alexandre_Saudate

Schuenemann:
???
(TipoDependencia é um enum)

public List<TipoDependencia> getTiposDependenciaPrimaria(){ List<TipoDependencia> asList = Arrays.asList(TipoDependencia.values()); List<TipoDependencia> list = new LinkedList<TipoDependencia>(asList); list.remove(TipoDependencia.B); list.remove(TipoDependencia.G); list.remove(TipoDependencia.PD); list.remove(TipoDependencia.FA); return list; }

Perdoe a minha ignorância: qual o problema com esse código?

S

Talvez a ignorância seja minha, mas achei meio tosco (e ineficiente) adicionar tudo numa nova lista, só porque a primeira não permite remoção.

Acho que teria sido melhor adicionar elemento por elemento ou usar um for, com condições para ver se adiciona ou não. E isso estaria no próprio enum.

Ataxexe

Schuenemann:
Talvez a ignorância seja minha, mas achei meio tosco (e ineficiente) adicionar tudo numa nova lista, só porque a primeira não permite remoção.

Acho que teria sido melhor adicionar elemento por elemento ou usar um for, com condições para ver se adiciona ou não. E isso estaria no próprio enum.

E tem o lance de caso surja um novo elemento no enum que não seja primário isso aí vai dar problema. O ideal nesses casos é não trabalhar com a negação pra ser o mais específico possível.

Criado 3 de abril de 2006
Ultima resposta 29 de out. de 2014
Respostas 971
Participantes 238