Gambi Design Patterns
Página 1 de 1
Gambi Design Patterns
Padrão de Projeto Gambis
As Soluções Técnicas de Contorno ou Engenharias de Emergência (aka. gambiarras) podem ser aplicadas de várias formas. No entanto, não há ainda consenso entre desenvolvedores e analistas acerca de padrões de projeto para desenvolvimento orientado a gambiarras. Uma prática muito comum é criação de uma entidade específica, com o intuito único de prover uma funcionalidade emergencial a um sistema. Não são raros os casos de utilização de classes "gambiarra.java", "agoravai.java", "funcionapeloamordedeus.java", métodos "void ajeita()", "public String bruto()" e afins. Em alguns casos, métodos com nome sofisticados como "setMagicOn()" e "setApellationMode(true)" também são utilizados para dar um ar mais profissional. Também para tornar o código mais amigável e legível alguns programadores fazem uso abusivo do MO de métodos, utilizando nomes como "check"(), "checka()", "xeka()" ou "pussy()". São os chamados Gambiwares, componentes de software que promovem a entrega de projetos com o mínimo de atraso possível.
Nesta técnica as linhas de comentário devem ser evitadas ou proibidas. Em caso de extrema necessidade o uso de línguas como hebraico ou tupi-guarani é recomendado.
A técnica mais usada pelos programadores POG é usar sempre softwares que fazem todo serviço para ele e, claro, o Google para pegar scripts prontos e usar. Os programadores POG sempre são mais rápidos que o normal e cobram mais barato, enquanto que os outros programadores precisam cobrar mais caro pelo serviço porque eles sempre se enrolam e não conseguem entregar nada no prazo.
As métricas e estimativas da Programação Orientada a Gambiarras provêm das metodologias de medição de software denominadas Conceito Holístico Unilateral para Tipificação Estrutural, mais conhecido pela sua abreviação: C.H.U.T.E. e Cálculo Hipotético Usando Técnicas Estatísticas, mais conhecido pela sua abreviação: C.H.U.T.E..
Gambi Design Patterns catalogados
Zé do Caixão, ou "À Meia Noite Rodarei o teu Script"
É o tipo de código que faz um bocado de absurdos, como apagar logs e outros arquivos que possam comprometer o desenvolvedor do sistema (que por "acaso" é uma merda), todo dia à meia noite. Em alguns casos, é tão subversivo, que funciona como um vírus, e é possível que alguns antivírus detectem como tal.
Global Manual Counter
Padrão aplicado para quem não conhece variaveis globais (ou não consegue aplica-las em sua linguagem). Trata-se de criar uma classe utilizada só para contar. Ex:
1234 Reorder
Código feito para quem precisa inverter a string "1234"! Muito comum hoje, nas provas seletivas em empresas. SIM ESTE CÓDIGO ESTAVA EM UMA PROVA!
Programação Keep Walking
É um estilo de produção de código rápido. O código de 10 dias é gerado em alguns minutos, com lógica avançada e estrutura complexa. Talvez não funcione. Uma das característica desse estilo é o a frequente reinvenção da roda e substituição de variáveis por letras do alfabeto. Exemplo:
Sleeper / Human Factor
Imagine que o POGramador precise criar uma tela que mostre o progresso de uma operação. Um problema muito comum é que determinadas operações executam muito rápido, impedindo que o usuário veja a tela de progresso. Então, para que o usuário tenha a certeza de que algo está sendo executado, o algoritmo é modificado intencionalmente para que este execute de forma mais ineficiente. Este pattern também é conhecido como Human Factor, pois é nada mais que uma tentativa de demonstrar o esforço computacional de uma tarefa em uma medida humanamente perceptível, implementando avançados conceitos de usabilidade. Isso prova que, ao contrário dos programadores convencionais, os programadores POG pensam no bem-estar dos seus usuários.
Abaixo segue um exemplo real. O detalhe é que, originalmente, ele tinha sido implementado sem o sleep, o que foi adicionado posteriormente sob solicitação dos usuários:
QPÉ
Mais conhecido como "Que p* é essa!?" ou ainda WTF (What'a'fuck) ou WTH (What'a'hell). É aquele código que você sabe como funciona, mas depois do resultado pronto olha para aquela merda e não quer nem saber como vão dar manutenção depois! Exemplo:
"/ .*?< ".replaceAll("","").trim();
Outro exemplo interessante retirado de um sistema real em produção.
Programação Orientada a Estagiário
Consiste na capacidade do analista de sistemas sobrecarregar o estagiário ou o técnico mais próximo com todas as suas funções, desde interação com clientes até desenvolvimento de casos de uso e bancos de dados, aproveitando ao máximo toda a energia gambiarrizadora que essas criaturas possuem. Sabendo que fica mais fácil para o programador entender e realizar a POGização do sistema se ele conversar diretamente com o usuário, o analista sabiamente permite que o programador realize os contatos com o cliente, permitindo assim que o analista realize funções que condizem mais ao seu cargo, como acessar a desciclopédia ou ficar o dia inteiro na cantina, por exemplo. Além do mais, o contato do programador com o usuário economiza papel e tinta de impressora, pois a parte da documentação impressa é nula, já que o analista não participa do processo e assim não gera as toneladas de folhas com diagramas e especificações. O acoplamento do sistema é muito maior, pois foi desenvolvido por uma única pessoa, facilitando na manutenção, pois existem poucas classes para serem modificadas (no máximo cinco, para programas muito complexos).
O resto do texto se encontra no link abaixo
http://desciclo.pedia.ws/wiki/Gambi_Design_Patterns
As Soluções Técnicas de Contorno ou Engenharias de Emergência (aka. gambiarras) podem ser aplicadas de várias formas. No entanto, não há ainda consenso entre desenvolvedores e analistas acerca de padrões de projeto para desenvolvimento orientado a gambiarras. Uma prática muito comum é criação de uma entidade específica, com o intuito único de prover uma funcionalidade emergencial a um sistema. Não são raros os casos de utilização de classes "gambiarra.java", "agoravai.java", "funcionapeloamordedeus.java", métodos "void ajeita()", "public String bruto()" e afins. Em alguns casos, métodos com nome sofisticados como "setMagicOn()" e "setApellationMode(true)" também são utilizados para dar um ar mais profissional. Também para tornar o código mais amigável e legível alguns programadores fazem uso abusivo do MO de métodos, utilizando nomes como "check"(), "checka()", "xeka()" ou "pussy()". São os chamados Gambiwares, componentes de software que promovem a entrega de projetos com o mínimo de atraso possível.
Nesta técnica as linhas de comentário devem ser evitadas ou proibidas. Em caso de extrema necessidade o uso de línguas como hebraico ou tupi-guarani é recomendado.
A técnica mais usada pelos programadores POG é usar sempre softwares que fazem todo serviço para ele e, claro, o Google para pegar scripts prontos e usar. Os programadores POG sempre são mais rápidos que o normal e cobram mais barato, enquanto que os outros programadores precisam cobrar mais caro pelo serviço porque eles sempre se enrolam e não conseguem entregar nada no prazo.
As métricas e estimativas da Programação Orientada a Gambiarras provêm das metodologias de medição de software denominadas Conceito Holístico Unilateral para Tipificação Estrutural, mais conhecido pela sua abreviação: C.H.U.T.E. e Cálculo Hipotético Usando Técnicas Estatísticas, mais conhecido pela sua abreviação: C.H.U.T.E..
Gambi Design Patterns catalogados
Zé do Caixão, ou "À Meia Noite Rodarei o teu Script"
É o tipo de código que faz um bocado de absurdos, como apagar logs e outros arquivos que possam comprometer o desenvolvedor do sistema (que por "acaso" é uma merda), todo dia à meia noite. Em alguns casos, é tão subversivo, que funciona como um vírus, e é possível que alguns antivírus detectem como tal.
Global Manual Counter
Padrão aplicado para quem não conhece variaveis globais (ou não consegue aplica-las em sua linguagem). Trata-se de criar uma classe utilizada só para contar. Ex:
- Código:
class contador{
public static $c = 0;
}
- Código:
echo contador::$c++;
1234 Reorder
Código feito para quem precisa inverter a string "1234"! Muito comum hoje, nas provas seletivas em empresas. SIM ESTE CÓDIGO ESTAVA EM UMA PROVA!
- Código:
funtion string Inverte_valor()
{
string valor;
valor = "1234";
return "4321";<
}
Programação Keep Walking
É um estilo de produção de código rápido. O código de 10 dias é gerado em alguns minutos, com lógica avançada e estrutura complexa. Talvez não funcione. Uma das característica desse estilo é o a frequente reinvenção da roda e substituição de variáveis por letras do alfabeto. Exemplo:
- Código:
// conta itens
$c = 0;
foreach($a as $val){
$c++;
}
return $c;
Sleeper / Human Factor
Imagine que o POGramador precise criar uma tela que mostre o progresso de uma operação. Um problema muito comum é que determinadas operações executam muito rápido, impedindo que o usuário veja a tela de progresso. Então, para que o usuário tenha a certeza de que algo está sendo executado, o algoritmo é modificado intencionalmente para que este execute de forma mais ineficiente. Este pattern também é conhecido como Human Factor, pois é nada mais que uma tentativa de demonstrar o esforço computacional de uma tarefa em uma medida humanamente perceptível, implementando avançados conceitos de usabilidade. Isso prova que, ao contrário dos programadores convencionais, os programadores POG pensam no bem-estar dos seus usuários.
- Código:
public class MedidorDePOGresso implements Runnable {
public void run() {
while (true) { // Até terminar o processo..
// Realiza um processamento rápido aqui...
try {
Thread.sleep(1000); // ... e ferra com a performance aqui
}
catch (InterruptedException exc) {}
// Atualiza a ProgressBar
progress.setValue(blablabla.getPorcentagem());
}
}
}
Abaixo segue um exemplo real. O detalhe é que, originalmente, ele tinha sido implementado sem o sleep, o que foi adicionado posteriormente sob solicitação dos usuários:
- Código:
public function action_sorteiar(){
//aqui você implementa o eficiente algoritmo de sorteio de Fisher–Yates O(n)
$this->realizarSorteio();
//aqui você leva em conta o fator humano
sleep("5");
$this->request->response = View::factory('sorteio_realizado');
}
QPÉ
Mais conhecido como "Que p* é essa!?" ou ainda WTF (What'a'fuck) ou WTH (What'a'hell). É aquele código que você sabe como funciona, mas depois do resultado pronto olha para aquela merda e não quer nem saber como vão dar manutenção depois! Exemplo:
"/ .*?< ".replaceAll("","").trim();
Outro exemplo interessante retirado de um sistema real em produção.
- Código:
private static void setDayOfMonth(Calendar calendar, int day)
{
calendar.setLenient(false);
Date date = null;
int offset = 0;
while (date == null)
{
calendar.set(Calendar.DAY_OF_MONTH, day - offset);
try
{
date = calendar.getTime();
}
catch (IllegalArgumentException e)
{
System.out.println("offset = " + offset);
offset++;
}
}
}
Programação Orientada a Estagiário
Consiste na capacidade do analista de sistemas sobrecarregar o estagiário ou o técnico mais próximo com todas as suas funções, desde interação com clientes até desenvolvimento de casos de uso e bancos de dados, aproveitando ao máximo toda a energia gambiarrizadora que essas criaturas possuem. Sabendo que fica mais fácil para o programador entender e realizar a POGização do sistema se ele conversar diretamente com o usuário, o analista sabiamente permite que o programador realize os contatos com o cliente, permitindo assim que o analista realize funções que condizem mais ao seu cargo, como acessar a desciclopédia ou ficar o dia inteiro na cantina, por exemplo. Além do mais, o contato do programador com o usuário economiza papel e tinta de impressora, pois a parte da documentação impressa é nula, já que o analista não participa do processo e assim não gera as toneladas de folhas com diagramas e especificações. O acoplamento do sistema é muito maior, pois foi desenvolvido por uma única pessoa, facilitando na manutenção, pois existem poucas classes para serem modificadas (no máximo cinco, para programas muito complexos).
O resto do texto se encontra no link abaixo
http://desciclo.pedia.ws/wiki/Gambi_Design_Patterns
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos
|
|