Juliano Claiton Silva http://www.claiton.com.br
THE BLACK CAT IN THE DARK ROOM
O difícil é simplificar. A B B A
Operador ternário <ul><li>if (!Validador.isDataMenorOuIgual( </li></ul><ul><li>Formatador </li></ul><ul><li>.formatDate( <...
Hibernate <ul><li>(ProjectTemplateTask) </li></ul><ul><li>( </li></ul><ul><li>(ProjectTemplateStageActivity) </li></ul><ul...
Strategy pattern <ul><li>if ((usuario != null) && (documento.getAvaliacaoOcorrencia() != null)) { </li></ul><ul><li>if (av...
Strategy pattern
Transação, para quê? <ul><li>// inclui “REGISTRO PAI” </li></ul><ul><li>codPAI = próximo valor; </li></ul><ul><li>sql.appe...
Como entender! <ul><li>} else { </li></ul><ul><li>montanteValores =montanteValores; </li></ul><ul><li>} </li></ul>ResultSe...
Que tecnologia usar? <ul><li>Cada problema pode ser resolvido com mais ou menos esforço dependendo da linguagem e/ou frame...
O caminho do sucesso para o Blue Code é o BOM SENSO. BOM SENSO != P.O.G. EQUIPE
Você acha que acabou? <ul><li>COMO GERENCIAR UM DEPARTAMENTO DE TECNOLOGIA </li></ul><ul><li>THE IT CROWD </li></ul><ul><l...
Agradecimentos a todos os programados, coordenadores e gerentes de Projetos que contribuiram para o RED CODE.
Upcoming SlideShare
Loading in...5
×

Red Code

2,105

Published on

Códigos mal escritos e anti-patterns

Published in: Technology, News & Politics
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
2,105
On Slideshare
0
From Embeds
0
Number of Embeds
6
Actions
Shares
0
Downloads
6
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide
  • Red Code

    1. 1. Juliano Claiton Silva http://www.claiton.com.br
    2. 2. THE BLACK CAT IN THE DARK ROOM
    3. 3. O difícil é simplificar. A B B A
    4. 4. Operador ternário <ul><li>if (!Validador.isDataMenorOuIgual( </li></ul><ul><li>Formatador </li></ul><ul><li>.formatDate( </li></ul><ul><li>(processoExecucaoCalculo </li></ul><ul><li>.getDataInicioCumprimentoPena() != null) ? processoExecucaoCalculo </li></ul><ul><li>.getDataInicioCumprimentoPena() </li></ul><ul><li>: (menorDataInicio != null) ? menorDataInicio </li></ul><ul><li>: execucao </li></ul><ul><li>.getDataInicioCumprPena(), </li></ul><ul><li>Formatador.FORMATO_DATA), </li></ul><ul><li>Formatador </li></ul><ul><li>.formatDate( </li></ul><ul><li>interrup </li></ul><ul><li>.getDataInicioInterrupcao(), </li></ul><ul><li>Formatador.FORMATO_DATA)) && !interrup.getCodExecucao().equals(execucao.getCodExecucao())) { </li></ul>
    5. 5. Hibernate <ul><li>(ProjectTemplateTask) </li></ul><ul><li>( </li></ul><ul><li>(ProjectTemplateStageActivity) </li></ul><ul><li>((ProjectTemplateStage) pt </li></ul><ul><li>.getProjectTemplateStages() </li></ul><ul><li>.get(i2)) </li></ul><ul><li>.getProjectTemplateStageActivitys() </li></ul><ul><li>.get(c2)) </li></ul><ul><li>.getProjectTemplateTasks() </li></ul><ul><li>.get(x2)) </li></ul><ul><li>.setProjectTemplateStageActivity( </li></ul><ul><li>( </li></ul><ul><li>(ProjectTemplateTask) </li></ul><ul><li>( </li></ul><ul><li>(ProjectTemplateStageActivity) </li></ul><ul><li>( </li></ul><ul><li>(ProjectTemplateStage) projectTemplate </li></ul><ul><li>.getProjectTemplateStages() </li></ul><ul><li>.get(i1)) </li></ul><ul><li>.getProjectTemplateStageActivitys() </li></ul><ul><li>.get(c1)) </li></ul><ul><li>.getProjectTemplateTasks() </li></ul><ul><li>.get(x1)) </li></ul><ul><li>.getProjectTemplateStageActivity()); </li></ul>
    6. 6. Strategy pattern <ul><li>if ((usuario != null) && (documento.getAvaliacaoOcorrencia() != null)) { </li></ul><ul><li>if (avaliacaoOcorrencia.getStatus().equals(Constantes.Status.PENDENTE)) { </li></ul><ul><li>if (usuario.getId().intValue() == avaliacaoOcorrencia.getResponsavel().getId().intValue()) { </li></ul><ul><li>listaSecao.add(Constantes.Secao.EMISSAO_AVALIACAO_ACAO); </li></ul><ul><li>listaBotao.add(new Botao(Constantes.Botao.SALVAR_DRAFT_ACAO, Constantes.Botao.SALVAR_DRAFT_KEY)); </li></ul><ul><li>if (documento.getProcedencia() != null) { </li></ul><ul><li>listaBotao.add(new Botao(Constantes.Botao.DEVOLVER_ANALISE_PROCEDENCIA_AC, CEDENCIA_KEY)); </li></ul><ul><li>} </li></ul><ul><li>//- FALTA REDIRECIONAR OUTRO AVALIADOR OCORRENCIA </li></ul><ul><li>//listaBotao.add(new Botao(Constantes.Botao.REDIRECIONAR_OUTRO_AVALIADOR_OCORRENCIA, _AVALIADOR_KEY)); </li></ul><ul><li>if (documento.getTipoAvaliacao().equals(Constantes.VALORSEQUENCIAL)) { </li></ul><ul><li>listaBotao.add(new Botao(Constantes.Botao.ENCAMINHAR_AVALIADOR_ACOES_PROCE,DENCIA_KEY)); </li></ul><ul><li>} else </li></ul><ul><li>if (documento.getTipoAvaliacao().equals(Constantes.VALORPARALELA)) { </li></ul><ul><li>listaBotao.add(new Botao(Constantes.Botao.SALVAR_AVALIACAO_OCCAO, AO_OCORRENCIA_KEY)); </li></ul><ul><li>} </li></ul><ul><li>} else { </li></ul><ul><li>//- Condição realizada para não mostrar 2x a mesma seção quando é paralelo </li></ul><ul><li>if (documento.getTipoAvaliacao().equals(Constantes.VALORSEQUENCIAL)) { </li></ul><ul><li>listaSecao.add(Constantes.Secao.EMISSAO_AVALIACAO_ACAO_READONLY); </li></ul><ul><li>} </li></ul><ul><li>} </li></ul><ul><li>} else { </li></ul><ul><li>executaAvaliacaoAcao = true; </li></ul><ul><li>if (avaliacaoAcao != null && usuario != null) { </li></ul><ul><li>if (usuario.getId().intValue() != avaliacaoAcao.getResponsavel().getId().intValue()) { </li></ul><ul><li>listaSecao.add(Constantes.Secao.EMISSAO_AVALIACAO_ACAO_READONLY); </li></ul><ul><li>} </li></ul><ul><li>} </li></ul><ul><li>} </li></ul><ul><li>} else { </li></ul>
    7. 7. Strategy pattern
    8. 8. Transação, para quê? <ul><li>// inclui “REGISTRO PAI” </li></ul><ul><li>codPAI = próximo valor; </li></ul><ul><li>sql.append(&quot; insert into PAI (codPAI, descPAI) values ( &quot; + codigo + &quot;, '&quot; + descricao + &quot;')&quot;); </li></ul><ul><li>int iFlag = db.insertQuery(sql.toString(), con); </li></ul><ul><li>if (iFlag == 1) { </li></ul><ul><li>// inclui PAI x FILHO </li></ul><ul><li>sql = new StringBuffer(); </li></ul><ul><li>sql.append(&quot; insert into PAIFILHO (codPAI, codFILHO) values ( &quot; + codigoPAI + &quot;, &quot; + codigoFILHO() + &quot;)&quot;); </li></ul><ul><li>iFlag = db.insertQuery(sql.toString(), con); </li></ul><ul><li>if (iFlag == 1) { </li></ul><ul><li>request.setAttribute(&quot;salvo&quot;, &quot;S&quot;); </li></ul><ul><li>request.setAttribute(&quot;codPAI&quot;, codigoPAI); </li></ul><ul><li>mensagens = &quot; FILHO incluído com sucesso &quot;; </li></ul><ul><li>} else { </li></ul><ul><li>sql = new StringBuffer(); </li></ul><ul><li>sql.append(&quot; delete from grupo where codPAI = &quot; + codigoPAI); </li></ul><ul><li>db.deleteQuery(sql.toString(), con); </li></ul><ul><li>mensagens = &quot; Falha na inclusão de PAI x FILHO&quot;; </li></ul><ul><li>} </li></ul><ul><li>} else { </li></ul><ul><li>mensagens = &quot; Falha na inclusão do PAI&quot;; </li></ul><ul><li>} </li></ul>
    9. 9. Como entender! <ul><li>} else { </li></ul><ul><li>montanteValores =montanteValores; </li></ul><ul><li>} </li></ul>ResultSet rsUsuarios = db.selectQuery(sQuery, con); request.setAttribute(&quot;ListaUsuarios&quot;, rsUsuarios); JSP public class UsuarioGrupo implements Serializable { /* CODUSUARIO, PK */ protected long codusuario; /* CODGRUPO, PK */ protected int codgrupo; /* CODUSUARIO, PK */ public long getCodusuario() { return codusuario; } /* CODUSUARIO, PK */ public void setCodusuario(long codusuario) { this.codusuario = codusuario; } /* CODGRUPO, PK */ public int getCodgrupo() { return codgrupo; } }
    10. 10. Que tecnologia usar? <ul><li>Cada problema pode ser resolvido com mais ou menos esforço dependendo da linguagem e/ou framework utilizado. </li></ul><ul><li>E sempre tem uma linguagem e/ou framework que vai resolver com menos esforço que as demais. Ela será a melhor linguagem e/ou framework para o problema em questão. </li></ul><ul><li>USE A FERRAMENTA NA SUA PLENITUDE. </li></ul>
    11. 11. O caminho do sucesso para o Blue Code é o BOM SENSO. BOM SENSO != P.O.G. EQUIPE
    12. 12. Você acha que acabou? <ul><li>COMO GERENCIAR UM DEPARTAMENTO DE TECNOLOGIA </li></ul><ul><li>THE IT CROWD </li></ul><ul><li>METODOLOGIA </li></ul>
    13. 13. Agradecimentos a todos os programados, coordenadores e gerentes de Projetos que contribuiram para o RED CODE.
    1. A particular slide catching your eye?

      Clipping is a handy way to collect important slides you want to go back to later.

    ×