Você está na página 1de 39

Como garantir que o inferno seja uma amostra grtis do seu trabalho!

Josenaldo de Oliveira Matos Filho Transformador de cafena em cdigo h mais de 10 anos Entusiasta por tecnologias opensource JugLeader do UAIJUG

Esta a soluo tima, no temos tempo para isso. Faa a soluo boa! O timo inimigo do bom. Lder de Projeto sobre POG

Paradigma

de desenvolvimento de software no qual se utiliza um improviso temporrio permanente na resoluo de um problema. Tende a gerar mais problemas do que resolve
Emprego garantido!
A culpa do Hardware! Desenvolvedor de software sobre POG

A primeira POG da histria foi criada pelo Paga Gregrio XIII


Nosso calendrio: 365 dias Translao da Terra: 365,25
6 Horas a mais por ano!

Corrige o sistema?
CLARO QUE NO! 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

Pessoas no qualificadas se intrometendo no desenvolvimento Equipe aptica Profissionais superestimados Prazos absurdamente suicidas Aproximao do fim do expediente Vspera de feriado ou fim de semana Sistemas originalmente mal projetados Aparecimento catico de requisitos Processo Go Horse! Ausncia de caf
java.lang.NullPointerException Java sobre POG

Enjambrao Reflexo

Pega o sistema de Helpdesk e trasforma num sistema financeiro.


Copia o cdigo da Apache. Ningum vai reclamar. A culpa no minha. Compila de novo que dessa vez vai dar certo. Nada de curso. Usa o que voc sabe.
s reiniciar que funciona! Programador POG logo de manh com copo de caf na mo

Redireo

Insistimento

Oniscincia finita

Imperativo do Funcionamento Iniciativa temerria

O importante funcionar. O resto balela.


Prefiro fazer sempre do meu jeito!

Imprevidncia incerta Foco postergativo

Lady Murphy? Essa mulher no existe!


Deixe o amanh para amanh!

Documentao espartana Economia Linear

Comentrios so para amadores!


Menos linhas sempre melhor!
fcil, no vejo dificuldade em fazer isso!! Gerente sem-noo definindo prazo junto com o programador

Criptocodagem

Capacidade de Abstrao

1337 h4x0r5 dud3 lol

Criatividade diversificativa Simplicidade austera


Vai fazendo a...

Esquea o tratamento de erros. Depois tratamos disso. Se algum j usou uma soluo, faa diferente. Se t funcionando sem isso, pra que colocar?

Determinao hiperativa

Concluso Hipottica Universal Tcnica Explicativa


Se nada mais funcionar, use o CHUTE at conseguir.

Vai programando a que eu vou ver o que o cliente quer Gerente sem-noo sobre POG

Essa sesso est destinada aos iluminados. Se voc est vendo isso, sinta-se privilegiado.

A verso atual parou?


Pegue o zip com a verso antiga Comea tudo de novo Substituio de arquivos suficiente

NUNCA USE
Depurao Versionamento Testes automatizados

Limpa o histrico e o cache e d um [Control + F5] que funciona Resposta padro do Webmaster sobre POG

Precisa guardar verses?


Use arquivos ZIP! NomeDoProjeto_data.zip Pasta de zips compartilhada Funciona e no d dor de cabea

NUNCA USE
Ferramentas de versionamento SVN coisa do diabo Git nem o diabo quer
Na minha mquina funcionou Programador sobre POG

Quer saber se o cdigo funciona?


Se compilou, funciona! Se voc testa, porque no confia no seu cdigo. Se no confia, um fraco. Do compilador direto pra produo

NUNCA USE
Processo de teste Testes automatizados TDD (Tudo Do Diabo)
O importante fazer funcionar. Programador 100% pragmtico sobre POG

Querem alterar seu cdigo?


NUNCA USE

No permita! Ningum pode entender seu brilhantismo nato S voc mexe no seu cdigo S voc entente seu cdigo O que importa funcionar

Programao em par Reviso de cdigo Cdigo compartilhado


