SlideShare uma empresa Scribd logo
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 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
 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


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









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


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


Imperativo do Funcionamento



Iniciativa temerária



Imprevidência incerta



Foco postergativo



Documentação espartana



Economia Linear

◦ O importante é funcionar. O resto é balela.
◦ Prefiro fazer sempre do meu jeito!

◦ Lady Murphy? Essa mulher não existe!
◦ Deixe o amanhã para amanhã!

◦ Comentários são para amadores!
◦ Menos linhas é sempre melhor!
É fácil, não vejo dificuldade em fazer isso!!
Gerente sem-noção definindo prazo junto com o programador


Criptocodagem



Capacidade de Abstração



Criatividade diversificativa



Simplicidade austera



Determinação hiperativa



Conclusão Hipotética Universal Técnica Explicativa

◦ 1337 h4x0r5 dud3 lol

◦ Esqueça o tratamento de erros. Depois tratamos disso.
◦ Se alguém já usou uma solução, faça diferente.
◦ Se tá funcionando sem isso, pra que colocar?
◦ Vai fazendo aí...

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



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


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


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


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


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


Sabe aquele código que você sabe que
funciona, mas que, pra você, parece magia
negra?

"/ .*?<

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

É só colocar um IF!!
Gerente sem-noção sugerindo a solução técnica


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







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


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?
/* 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);
}
O Código tá certo, deve ser problema na massa de dados.
Programador Experiente, com várias certificações em POG




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



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




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





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


Se não lembra de como usar um recurso da
linguagem, faça 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... Não era para acontecer isso...
Programador fazendo uma demonstração do software




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


Use exceções para o controle de fluxo!

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

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

Consiste em garantir que uma operação
complexa sempre execute com sucesso!

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

...ah!!! Isto é um erro comum do Windows!
POGramador tentando ganhar tempo para corrigir seu código




O sistema não deve apresentar erros
Afinal de contas, o usuário não 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...




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

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

Quando eu testei, funcionou!
POGramador demonstrando as gambiarras para seu Gerente Sem Noçao


Se a ação é rápida demais para o usuário
perceber, coloque um atraso!
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());
}
}
}
Até ontém quando eu mexi estava tudo funcionando!
Resposta do POGramador ao ser questionado sobre a pane geral no sistema







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






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


A fusão 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, mermão...
// ...
// ...
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 técnicas de TelePOG




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






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



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








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







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
Programação Orientada a Gambiarra

Mais conteúdo relacionado

Mais procurados

Algoritmos e Programação: Funcionamento do computador. Conceito e definição d...
Algoritmos e Programação: Funcionamento do computador. Conceito e definição d...Algoritmos e Programação: Funcionamento do computador. Conceito e definição d...
Algoritmos e Programação: Funcionamento do computador. Conceito e definição d...
Alex Camargo
 
Pragmatic Marketing recap by Brian Kelly
Pragmatic Marketing recap by Brian KellyPragmatic Marketing recap by Brian Kelly
Pragmatic Marketing recap by Brian Kelly
Brian Kelly
 
Running GA4 without gtag.js using ssGTM and elbwalker
Running GA4 without gtag.js using ssGTM and elbwalkerRunning GA4 without gtag.js using ssGTM and elbwalker
Running GA4 without gtag.js using ssGTM and elbwalker
📊 Markus Baersch
 
Lógica de Programação
Lógica de ProgramaçãoLógica de Programação
Lógica de Programação
Claudio Stein Junior
 
Pensamento A3
Pensamento A3Pensamento A3
Pensamento A3
André Faria Gomes
 
HTTP/3 시대의 웹 성능 최적화 기술 이해하기
HTTP/3 시대의 웹 성능 최적화 기술 이해하기HTTP/3 시대의 웹 성능 최적화 기술 이해하기
HTTP/3 시대의 웹 성능 최적화 기술 이해하기
SangJin Kang
 
Tutorial pascal arquivos
Tutorial pascal arquivosTutorial pascal arquivos
Tutorial pascal arquivos
Elaine Cecília Gatto
 
Festa dos 600
Festa dos 600Festa dos 600
Festa dos 600
Marco Coghi
 
Desenvolvimento ágil com scrum
Desenvolvimento ágil com scrumDesenvolvimento ágil com scrum
Desenvolvimento ágil com scrum
Carlos Lucas Brandão
 
Aula03 - JavaScript
Aula03 - JavaScriptAula03 - JavaScript
Aula03 - JavaScript
Jorge Ávila Miranda
 
Linguagem C 05 Vetores E Matrizes
Linguagem C 05 Vetores E MatrizesLinguagem C 05 Vetores E Matrizes
Linguagem C 05 Vetores E Matrizes
Regis Magalhães
 
Aula 5 - Cookies e Sessões em PHP
Aula 5 - Cookies e Sessões em PHPAula 5 - Cookies e Sessões em PHP
Aula 5 - Cookies e Sessões em PHP
Lucas Augusto Fagundes
 
Dinamica fabrica avioes 2.0
Dinamica fabrica avioes 2.0Dinamica fabrica avioes 2.0
Dinamica fabrica avioes 2.0
Thiago Torres MBA, ACP, PMP, CSM
 
Fases da Reunião
Fases da ReuniãoFases da Reunião
Fases da Reunião
Fdtensino
 
Linguagem C 10 Arquivos
Linguagem C 10 ArquivosLinguagem C 10 Arquivos
Linguagem C 10 Arquivos
Regis Magalhães
 
Introdução básica ao JavaScript
Introdução básica ao JavaScriptIntrodução básica ao JavaScript
Introdução básica ao JavaScript
Carlos Eduardo Kadu
 
Kick Off
Kick OffKick Off
Kick Off
slidegpti
 
Agile Brazil | OKR Pocket Game
Agile Brazil | OKR Pocket GameAgile Brazil | OKR Pocket Game
Agile Brazil | OKR Pocket Game
Daniela Gomes dos Santos
 
Google apps script - Parte 2
Google apps script - Parte 2Google apps script - Parte 2
Google apps script - Parte 2
Sérgio Souza Costa
 
Dor e DoD
Dor e DoDDor e DoD
Dor e DoD
Camila Capellão
 

Mais procurados (20)

Algoritmos e Programação: Funcionamento do computador. Conceito e definição d...
Algoritmos e Programação: Funcionamento do computador. Conceito e definição d...Algoritmos e Programação: Funcionamento do computador. Conceito e definição d...
Algoritmos e Programação: Funcionamento do computador. Conceito e definição d...
 
Pragmatic Marketing recap by Brian Kelly
Pragmatic Marketing recap by Brian KellyPragmatic Marketing recap by Brian Kelly
Pragmatic Marketing recap by Brian Kelly
 
Running GA4 without gtag.js using ssGTM and elbwalker
Running GA4 without gtag.js using ssGTM and elbwalkerRunning GA4 without gtag.js using ssGTM and elbwalker
Running GA4 without gtag.js using ssGTM and elbwalker
 
Lógica de Programação
Lógica de ProgramaçãoLógica de Programação
Lógica de Programação
 
Pensamento A3
Pensamento A3Pensamento A3
Pensamento A3
 
HTTP/3 시대의 웹 성능 최적화 기술 이해하기
HTTP/3 시대의 웹 성능 최적화 기술 이해하기HTTP/3 시대의 웹 성능 최적화 기술 이해하기
HTTP/3 시대의 웹 성능 최적화 기술 이해하기
 
Tutorial pascal arquivos
Tutorial pascal arquivosTutorial pascal arquivos
Tutorial pascal arquivos
 
Festa dos 600
Festa dos 600Festa dos 600
Festa dos 600
 
Desenvolvimento ágil com scrum
Desenvolvimento ágil com scrumDesenvolvimento ágil com scrum
Desenvolvimento ágil com scrum
 
Aula03 - JavaScript
Aula03 - JavaScriptAula03 - JavaScript
Aula03 - JavaScript
 
Linguagem C 05 Vetores E Matrizes
Linguagem C 05 Vetores E MatrizesLinguagem C 05 Vetores E Matrizes
Linguagem C 05 Vetores E Matrizes
 
Aula 5 - Cookies e Sessões em PHP
Aula 5 - Cookies e Sessões em PHPAula 5 - Cookies e Sessões em PHP
Aula 5 - Cookies e Sessões em PHP
 
Dinamica fabrica avioes 2.0
Dinamica fabrica avioes 2.0Dinamica fabrica avioes 2.0
Dinamica fabrica avioes 2.0
 
Fases da Reunião
Fases da ReuniãoFases da Reunião
Fases da Reunião
 
Linguagem C 10 Arquivos
Linguagem C 10 ArquivosLinguagem C 10 Arquivos
Linguagem C 10 Arquivos
 
Introdução básica ao JavaScript
Introdução básica ao JavaScriptIntrodução básica ao JavaScript
Introdução básica ao JavaScript
 
Kick Off
Kick OffKick Off
Kick Off
 
Agile Brazil | OKR Pocket Game
Agile Brazil | OKR Pocket GameAgile Brazil | OKR Pocket Game
Agile Brazil | OKR Pocket Game
 
Google apps script - Parte 2
Google apps script - Parte 2Google apps script - Parte 2
Google apps script - Parte 2
 
Dor e DoD
Dor e DoDDor e DoD
Dor e DoD
 

Destaque

De Padawan a Jedi - A Saga do Desenvolvedor Java
De Padawan a Jedi - A Saga do Desenvolvedor JavaDe Padawan a Jedi - A Saga do Desenvolvedor Java
De Padawan a Jedi - A Saga do Desenvolvedor Java
Josenaldo de Oliveira Matos Filho
 
Lidando com o Caos: Testando Código PLSQL em um Projeto Critico
Lidando com o Caos: Testando Código PLSQL em um Projeto CriticoLidando com o Caos: Testando Código PLSQL em um Projeto Critico
Lidando com o Caos: Testando Código PLSQL em um Projeto Critico
Rafael Ponte
 
Gambi Design Patterns
Gambi Design PatternsGambi Design Patterns
Gambi Design Patterns
Carlos Lopes
 
Projectlab - Cubo do Conhecimento - Palestra do PMO
Projectlab - Cubo do Conhecimento - Palestra do PMOProjectlab - Cubo do Conhecimento - Palestra do PMO
Projectlab - Cubo do Conhecimento - Palestra do PMO
Garage Criativa | Garage Hub
 
Práticas Ágeis para bons Product Owners
Práticas Ágeis para bons Product OwnersPráticas Ágeis para bons Product Owners
Práticas Ágeis para bons Product Owners
Pedro Paulo Oliveira
 
Tdd na veia
Tdd na veiaTdd na veia
Tdd na veia
Bruno Maomeh
 
Experiências Scrum em Desenvolvimento de Software - Manoel Pimentel
Experiências Scrum em Desenvolvimento de Software -  Manoel PimentelExperiências Scrum em Desenvolvimento de Software -  Manoel Pimentel
Experiências Scrum em Desenvolvimento de Software - Manoel Pimentel
Manoel Pimentel Medeiros
 
Teste de Software Introdução à Qualidade
Teste de Software Introdução à Qualidade Teste de Software Introdução à Qualidade
Teste de Software Introdução à Qualidade
Camilo Ribeiro
 
Fuja da escravidão antes que ela te alcance
Fuja da escravidão antes que ela te alcanceFuja da escravidão antes que ela te alcance
Fuja da escravidão antes que ela te alcance
Vinicius Teles
 
Are your pictures worth 1,000 words? (Eric Beteille)
Are your pictures worth 1,000 words?  (Eric Beteille)Are your pictures worth 1,000 words?  (Eric Beteille)
Are your pictures worth 1,000 words? (Eric Beteille)
Eric Beteille
 
Ibra trai qua
Ibra trai quaIbra trai qua
Ibra trai qua
bongda100
 
Analytics for CMOs on the Rise
Analytics for CMOs on the RiseAnalytics for CMOs on the Rise
Analytics for CMOs on the Rise
Argyle Executive Forum
 
تسلية المصاب عند فقد الأقربين والأصحاب
تسلية المصاب عند فقد الأقربين والأصحابتسلية المصاب عند فقد الأقربين والأصحاب
تسلية المصاب عند فقد الأقربين والأصحابغايتي الجنة
 
Overcoming the Top 3 SMB Challenges with Marketing Automation
Overcoming the Top 3 SMB Challenges with Marketing AutomationOvercoming the Top 3 SMB Challenges with Marketing Automation
Overcoming the Top 3 SMB Challenges with Marketing Automation
Pardot
 
80310cur
80310cur80310cur

Destaque (15)

De Padawan a Jedi - A Saga do Desenvolvedor Java
De Padawan a Jedi - A Saga do Desenvolvedor JavaDe Padawan a Jedi - A Saga do Desenvolvedor Java
De Padawan a Jedi - A Saga do Desenvolvedor Java
 
Lidando com o Caos: Testando Código PLSQL em um Projeto Critico
Lidando com o Caos: Testando Código PLSQL em um Projeto CriticoLidando com o Caos: Testando Código PLSQL em um Projeto Critico
Lidando com o Caos: Testando Código PLSQL em um Projeto Critico
 
Gambi Design Patterns
Gambi Design PatternsGambi Design Patterns
Gambi Design Patterns
 
Projectlab - Cubo do Conhecimento - Palestra do PMO
Projectlab - Cubo do Conhecimento - Palestra do PMOProjectlab - Cubo do Conhecimento - Palestra do PMO
Projectlab - Cubo do Conhecimento - Palestra do PMO
 
Práticas Ágeis para bons Product Owners
Práticas Ágeis para bons Product OwnersPráticas Ágeis para bons Product Owners
Práticas Ágeis para bons Product Owners
 
Tdd na veia
Tdd na veiaTdd na veia
Tdd na veia
 
Experiências Scrum em Desenvolvimento de Software - Manoel Pimentel
Experiências Scrum em Desenvolvimento de Software -  Manoel PimentelExperiências Scrum em Desenvolvimento de Software -  Manoel Pimentel
Experiências Scrum em Desenvolvimento de Software - Manoel Pimentel
 
Teste de Software Introdução à Qualidade
Teste de Software Introdução à Qualidade Teste de Software Introdução à Qualidade
Teste de Software Introdução à Qualidade
 
Fuja da escravidão antes que ela te alcance
Fuja da escravidão antes que ela te alcanceFuja da escravidão antes que ela te alcance
Fuja da escravidão antes que ela te alcance
 
Are your pictures worth 1,000 words? (Eric Beteille)
Are your pictures worth 1,000 words?  (Eric Beteille)Are your pictures worth 1,000 words?  (Eric Beteille)
Are your pictures worth 1,000 words? (Eric Beteille)
 
Ibra trai qua
Ibra trai quaIbra trai qua
Ibra trai qua
 
Analytics for CMOs on the Rise
Analytics for CMOs on the RiseAnalytics for CMOs on the Rise
Analytics for CMOs on the Rise
 
تسلية المصاب عند فقد الأقربين والأصحاب
تسلية المصاب عند فقد الأقربين والأصحابتسلية المصاب عند فقد الأقربين والأصحاب
تسلية المصاب عند فقد الأقربين والأصحاب
 
Overcoming the Top 3 SMB Challenges with Marketing Automation
Overcoming the Top 3 SMB Challenges with Marketing AutomationOvercoming the Top 3 SMB Challenges with Marketing Automation
Overcoming the Top 3 SMB Challenges with Marketing Automation
 
80310cur
80310cur80310cur
80310cur
 

Semelhante a Programação Orientada a Gambiarra

POG - Definição e Conceitos
POG - Definição e ConceitosPOG - Definição e Conceitos
POG - Definição e Conceitos
Luciano Reis
 
Piadas de CSS e Javascript
Piadas de CSS e JavascriptPiadas de CSS e Javascript
Piadas de CSS e Javascript
Bruno Fernandes "PorKaria"
 
POG nunca mais - SOLISC
POG nunca mais - SOLISCPOG nunca mais - SOLISC
POG nunca mais - SOLISC
Paulino Michelazzo
 
AULA 06 - REVISÃO DE CONCEITOS INICIAIS DE ALGORITMOS
AULA 06 - REVISÃO DE CONCEITOS INICIAIS DE ALGORITMOSAULA 06 - REVISÃO DE CONCEITOS INICIAIS DE ALGORITMOS
AULA 06 - REVISÃO DE CONCEITOS INICIAIS DE ALGORITMOS
profjotamarcosduarte
 
Não São Apenas Sapatos
Não São Apenas SapatosNão São Apenas Sapatos
Não São Apenas Sapatos
Vinícius Silva de Andrade
 
Sistemas para o Mundo Real - TDC 2012
Sistemas para o Mundo Real - TDC 2012Sistemas para o Mundo Real - TDC 2012
Sistemas para o Mundo Real - TDC 2012
Leandro Silva
 
Boas práticas no desenvolvimento de software através do uso de TDD
Boas práticas no desenvolvimento de software através do uso de TDDBoas práticas no desenvolvimento de software através do uso de TDD
Boas práticas no desenvolvimento de software através do uso de TDD
Jony Ferreira dos Santos
 
Camada de Negócios de Verdade com Spring
Camada de Negócios de Verdade com SpringCamada de Negócios de Verdade com Spring
Camada de Negócios de Verdade com Spring
elliando dias
 
DDD + BDD + TDD + Scrum
DDD + BDD + TDD + ScrumDDD + BDD + TDD + Scrum
DDD + BDD + TDD + Scrum
Eduardo Bregaida
 
Agilidade é para desenvolvedores? Semana da Agilidade
Agilidade é para desenvolvedores? Semana da AgilidadeAgilidade é para desenvolvedores? Semana da Agilidade
Agilidade é para desenvolvedores? Semana da Agilidade
Wagner Mendes Voltz Fusca
 
TDC Florianópolis 2013 - Refatorar! porque ninguém gosta de código que cheir...
TDC Florianópolis 2013  - Refatorar! porque ninguém gosta de código que cheir...TDC Florianópolis 2013  - Refatorar! porque ninguém gosta de código que cheir...
TDC Florianópolis 2013 - Refatorar! porque ninguém gosta de código que cheir...
Elias Souza
 
Fatores que influenciam na longevidade de um Software
Fatores que influenciam na longevidade de um SoftwareFatores que influenciam na longevidade de um Software
Fatores que influenciam na longevidade de um Software
Pablo Dall'Oglio
 
JS Experience 2017 - Utilizando a virtualização para simplificar o desenvolvi...
JS Experience 2017 - Utilizando a virtualização para simplificar o desenvolvi...JS Experience 2017 - Utilizando a virtualização para simplificar o desenvolvi...
JS Experience 2017 - Utilizando a virtualização para simplificar o desenvolvi...
iMasters
 
Administradores e suas gambiarras
Administradores e suas gambiarrasAdministradores e suas gambiarras
Administradores e suas gambiarras
debian-rs
 
Eu não sou um "bom programador"!
Eu não sou um "bom programador"!Eu não sou um "bom programador"!
Eu não sou um "bom programador"!
Gustavo Pereira
 
TDC2016SP - Evoluindo aplicações mobile com o Google VR SDK
TDC2016SP - Evoluindo aplicações mobile com o Google VR SDKTDC2016SP - Evoluindo aplicações mobile com o Google VR SDK
TDC2016SP - Evoluindo aplicações mobile com o Google VR SDK
tdc-globalcode
 
Usabilidade de Ferramentas
Usabilidade de FerramentasUsabilidade de Ferramentas
Usabilidade de Ferramentas
André Willik Valenti
 
Clean Code
Clean CodeClean Code
Clean Code
Eduardo Cini
 
Organizando a casa. o front end do jeitinho que a mamãe gosta
Organizando a casa. o front end do jeitinho que a mamãe gostaOrganizando a casa. o front end do jeitinho que a mamãe gosta
Organizando a casa. o front end do jeitinho que a mamãe gosta
Johnathan Cardoso
 
Debugging node
Debugging nodeDebugging node
Debugging node
Jeniffer Nolasco
 

Semelhante a Programação Orientada a Gambiarra (20)

POG - Definição e Conceitos
POG - Definição e ConceitosPOG - Definição e Conceitos
POG - Definição e Conceitos
 
Piadas de CSS e Javascript
Piadas de CSS e JavascriptPiadas de CSS e Javascript
Piadas de CSS e Javascript
 
POG nunca mais - SOLISC
POG nunca mais - SOLISCPOG nunca mais - SOLISC
POG nunca mais - SOLISC
 
AULA 06 - REVISÃO DE CONCEITOS INICIAIS DE ALGORITMOS
AULA 06 - REVISÃO DE CONCEITOS INICIAIS DE ALGORITMOSAULA 06 - REVISÃO DE CONCEITOS INICIAIS DE ALGORITMOS
AULA 06 - REVISÃO DE CONCEITOS INICIAIS DE ALGORITMOS
 
Não São Apenas Sapatos
Não São Apenas SapatosNão São Apenas Sapatos
Não São Apenas Sapatos
 
Sistemas para o Mundo Real - TDC 2012
Sistemas para o Mundo Real - TDC 2012Sistemas para o Mundo Real - TDC 2012
Sistemas para o Mundo Real - TDC 2012
 
Boas práticas no desenvolvimento de software através do uso de TDD
Boas práticas no desenvolvimento de software através do uso de TDDBoas práticas no desenvolvimento de software através do uso de TDD
Boas práticas no desenvolvimento de software através do uso de TDD
 
Camada de Negócios de Verdade com Spring
Camada de Negócios de Verdade com SpringCamada de Negócios de Verdade com Spring
Camada de Negócios de Verdade com Spring
 
DDD + BDD + TDD + Scrum
DDD + BDD + TDD + ScrumDDD + BDD + TDD + Scrum
DDD + BDD + TDD + Scrum
 
Agilidade é para desenvolvedores? Semana da Agilidade
Agilidade é para desenvolvedores? Semana da AgilidadeAgilidade é para desenvolvedores? Semana da Agilidade
Agilidade é para desenvolvedores? Semana da Agilidade
 
TDC Florianópolis 2013 - Refatorar! porque ninguém gosta de código que cheir...
TDC Florianópolis 2013  - Refatorar! porque ninguém gosta de código que cheir...TDC Florianópolis 2013  - Refatorar! porque ninguém gosta de código que cheir...
TDC Florianópolis 2013 - Refatorar! porque ninguém gosta de código que cheir...
 
Fatores que influenciam na longevidade de um Software
Fatores que influenciam na longevidade de um SoftwareFatores que influenciam na longevidade de um Software
Fatores que influenciam na longevidade de um Software
 
JS Experience 2017 - Utilizando a virtualização para simplificar o desenvolvi...
JS Experience 2017 - Utilizando a virtualização para simplificar o desenvolvi...JS Experience 2017 - Utilizando a virtualização para simplificar o desenvolvi...
JS Experience 2017 - Utilizando a virtualização para simplificar o desenvolvi...
 
Administradores e suas gambiarras
Administradores e suas gambiarrasAdministradores e suas gambiarras
Administradores e suas gambiarras
 
Eu não sou um "bom programador"!
Eu não sou um "bom programador"!Eu não sou um "bom programador"!
Eu não sou um "bom programador"!
 
TDC2016SP - Evoluindo aplicações mobile com o Google VR SDK
TDC2016SP - Evoluindo aplicações mobile com o Google VR SDKTDC2016SP - Evoluindo aplicações mobile com o Google VR SDK
TDC2016SP - Evoluindo aplicações mobile com o Google VR SDK
 
Usabilidade de Ferramentas
Usabilidade de FerramentasUsabilidade de Ferramentas
Usabilidade de Ferramentas
 
Clean Code
Clean CodeClean Code
Clean Code
 
Organizando a casa. o front end do jeitinho que a mamãe gosta
Organizando a casa. o front end do jeitinho que a mamãe gostaOrganizando a casa. o front end do jeitinho que a mamãe gosta
Organizando a casa. o front end do jeitinho que a mamãe gosta
 
Debugging node
Debugging nodeDebugging node
Debugging node
 

Mais de Josenaldo de Oliveira Matos Filho

Coding Dojo em 10 Minutos!
Coding Dojo em 10 Minutos!Coding Dojo em 10 Minutos!
Coding Dojo em 10 Minutos!
Josenaldo de Oliveira Matos Filho
 
O Spring está morto! Viva o Spring!
O Spring está morto! Viva o Spring!O Spring está morto! Viva o Spring!
O Spring está morto! Viva o Spring!
Josenaldo de Oliveira Matos Filho
 
Java virtual machine quantas linguas fala a jvm2
Java virtual machine   quantas linguas fala a jvm2Java virtual machine   quantas linguas fala a jvm2
Java virtual machine quantas linguas fala a jvm2
Josenaldo de Oliveira Matos Filho
 
Josenaldo a jornada do empreendedor - a aventura da JNaldo
Josenaldo a jornada do empreendedor - a aventura da JNaldoJosenaldo a jornada do empreendedor - a aventura da JNaldo
Josenaldo a jornada do empreendedor - a aventura da JNaldo
Josenaldo de Oliveira Matos Filho
 
A saga do desenvolvedor java
A saga do desenvolvedor javaA saga do desenvolvedor java
A saga do desenvolvedor java
Josenaldo de Oliveira Matos Filho
 
Java hidden features
Java hidden featuresJava hidden features
Java hidden features
Josenaldo de Oliveira Matos Filho
 
Java hidden features
Java hidden featuresJava hidden features
Java hidden features
Josenaldo de Oliveira Matos Filho
 

Mais de Josenaldo de Oliveira Matos Filho (7)

Coding Dojo em 10 Minutos!
Coding Dojo em 10 Minutos!Coding Dojo em 10 Minutos!
Coding Dojo em 10 Minutos!
 
O Spring está morto! Viva o Spring!
O Spring está morto! Viva o Spring!O Spring está morto! Viva o Spring!
O Spring está morto! Viva o Spring!
 
Java virtual machine quantas linguas fala a jvm2
Java virtual machine   quantas linguas fala a jvm2Java virtual machine   quantas linguas fala a jvm2
Java virtual machine quantas linguas fala a jvm2
 
Josenaldo a jornada do empreendedor - a aventura da JNaldo
Josenaldo a jornada do empreendedor - a aventura da JNaldoJosenaldo a jornada do empreendedor - a aventura da JNaldo
Josenaldo a jornada do empreendedor - a aventura da JNaldo
 
A saga do desenvolvedor java
A saga do desenvolvedor javaA saga do desenvolvedor java
A saga do desenvolvedor java
 
Java hidden features
Java hidden featuresJava hidden features
Java hidden features
 
Java hidden features
Java hidden featuresJava hidden features
Java hidden features
 

Programação Orientada a Gambiarra

  • 1. Como garantir que o inferno seja uma amostra grátis do seu trabalho!
  • 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.  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.  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.           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.  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.  Imperativo do Funcionamento  Iniciativa temerária  Imprevidência incerta  Foco postergativo  Documentação espartana  Economia Linear ◦ O importante é funcionar. O resto é balela. ◦ Prefiro fazer sempre do meu jeito! ◦ Lady Murphy? Essa mulher não existe! ◦ Deixe o amanhã para amanhã! ◦ Comentários são para amadores! ◦ Menos linhas é sempre melhor! É fácil, não vejo dificuldade em fazer isso!! Gerente sem-noção definindo prazo junto com o programador
  • 8.  Criptocodagem  Capacidade de Abstração  Criatividade diversificativa  Simplicidade austera  Determinação hiperativa  Conclusão Hipotética Universal Técnica Explicativa ◦ 1337 h4x0r5 dud3 lol ◦ Esqueça o tratamento de erros. Depois tratamos disso. ◦ Se alguém já usou uma solução, faça diferente. ◦ Se tá funcionando sem isso, pra que colocar? ◦ Vai fazendo aí... ◦ 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. Essa sessão está destinada aos iluminados. Se você está vendo isso, sinta-se privilegiado.
  • 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.  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.  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.  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.  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.
  • 16.  Sabe aquele código que você sabe que funciona, mas que, pra você, parece magia negra? "/ .*?< ".replaceAll("","").trim(); É só colocar um IF!! Gerente sem-noção sugerindo a solução técnica
  • 17.  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é.
  • 18.     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
  • 19.  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? /* 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); } O Código tá certo, deve ser problema na massa de dados. Programador Experiente, com várias certificações em POG
  • 20.   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
  • 21.     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
  • 22.   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
  • 23.     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
  • 24.  Se não lembra de como usar um recurso da linguagem, faça 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... Não era para acontecer isso... Programador fazendo uma demonstração do software
  • 25.   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
  • 26.  Use exceções para o controle de fluxo! 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>"); } Quando eu cheguei já tava assim!!! Gambizeiro querendo tirar o seu da reta!
  • 27.  Consiste em garantir que uma operação complexa sempre execute com sucesso! 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!"); } ...ah!!! Isto é um erro comum do Windows! POGramador tentando ganhar tempo para corrigir seu código
  • 28.   O sistema não deve apresentar erros Afinal de contas, o usuário não 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...
  • 29.   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 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! } } } Quando eu testei, funcionou! POGramador demonstrando as gambiarras para seu Gerente Sem Noçao
  • 30.  Se a ação é rápida demais para o usuário perceber, coloque um atraso! 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()); } } } Até ontém quando eu mexi estava tudo funcionando! Resposta do POGramador ao ser questionado sobre a pane geral no sistema
  • 31.     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
  • 32.    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
  • 33.  A fusão 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, mermão... // ... // ... 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 técnicas de TelePOG
  • 34.   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.
  • 35.      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.
  • 36.   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
  • 37.       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
  • 38.     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