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.
Respostas:
C / C ++
Se você quer ser ainda mais mal, adicione o seguinte:
Como pode ser abusado:
Pegue o programa simples a seguir, que adicionará os 10 primeiros elementos de uma matriz. Este código não seria compatível com o padrão.
fonte
0
é uma constante octal? Presumo que é porque começa com o personagem0
. Isso reforçaria o argumento do seu hipotético pedante.Python
Regra 1: Todo o código deve ser compilado em bytes usando o
-OO
sinalizador, que otimiza o bytecode. Queremos um bytecode otimizado para tamanho e eficiência!Regra 2: Os testes devem ser executados com o mesmo "artefato" de código que será colocado em produção. Nossos auditores exigem isso.
fonte
help()
no REPL, e o teste informal do REPL ainda está sendo testado.unittest
módulo ou, que implementa suas próprias asserções, não dependendo do__debug__
sinalizador. No entanto, os testes não serão executados silenciosamente. Sorrateiro!Isto é para um projeto Node.JS.
Como pode ser abusado:
fonte
JavaScript (ECMAScript)
(A sintaxe do trecho gramatical em si [não a que ela define] corresponde à da especificação ECMAScript. É claro que isso seria definido com mais rigidez em outro ponto da especificação hipotética.)
O truque
O seguinte programa não está em conformidade:
fonte
C #
Por quê
fonte
JAVA / PRIMAVERA
O truque
fonte
Codificação de site
Como pode ser abusado:
fonte
Operadores JavaScript bit a bit
Como pode ser abusado:
fonte
x = (x<<10) + (x<<8) + (x<<5) + (x<<4) + (x<<3) + (x)
é inferior em todos os aspectos (possivelmente até velocidade)x *= 1337
e que substituir a divisão por uma não potência de dois por somas de deslocamento de bits é ainda pior.JavaScript (ECMAScript)
O truque
fonte