REVISTA / EDIÇÃO 251
Saca a POG?
Tem algum programador rindo por perto? Pode apostar que é por conta da POG, a Programação Orientada a Gambiarras. Aquele trechinho de código meio porco que fez o software funcionar — e provocou a risada — é pura POG. Claro que as gambiarras são tão velhas quanto a computação. O novo é a dedicação dos colaboradores da Desciclopédia, a enciclopédia online “livre de conteúdo”, em produzir uma metodologia POG que seja reconhecida pelo mundo acadêmico. Os textos e suas ilustrações são de rolar de rir. Veja alguns deles aqui.
Creative Commons. Estas páginas têm livre acesso no endereço www.info.abril.com.br/edicoes/251/pog.shl.
Definição de POG
A POG — Programação Orientada a Gambiarras ou WOP — Workaround-Oriented Programming é um paradigma de programação de sistemas de software que integra-se perfeitamente a qualquer grande padrão de programação atual.
É uma evolução natural do uso do Programa Bacalhau, também conhecido como ATND — Artifício Técnico Não Documentado —, e vem da antiga expressão brasileira “Para quem é, bacalhau basta” (época em que o peixe seco ainda era barato). Programadores preocupados em usar buzzwords utilizam o termo workaround para impor respeito.
Para que um desenvolvedor possa exercer a Programação Orientada a Gambiarras, são necessários alguns fatores específicos, facilmente encontrados em ambientes de desenvolvimento (veja quadro ao lado). Reunidos, esses fatores transformam o programador em gambiarrizador, espécie mais evoluída.
Fatores favoráveis à POG
Sistemas originalmente mal projetados
Clientes chatos
Usuários chatos
Falta de vontade
Falta de tempo
Gente que pensa que é DBA (normalmente são pessoas chatas, gordas, feias, sem certificação nenhuma e que pararam no tempo)
Arquiteto de software achando que é o máximo (normalmente pessoas, altas, loiras, chatas, arrogantes e metidas a sabe-tudo)
Término do estoque de café/chá
Aproximação do final da tarde
Véspera de feriado/fim de semana
Ter o Jackie Chan como chefe
Ter o MacGyver como coordenador de projeto (ver Método MacGyver)
Governo defecando regras ou MPs que entrem em vigor imediatamente sem dar tempo de atualizar sistemas
Requisitos dinâmicos
Mega Zord
Programadores dos anos 1980 o conhecem como Daileon. Semelhante ao padrão Lone Wolf. Motivo: criar várias funções, cada uma executando um passo de um algoritmo, causa lentidão no sistema por este ter de interromper seu fluxo para chamá-las. Esse problema pode ser resolvido com uma única e gigante guerreira função, que recebe vários parâmetros que definirão o que deverá fazer. Geralmente usado em conjunto com Nonsense Flag.
Método MacGyver
É um avançado método de criação de sistemas no qual o programador (ou gambiarrizador), de posse de recursos e informações limitadas, consegue desenvolver um complexo sistema por completo e em questão de horas. O método recebe esse nome pois, fazendo-se um comparativo com o mundo cotidiano, é equivalente a pegar um sabonete, um clipe e um chiclete e, com esses ingredientes, construir uma bomba atômica, metodologia exaustivamente utilizada por MacGyver. Sua principal característica é a de ser infalível, não importando as condições e o tempo disponível. O Método MacGyver é indispensável emqualquer projetoPOG.
BCDR Pattern
O Black Cat in a Dark Room Pattern (padrão gato preto em um quarto escuro) consiste na criação de métodos que recebem um Map só como parâmetro. O argumento que você precisa está no Map, mas não sabe exatamente onde.
Esse padrão permite passar quantos argumentos forem necessários a um método,sem poluir o código. Permite criar métodos cujas assinaturas seriam, de outra forma, extremamente longas (vide padrão Generic Processor). Evita a alteração de assinaturas de métodos no momento da manutenção do código, tornando desnecessário qualquer tipo de refactoring.
Programa Bacalhau
O Programa Bacalhau começou em 1960, quando Juscelino Kubitschek, com sua doutrina de desenvolvimentismo, resolveu dar o primeiro passo rumo à futura ERP.
Naquele ano, as frotas de pesca do bacalhau estavam decrementando, pois o estado do bacalhau era undefined. Assim, com cartões perfurados e um disco magnético RAMAC, desenvolveram-se as primeiras técnicas de POG num bureau de serviços, que determinava as cotas máximas da pesca.
Para evitar que o bacalhau fosse escondido na cueca dos pescadores, marcava-se nos cartões perfurados o peso deles antes e depois da pesca. Em seguida, os cartões eram recolhidos e ficavam em spool até todos serem processados.
Lone Wolf
Também conhecido por Highlander(só pode haver um), esse é a boa e velha “classe-faz-tudo”. O sistema todo está concentrado numa “classe procedural”que faz tudo, geralmente usando opadrão Static Spree.
Nonsense Flag
Por um legítimo impulso gambiarrizador solucionador de problemas, o programador salpica um monte de variáveis comnomes sensacionais como “newCounter2”, “jaTrocouDeAba”, “passouPorAqui”, “numeroMagico”, “naoAchou” etc.
PPOG - Princípios da POG comentados
Se funciona, então tá certo
Acoplado ou não, txt ou sql, mil funções ou dez, design patterns... Nada disso tem valor para o usuário, que só precisa de um software funcional. O termo “escalável” é falacioso.
Deixe o amanhã para amanhã
Muitos programadores atrasam projetos, alegando que a demora de uma implementaçãoé para seguirem regras de design patterns ou comentários que ajudarão outros desenvolvedoresa entender melhor o código. Deixe o amanhã para o otá... err...
Comentários são para amadores
Um desenvolvedor deve ser treinado para ser fluente na linguagemde programação que utiliza, sem precisardos comentários,não importando a conseqüente ruína de sua vida social. Isso também é conhecido como “sétimo sentido”.
Fé em Deus
A informática é levianamente definida como ciência exata, quando, na verdade,é uma ciência holística. Vários casos reais de Divina Providência foram testemunhados em ambientes fiéis aos princípios POG, espíritos ruins foram exorcizados,e a paz instalou-se graças à fé dos gambiarrizadores.
1337 h4x0r5dud3 lol
Quanto menos legível, mais respeitado o código é. Conseqüentemente, menos alterado ele será, e muito mais estávelo sistema ficará.
A ocasião fazo ladrão
Em determinados momentos não conseguimos escapar dessa máxima.
Capacidade de abstração
O programador deve abstrair tudo o que lhe faça perder tempo, como regras de negócio desnecessárias ou tratamento de erros.
C.H.U.T.E
Conclusão Hipotética Universal Técnica Explicativa — Quando nenhum dos outros conceitos se aplica, utiliza-se esse até funcionar ou o programador jogara toalha no chão.
Murphy
Para lidar com Murphye seu exército só com POG. Murphy é sagaze ligeiro, tá só esperando você dar mole. Nada mais rápido do que uma gambiarrazinha pra acertar o que a lei de Murphy destrói.
|