Ontem tava funcionando! Programador dando uma descupa sobre POG

Precisa resolver algo e no sabe como?

NUNCA FAA

Abra sua mente espiritual (seu navegador) Acesse o nirvana do conhecimento (Google) Deixe-se vagar pelas espirais da conscincia coletiva (fruns) Seja inundado pela inspirao divina (copia o que achar) No procure entender a soluo
Estudar Participar de comunidades Aprender novas tecnologias
No me interessa se restrio da ferramenta, d um jeito e coloca isso funcionando at amanh! Gerente de Projeto mostrando como se lidera a equipe a criar uma POG

Sabe aquele cdigo que voc sabe que funciona, mas que, pra voc, parece magia negra?

"/ .*?<

".replaceAll("","").trim();

s colocar um IF!! Gerente sem-noo sugerindo a soluo tcnica

Copie o cdigo o mximo que puder


Princpio da Reflexo

A baixa adaptabilidade e difcil manuteno tornam o programa mais estvel 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.

Um dos padres mais usados na indstria No coloque dados em arquivos e bancos de dados Dados devem ficar diretamente no cdigo muito mais performtico
ATENO: Sempre que essa palavra for usada, prepare-se que l vem POG

s gerar tudo de novo, provavelmente deu erro na especificao. Programador com sua desculpa POG para o problema

Por algum motivo nefasto, uma varivel no recebe o valor que deveria ter. O que fazer?
Vai deixar esse pedao de sucata pr-positrnica comandar sua vida?
/* Varivel inicializada */ String valor = "123"; /* ... lgica do programa ... */ /* Dentro de um mtodo que utiliza a varivel 'valor' */ if (valor != "123") { valor = "123"; processaValor(valor); }
O Cdigo t certo, deve ser problema na massa de dados. Programador Experiente, com vrias certificaes em POG

O que os olhos no veem, o corao no sente IGNORE qualquer Warning do compilador e da IDE
Isso frescura deles

De preferncia, use o @SuppressWarnings("all")

Terminei, s falta testar. Programador POG as 18h00 com a mochila nas costas falando pro chefe

Pra que quebrar a cabea para usar nomes bvios? Isso uma falha de segurana! Ignore qualquer conveno existente! Use nomes que no revelem o propsito do identificador Nomes perfeitamente aceitveis 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 mo

O programa est dando problema? Comentar resolve!


Muito usado para resolver problema no cdigo 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 fao... Programador para outro programador s esperando o problema voltar

Implementa o princpio do NEMRELA. Quando um cdigo der problema, aplique o Commented Code Implementation A partir desse momento, o comentrio vira parte do cdigo Se algum mexer, para tudo
Para o banco, a aplicao, o servidor, o Word, o tiozinho da pamonha...

Eu fiz somente o que foi especificado! Analista, especialista no processo Go Horse

Se no lembra de como usar um recurso da linguagem, faa voc mesmo!


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; } Hmmm.. que estranho... No era para acontecer isso... Programador fazendo uma demonstrao do software

Capture e trate TODO tipo de problema que ocorrer. OutOfMemoryError?


Mande a VM liberar memria.

IOError?
Mande a VM ter pacincia.

VirtualMachineError
Mande a VM largar de frescura e voltar a trabalhar!

Que lixo que fizeram!!! Olha isso!! Programador POG falando sobre outro Programador POG

Use excees para o controle de fluxo!

public static void somar(int a, int b) { System.out.println(a + b); throw new RuntimeException("Operao 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 usurios com perfil de " + "administrador podem ter acesso a esta pgina.</span>"); }

Quando eu cheguei j tava assim!!! Gambizeiro querendo tirar o seu da reta!

Consiste em garantir que uma operao complexa sempre execute com sucesso!

try { if (alterar(valor1, valor2)) { return new Mensagem("Operao concluda com sucesso!"); } else { return new Mensagem("Operao concluda com sucesso!"); } } catch (Throwable e) { return new Mensagem("Operao concluda com sucesso!"); }

