Existem vários padrões de codificação aplicados em empresas de software que têm o objetivo de aumentar a confiabilidade, portabilidade e, o mais importante, legibilidade no código escrito em conjunto por diferentes desenvolvedores.
Dois exemplos notáveis são o MISRA C e o padrão C ++ desenvolvido para o projeto JSF .
Eles geralmente estão na seguinte forma, depois de especificar cuidadosamente o que as palavras "devem", "devem", "devem", "podem" etc. significam:
Exemplo:
Regra 50: Variáveis de ponto flutuante não devem ser testadas quanto à exata igualdade ou desigualdade.
Justificativa: Como os números de ponto flutuante estão sujeitos a erros de arredondamento e truncamento, a igualdade exata pode não ser alcançada, mesmo quando esperado.
Esses padrões de codificação impõem restrições, geralmente em código que seria legal do ponto de vista do compilador, mas é perigoso ou ilegível e, portanto, é "considerado prejudicial".
Agora vamos abusar disso!
Você é aceito como membro de um pequeno comitê de padronização da sua empresa, cujo objetivo é criar os novos padrões de codificação que todos os desenvolvedores da empresa deverão usar. Sem o conhecimento dos outros, você está secretamente empregando uma organização sinistra e tem como missão sabotar a empresa. Você precisa propor uma ou mais entradas para o padrão de codificação que mais tarde prejudicará os desenvolvedores. No entanto, você deve tomar cuidado para não tornar isso imediatamente óbvio, caso contrário, corre o risco de não ser aceito no padrão.
Em outras palavras, você deve introduzir regras no padrão de codificação que pareçam legítimas e com boas chances de serem aceitas pelos outros membros do comitê. Depois que os projetos são iniciados e inúmeras horas-homem são investidas no código, você deve poder abusar dessas regras (por exemplo, por um detalhe técnico ou muitointerpretação literal) para sinalizar códigos normais e de boa qualidade como contrários ao padrão. Portanto, eles devem se esforçar muito para reformulá-lo, e as regras os impedirão a partir de agora, mas, como as regras estão ativas há algum tempo, o momento puro manterá essas funções vivas e há conflitos significativos de interesses entre os diferentes níveis de administração, os outros gerentes provavelmente manterão as regras vivas (eles seriam tolos em admitir seu erro!), prejudicando a empresa! Mwahahahahaaa!
Pontuação
A resposta mais votada após aproximadamente duas semanas da primeira entrada válida vence. Eu tenho uma idéia para uma boa resposta, mas vou publicá-la apenas alguns dias depois, pois outra pessoa pode ter a mesma idéia e não quero roubá-la do prazer. Obviamente, minha própria resposta não será aceita acima de nenhuma outra, independentemente da pontuação.
Os eleitores são incentivados a obter respostas com base em quão bem as brechas estão ocultas e quão frustrantes para os desenvolvedores seriam.
Regras e regulamentos
- A regra ou regras devem ter uma aparência profissional, como no exemplo acima
- As regras devem parecer genuínas (portanto, coisas como "todas as variáveis devem conter pelo menos um sublinhado, uma letra maiúscula, uma letra minúscula e dois números" não são aceitas. Elas realmente atrapalhariam os desenvolvedores, mas provavelmente não seriam aceitas por comitê) e, se o mérito deles não for imediatamente óbvio, você deve dar uma boa justificativa.
- Você deve encontrar uma maneira de usar / abusar de suas regras para sabotar os desenvolvedores posteriormente. Você pode abusar de qualquer ambiguidade em outras regras ou usar várias regras que são inofensivas por si mesmas, mas diabólicas uma vez combinadas!
- Você deve postar uma explicação em tags de spoiler no final de sua postagem sobre como você pode abusar das regras
- O idioma usado não deve ser um idioma esotérico. Uma linguagem amplamente usada em projetos reais deve ser escolhida, para que as línguas com sintaxe do tipo C (em vez de coisas como o Golfscript) sejam preferidas.