Como garantir que o inferno seja uma
amostra grátis do seu trabalho!
 Josenaldo de Oliveira Matos Filho
 Transformador de cafeína em código há mais
de 10 anos
 Entusiasta por tecnologias o...
 Paradigma de desenvolvimento de
software no qual se utiliza um
improviso temporário permanente
na resolução de um proble...
 A primeira POG da história foi criada pelo
Paga Gregório XIII
◦ Nosso calendário: 365 dias
◦ Translação da Terra: 365,25...
 Pessoas não qualificadas se intrometendo no
desenvolvimento
 Equipe apática
 Profissionais superestimados
 Prazos abs...
 Enjambração
◦ Pega o sistema de Helpdesk e trasforma num sistema
financeiro.
 Reflexão
◦ Copia o código da Apache. Ning...
 Imperativo do Funcionamento
◦ O importante é funcionar. O resto é balela.
 Iniciativa temerária
◦ Prefiro fazer sempre ...
 Criptocodagem
◦ 1337 h4x0r5 dud3 lol
 Capacidade de Abstração
◦ Esqueça o tratamento de erros. Depois tratamos disso.
...
Essa sessão está destinada aos iluminados.
Se você está vendo isso, sinta-se
privilegiado.
 A versão atual parou?
◦ Pegue o zip com a versão antiga
◦ Começa tudo de novo
◦ Substituição de arquivos é suficiente
 ...
 Precisa guardar versões?
◦ Use arquivos ZIP!
◦ NomeDoProjeto_data.zip
◦ Pasta de zips compartilhada
◦ Funciona e não dá ...
 Quer saber se o código funciona?
◦ Se compilou, funciona!
◦ Se você testa, é porque não confia no seu código.
◦ Se não c...
 Querem alterar seu código?
◦ Não permita!
◦ Ninguém pode entender seu brilhantismo nato
◦ Só você mexe no seu código
◦ S...
 Precisa resolver algo e não sabe como?