...ah!!! Isto um erro comum do Windows! POGramador tentando ganhar tempo para corrigir seu cdigo

O sistema no deve apresentar erros Afinal de contas, o usurio no entende mesmo!


try { fazAlgumaCoisa(); } catch (Throwable t) {} try { fazOutraCoisa(); } catch (Throwable t) {} try { fazMaisOutraCoisa(); } catch (Throwable t) {}
Reza e cruza os dedos que vai funcionar! POG Pai de Santo falando para um POGramador menos experimente...

Padronizao de todas as mensagens de erro para uma nica mensagem amigvel D preferncia a uma mensagem que coloque a culpa no usurio

public static void main(String[] args) { while (true) { try { // ... } catch (Throwable ex) { System.out.println("Caro usurio, tente novamente" "observando as regras de uso do sistema"); // aps a mensagem, o while(true) garante a //robustez do sistema que no aborta nunca! } } }

Quando eu testei, funcionou! POGramador demonstrando as gambiarras para seu Gerente Sem Noao

Se a ao rpida demais para o usurio perceber, coloque um atraso!


public class MedidorDePOGresso implements Runnable { public void run() { while (true) { // Realiza um processamento rpido aqui... try { // ... atrasa propositalmente aqui Thread.sleep(1000); } catch (InterruptedException exc) { } progress.setValue(blablabla.getPorcentagem()); } } }
At ontm quando eu mexi estava tudo funcionando! Resposta do POGramador ao ser questionado sobre a pane geral no sistema

Precisa usar vrios parmetros para um mtodo? Use um MAP! Muito usado em PHP e em Java Facilita a passagem de um nmero absurdo de parmetros

Tem bug, mas no no cdigo!! Estagirio justificando os erros no programa para o gerente

Criar vrias funes torna o programa mais lento. Crie uma nica funo guerreira que receber todos os parmetros e far todas as funcionalidades possveis Nomeie as variveis com Nonsense Flag

Claro que d pra alterar essa configurao. s mexer no cdigo! POGramador propondo uma POG ao gerente

A fuso entre um Megazord e um Gato preto em Quarto Escuro cria um Thunder Megazord
/** * Processa * * @param parametros * @return * @throws Throwable */ public static Object[] processar(Map parametros) throws Throwable { // A aquilo, mermo... // ... // ... return processado; }
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 tcnicas de TelePOG

Elimine o M do padro MVC e coloque tudo no Controle, criando assim o VCC View/Controller Confusion Os POGramadores mais avanados so capazes de ignorar o V e ficar apenas com o CCC Chaotic Controller Confusion

No se preocupe, nenhum sistema "entra redondo". O importante agora entrar em produo, depois consertamos os erros! Gerente sem noo tentando acalmar desenvolvedor sobre projeto MOG com prazo estourado.

Frameworks e camadas so coisas para fracos Faa tudo diretamente na tela! Muito utilizado em .Net, Delphi e VB 6 Tambm bastante utilizado em PHP Uma variedade do CCC, mas com tudo feito na Tela

Deu erro...comenta! Alunos no laboratrio da facul.

Tambm conhecido como In DB we trust. Padro gambi arquitetural em que TUDO no banco de dados.
Dados Arquivos Imagens Lgica de negcio Tratamento de erros Gerao de HTML
s um boto, o que pode dar errado? Gerente sem-noo sobre nova funcionalidade

String Sushi Man Nameless Coding Unique never Exists Chameleon Behaviour Hide-and-Seek Pattern IoC Methodology (Indetermination of Calls ou Indeterminao das Chamadas)

Internet Explorer 7 ? Atualiza pro 8 que funciona POGramador com esperana de que o sistema ainda ir funcionar

POG uma arte dominada por poucos Quanto mais experiente, menos POGramador Quanto mais conhecimento, menor a capacidade de POGagem Quanto mais disciplinado, menor a atrao sobre POGs

Vou realizar os testes em produo. POGramador corajoso arrancando suspiros das mocinhas inocentes