◦ Abra sua mente espiritual (seu navegador)
◦ Acesse o nirvana do conhecimento (G...
 Sabe aquele código que você sabe que
funciona, mas que, pra você, parece magia
negra?
É só colocar um IF!!
Gerente sem-n...
 Copie o código o máximo que puder
◦ Princípio da Reflexão
 A baixa adaptabilidade e difícil manutenção
tornam o program...
 Um dos padrões mais usados na indústria
 Não coloque dados em arquivos e bancos de
dados
 Dados devem ficar diretament...
 Por algum motivo nefasto, uma variável não
recebe o valor que deveria ter. O que fazer?
◦ Vai deixar esse pedaço de suca...
 O que os olhos não veem, o coração não
sente
 IGNORE qualquer Warning do compilador e da
IDE
◦ Isso é frescura deles
 ...
 Pra que quebrar a cabeça para usar nomes
óbvios? Isso é uma falha de segurança!
 Ignore qualquer convenção existente!
...
 O programa está dando problema?
 Comentar resolve!
◦ Muito usado para resolver problema no código dos
outros.
 Comente...
 Implementa o princípio do NEMRELA.
 Quando um código der problema, aplique o
Commented Code Implementation
 A partir d...
 Se não lembra de como usar um recurso da
linguagem, faça você mesmo!
Hmmm.. que estranho... Não era para acontecer isso....
 Capture e trate TODO tipo de problema que
ocorrer.
 OutOfMemoryError?
◦ Mande a VM liberar memória.
 IOError?
◦ Mande ...
 Use exceções para o controle de fluxo!
Quando eu cheguei já tava assim!!!
Gambizeiro querendo tirar o seu da reta!
publi...
 Consiste em garantir que uma operação
complexa sempre execute com sucesso!
...ah!!! Isto é um erro comum do Windows!
POG...
 O sistema não deve apresentar erros
 Afinal de contas, o usuário não entende
mesmo!
Reza e cruza os dedos que vai funci...
 Padronização de todas as mensagens de erro para uma única mensagem
amigável
 Dê preferência a uma mensagem que coloque ...
 Se a ação é rápida demais para o usuário
perceber, coloque um atraso!
Até ontém quando eu mexi estava tudo funcionando!
...
 Precisa usar vários parâmetros para um
método?
 Use um MAP!
 Muito usado em PHP e em Java
 Facilita a passagem de um ...
 Criar várias funções torna o programa mais
lento.
 Crie uma única função guerreira que receberá
todos os parâmetros e f...
 A fusão entre um Megazord e um Gato preto
em Quarto Escuro cria um Thunder Megazord
O Senhor já tentou reiniciar seu com...
 Elimine o M do padrão MVC e coloque tudo
no Controle, criando assim o VCC –
“View/Controller Confusion”
 Os POGramadore...
 Frameworks e camadas são coisas para fracos
 Faça tudo diretamente na tela!
 Muito utilizado em .Net, Delphi e VB 6
 ...
 Também conhecido como In DB we trust.
 Padrão gambi arquitetural em que TUDO é no
banco de dados.
◦ Dados
◦ Arquivos
◦ ...
 String Sushi Man
 Nameless Coding
 Unique never Exists
 Chameleon Behaviour
 Hide-and-Seek Pattern
 IoC Methodology...
 POG é uma arte dominada por poucos
 Quanto mais experiente, menos POGramador
 Quanto mais conhecimento, menor a
capaci...
Programaoorientadaagambiarra 140116111355-phpapp01
Programaoorientadaagambiarra 140116111355-phpapp01
Próximos SlideShares
Carregando em…5
×

Programaoorientadaagambiarra 140116111355-phpapp01

7.252 visualizações

Publicada em

Publicada em: Tecnologia
3 comentários
30 gostaram
Estatísticas
Notas
Sem downloads
Visualizações
Visualizações totais
7.252
No SlideShare
0
A partir de incorporações
0
Número de incorporações
2
Ações
Compartilhamentos
0
Downloads
84
Comentários
3
Gostaram
30
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Programaoorientadaagambiarra 140116111355-phpapp01

  1. 1. Como garantir que o inferno seja uma amostra grátis do seu trabalho!
  2. 2.  Josenaldo de Oliveira Matos Filho  Transformador de cafeína em código há mais de 10 anos  Entusiasta por tecnologias opensource  JugLeader do UAIJUG Esta é a solução ótima, não temos tempo para isso. Faça a solução boa! O ótimo é inimigo do bom. Líder de Projeto sobre POG
  3. 3.  Paradigma de desenvolvimento de software no qual se utiliza um improviso temporário permanente na resolução de um problema.  Tende a gerar mais problemas do que resolve ◦ Emprego garantido! A culpa é do Hardware! Desenvolvedor de software sobre POG
  4. 4.  A primeira POG da história foi criada pelo Paga Gregório XIII ◦ Nosso calendário: 365 dias ◦ Translação da Terra: 365,25  6 Horas a mais por ano!  Corrige o sistema? ◦ CLARO QUE NÃO! Bota um dia a mais a cada 4 anos e cria o Ano Bissexto!  29 de Fevereiro – Dia Internacional da POG O Papa é POG Engenheiros do Hawaii sobre POG
  5. 5.  Pessoas não qualificadas se intrometendo no desenvolvimento  Equipe apática  Profissionais superestimados  Prazos absurdamente suicidas  Aproximação do fim do expediente  Véspera de feriado ou fim de semana  Sistemas originalmente mal projetados  Aparecimento caótico de requisitos  Processo Go Horse!  Ausência de café java.lang.NullPointerException Java sobre POG
  6. 6.  Enjambração ◦ Pega o sistema de Helpdesk e trasforma num sistema financeiro.  Reflexão ◦ Copia o código da Apache. Ninguém vai reclamar.  Redireção ◦ A culpa não é minha.  Insistimento ◦ Compila de novo que dessa vez vai dar certo.  Onisciência finita ◦ Nada de curso. Usa o que você sabe. É só reiniciar que funciona! Programador POG logo de manhã com copo de café na mão
  7. 7.  Imperativo do Funcionamento ◦ O importante é funcionar. O resto é balela.  Iniciativa temerária ◦ Prefiro fazer sempre do meu jeito!  Imprevidência incerta ◦ Lady Murphy? Essa mulher não existe!  Foco postergativo ◦ Deixe o amanhã para amanhã!  Documentação espartana ◦ Comentários são para amadores!  Economia Linear ◦ Menos linhas é sempre melhor! É fácil, não vejo dificuldade em fazer isso!! Gerente sem-noção definindo prazo junto com o programador
  8. 8.  Criptocodagem ◦ 1337 h4x0r5 dud3 lol  Capacidade de Abstração ◦ Esqueça o tratamento de erros. Depois tratamos disso.  Criatividade diversificativa ◦ Se alguém já usou uma solução, faça diferente.  Simplicidade austera ◦ Se tá funcionando sem isso, pra que colocar?  Determinação hiperativa ◦ Vai fazendo aí...  Conclusão Hipotética Universal Técnica Explicativa ◦ Se nada mais funcionar, use o CHUTE até conseguir. Vai programando aí que eu vou ver o que o cliente quer Gerente sem-noção sobre POG
  9. 9. Essa sessão está destinada aos iluminados. Se você está vendo isso, sinta-se privilegiado.
  10. 10.  A versão atual parou? ◦ Pegue o zip com a versão antiga ◦ Começa tudo de novo ◦ Substituição de arquivos é suficiente  NUNCA USE ◦ Depuração ◦ Versionamento ◦ Testes automatizados Limpa o histórico e o cache e dá um [Control + F5] que funciona Resposta padrão do Webmaster sobre POG
  11. 11.  Precisa guardar versões? ◦ Use arquivos ZIP! ◦ NomeDoProjeto_data.zip ◦ Pasta de zips compartilhada ◦ Funciona e não dá dor de cabeça  NUNCA USE ◦ Ferramentas de versionamento ◦ SVN é coisa do diabo ◦ Git nem o diabo quer Na minha máquina funcionou Programador sobre POG
  12. 12.  Quer saber se o código funciona? ◦ Se compilou, funciona! ◦ Se você testa, é porque não confia no seu código. ◦ Se não confia, é um fraco. ◦ Do compilador direto pra produção  NUNCA USE ◦ Processo de teste ◦ Testes automatizados ◦ TDD (Tudo Do Diabo) O importante é fazer funcionar. Programador 100% pragmático sobre POG
  13. 13.  Querem alterar seu código? ◦ Não permita! ◦ Ninguém pode entender seu brilhantismo nato ◦ Só você mexe no seu código ◦ Só você entente seu código ◦ O que importa é funcionar  NUNCA USE ◦ Programação em par ◦ Revisão de código ◦ Código compartilhado Ontem tava funcionando! Programador dando uma descupa sobre POG
  14. 14.  Precisa resolver algo e não sabe como? ◦ Abra sua mente espiritual (seu navegador) ◦ Acesse o nirvana do conhecimento (Google) ◦ Deixe-se vagar pelas espirais da consciência coletiva (fóruns) ◦ Seja inundado pela inspiração divina (copia o que achar) ◦ Não procure entender a solução  NUNCA FAÇA ◦ Estudar ◦ Participar de comunidades ◦ Aprender novas tecnologias Não me interessa se é restrição da ferramenta, dá um jeito e coloca isso funcionando até amanhã! Gerente de Projeto mostrando como se lidera a equipe a criar uma POG
  15. 15.  Sabe aquele código que você sabe que funciona, mas que, pra você, parece magia negra? É só colocar um IF!! Gerente sem-noção sugerindo a solução técnica "/ .*?< ".replaceAll("","").trim();
  16. 16.  Copie o código o máximo que puder ◦ Princípio da Reflexão  A baixa adaptabilidade e difícil manutenção tornam o programa mais estável  Se precisar alterar, copie e cole de novo!  Contra o C e Contra o V Tive que arrumar direto no banco - daí funcionou! Se o problema "voltar", nos ligue novamente. POGger sobre O Poder da Fé.
  17. 17.  Um dos padrões mais usados na indústria  Não coloque dados em arquivos e bancos de dados  Dados devem ficar diretamente no código  É muito mais performático ◦ ATENÇÃO: Sempre que essa palavra for usada, prepare-se que lá vem POG É só gerar tudo de novo, provavelmente deu erro na especificação. Programador com sua desculpa POG para o problema
  18. 18.  Por algum motivo nefasto, uma variável não recebe o valor que deveria ter. O que fazer? ◦ Vai deixar esse pedaço de sucata pré-positrônica comandar sua vida? O Código tá certo, deve ser problema na massa de dados. Programador Experiente, com várias certificações em POG /* Variável é inicializada */ String valor = "123"; /* ... lógica do programa ... */ /* Dentro de um método que utiliza a variável 'valor' */ if (valor != "123") { valor = "123"; processaValor(valor); }
  19. 19.  O que os olhos não veem, o coração não sente  IGNORE qualquer Warning do compilador e da IDE ◦ Isso é frescura deles  De preferência, use o @SuppressWarnings("all") Terminei, só falta testar. Programador POG as 18h00 com a mochila nas costas falando pro chefe
  20. 20.  Pra que quebrar a cabeça para usar nomes óbvios? Isso é uma falha de segurança!  Ignore qualquer convenção existente!  Use nomes que não revelem o propósito do identificador  Nomes perfeitamente aceitáveis como identificadores ◦ teste1, temp2, a, b, x ◦ jaTrocouDeAba, botaoClicado, foiAtualizado, passouPorAqui ◦ numeroMagico, naoAchou, temErro ◦ anterior5, atual5, anteriorDoAnterior5 É só reiniciar que funciona! Programador POG logo de manhã com copo de café na mão
  21. 21.  O programa está dando problema?  Comentar resolve! ◦ Muito usado para resolver problema no código dos outros.  Comente cada linha suspeita, compile e rode até funcionar. ◦ Insistimento Bom, deixa estourar a bomba lá, aí quando vierem me pentelhar aqui eu vejo o que faço... Programador para outro programador só esperando o problema voltar
  22. 22.  Implementa o princípio do NEMRELA.  Quando um código der problema, aplique o Commented Code Implementation  A partir desse momento, o comentário vira parte do código  Se alguém mexer, para tudo ◦ Para o banco, a aplicação, o servidor, o Word, o tiozinho da pamonha... Eu fiz somente o que foi especificado! Analista, especialista no processo Go Horse
  23. 23.  Se não lembra de como usar um recurso da linguagem, faça você mesmo! Hmmm.. que estranho... Não era para acontecer isso... Programador fazendo uma demonstração do software if (number.equals("1")) { return 1; } else if (number.equals("2")) { return 2; } else if (number.equals("3")) { return 3; } else if (number.equals("4")) { return 4; } else if (number.equals(“5")) { return 5; } else if (...) { ... }else if (number.equals(“10000000")) { return 10000000; }
  24. 24.  Capture e trate TODO tipo de problema que ocorrer.  OutOfMemoryError? ◦ Mande a VM liberar memória.  IOError? ◦ Mande a VM ter paciência.  VirtualMachineError ◦ Mande a VM largar de frescura e voltar a trabalhar! Que lixo que fizeram!!! Olha isso!! Programador POG falando sobre outro Programador POG
  25. 25.  Use exceções para o controle de fluxo! Quando eu cheguei já tava assim!!! Gambizeiro querendo tirar o seu da reta! public static void somar(int a, int b) { System.out.println(a + b); throw new RuntimeException("Operação realizada com sucesso!"); } if (!request.getSession(true).getAttribute("TipoUsuario").toString().equals("1")) { throw new Exception( "<span style="color:#ff0000;"><b><u>Acesso negado</u>:</b>" + " somente usuários com perfil de " + "administrador podem ter acesso a esta página.</span>"); }
  26. 26.  Consiste em garantir que uma operação complexa sempre execute com sucesso! ...ah!!! Isto é um erro comum do Windows! POGramador tentando ganhar tempo para corrigir seu código try { if (alterar(valor1, valor2)) { return new Mensagem("Operação concluída com sucesso!"); } else { return new Mensagem("Operação concluída com sucesso!"); } } catch (Throwable e) { return new Mensagem("Operação concluída com sucesso!"); }
  27. 27.  O sistema não deve apresentar erros  Afinal de contas, o usuário não entende mesmo! Reza e cruza os dedos que vai funcionar! POG Pai de Santo falando para um POGramador menos experimente... try { fazAlgumaCoisa(); } catch (Throwable t) {} try { fazOutraCoisa(); } catch (Throwable t) {} try { fazMaisOutraCoisa(); } catch (Throwable t) {}
  28. 28.  Padronização de todas as mensagens de erro para uma única mensagem amigável  Dê preferência a uma mensagem que coloque a culpa no usuário Quando eu testei, funcionou! POGramador demonstrando as gambiarras para seu Gerente Sem Noçao public static void main(String[] args) { while (true) { try { // ... } catch (Throwable ex) { System.out.println("Caro usuário, tente novamente" "observando as regras de uso do sistema"); // após a mensagem, o while(true) garante a //robustez do sistema que não aborta nunca! } } }
  29. 29.  Se a ação é rápida demais para o usuário perceber, coloque um atraso! Até ontém quando eu mexi estava tudo funcionando! Resposta do POGramador ao ser questionado sobre a pane geral no sistema public class MedidorDePOGresso implements Runnable { public void run() { while (true) { // Realiza um processamento rápido aqui... try { // ... atrasa propositalmente aqui Thread.sleep(1000); } catch (InterruptedException exc) { } progress.setValue(blablabla.getPorcentagem()); } } }
  30. 30.  Precisa usar vários parâmetros para um método?  Use um MAP!  Muito usado em PHP e em Java  Facilita a passagem de um número absurdo de parâmetros Tem bug, mas não é no código!! Estagiário justificando os erros no programa para o gerente
  31. 31.  Criar várias funções torna o programa mais lento.  Crie uma única função guerreira que receberá todos os parâmetros e fará todas as funcionalidades possíveis  Nomeie as variáveis com Nonsense Flag Claro que dá pra alterar essa configuração. É só mexer no código! POGramador propondo uma POG ao gerente
  32. 32.  A fusão entre um Megazord e um Gato preto em Quarto Escuro cria um Thunder Megazord O Senhor já tentou reiniciar seu computador? Caso sim vou pedir que desligue seu modem e religue novamente... Atendente da Brasil Telecom ou Velox utilizando técnicas de TelePOG /** * Processa * * @param parametros * @return * @throws Throwable */ public static Object[] processar(Map parametros) throws Throwable { // Aí é aquilo, mermão... // ... // ... return processado; }
  33. 33.  Elimine o M do padrão MVC e coloque tudo no Controle, criando assim o VCC – “View/Controller Confusion”  Os POGramadores mais avançados são capazes de ignorar o V e ficar apenas com o CCC –Chaotic Controller Confusion Não se preocupe, nenhum sistema "entra redondo". O importante agora é entrar em produção, depois consertamos os erros! Gerente sem noção tentando acalmar desenvolvedor sobre projeto MOG com prazo estourado.
  34. 34.  Frameworks e camadas são coisas para fracos  Faça tudo diretamente na tela!  Muito utilizado em .Net, Delphi e VB 6  Também é bastante utilizado em PHP  Uma variedade do CCC, mas com tudo feito na Tela Deu erro...comenta! Alunos no laboratório da facul.
  35. 35.  Também conhecido como In DB we trust.  Padrão gambi arquitetural em que TUDO é no banco de dados. ◦ Dados ◦ Arquivos ◦ Imagens ◦ Lógica de negócio ◦ Tratamento de erros ◦ Geração de HTML É só um botão, o que pode dar errado? Gerente sem-noção sobre nova funcionalidade
  36. 36.  String Sushi Man  Nameless Coding  Unique never Exists  Chameleon Behaviour  Hide-and-Seek Pattern  IoC Methodology (Indetermination of Calls ou Indeterminação das Chamadas) Internet Explorer 7 ? Atualiza pro 8 que funciona POGramador com esperança de que o sistema ainda irá funcionar
  37. 37.  POG é uma arte dominada por poucos  Quanto mais experiente, menos POGramador  Quanto mais conhecimento, menor a capacidade de POGagem  Quanto mais disciplinado, menor a atração sobre POGs Vou realizar os testes em produção. POGramador corajoso arrancando suspiros das mocinhas inocentes

×