Diverses normes de codage appliquées par les éditeurs de logiciels ont pour objectif d'accroître la fiabilité, la portabilité et, plus important encore, la lisibilité du code écrit conjointement par différents développeurs.
MISRA C et le standard C ++ développés pour le projet JSF sont deux exemples notables .
Celles-ci se présentent généralement sous la forme suivante, après avoir soigneusement précisé ce que signifient les mots "doit", "doit", "devrait", "pourrait", etc.
Exemple:
Règle 50: Les variables à virgule flottante ne doivent pas être testées pour une égalité ou une inégalité exacte.
Justification: étant donné que les nombres en virgule flottante sont sujets à des erreurs d’arrondi et de troncature, il se peut que l’égalité exacte ne soit pas atteinte, même si prévu.
Ces normes de codage posent des restrictions, généralement sur des codes qui seraient légaux du point de vue du compilateur, mais ils sont dangereux ou illisibles, et sont donc "considérés comme nuisibles".
Maintenant, abusons de cela!
Vous êtes accepté en tant que membre d'un petit comité de normalisation de votre société, qui est conçu pour concevoir les nouvelles normes de codage que chaque développeur de la société devra utiliser. À l'insu des autres, vous êtes secrètement à l'emploi d'une organisation sinistre et vous avez pour mission de saboter l'entreprise. Vous devez proposer une ou plusieurs entrées à la norme de codage qui gêneront plus tard les développeurs. Cependant, vous devez faire attention à ne pas rendre ceci immédiatement évident, sinon vous risqueriez de ne pas être accepté dans la norme.
En d'autres termes, vous devez introduire dans la norme de codage des règles qui semblent légitimes et ont de bonnes chances d'être acceptées par les autres membres du comité. Une fois les projets ont commencé et un nombre incalculable d'heures sont investis dans le code, vous devriez être en mesure d'abuser de ces règles (par exemple, par un détail technique, ou par une trèsinterprétation littérale) pour signaler un code par ailleurs normal et de bonne qualité comme étant contraire à la norme. Ils doivent donc faire beaucoup d’efforts pour le remodeler, et les règles les en empêcheront à partir de ce moment-là, mais comme ces règles sont en vigueur depuis un certain temps déjà, un pur élan gardera ces rôles en vie et des conflits importants d’intérêts entre les différents niveaux de direction, les autres dirigeants vont probablement maintenir les règles en vigueur (ils seraient fous d’admettre leur erreur!), gênant ainsi l’entreprise! Mwahahahahaaa!
Notation
La réponse la plus votée après environ deux semaines à compter de la première entrée valide l'emporte. J'ai une bonne idée de réponse, mais je ne la posterai que quelques jours plus tard, car quelqu'un d'autre pourrait en venir à la même idée, et je ne veux pas leur voler le plaisir. Bien sûr, ma propre réponse ne sera pas acceptée, aucune autre, peu importe le score.
Les électeurs sont encouragés à noter les réponses en fonction de la manière dont les échappatoires sont cachées et de la frustration qu'elles ressentent pour les développeurs.
Règles et règlements
- La règle ou les règles doivent avoir une apparence professionnelle, comme dans l'exemple ci-dessus
- Les règles doivent avoir l’air authentique (de sorte que des choses comme "toutes les variables doivent contenir au moins un trait de soulignement, une lettre majuscule, une lettre minuscule et deux chiffres" ne sont pas acceptées. Elles entraveraient certes les développeurs, mais ne seraient probablement pas acceptées par du comité) et si leur mérite n’est pas immédiatement évident, vous devez justifier votre décision.
- Vous devriez être capable de trouver un moyen d’utiliser / d’abuser de vos règles pour saboter ultérieurement les développeurs. Vous pouvez abuser de toute ambiguïté dans d'autres règles ou utiliser plusieurs règles inoffensives, mais diaboliques une fois combinées!
- Vous devriez poster une explication dans les balises spoiler à la fin de votre message sur la manière dont vous pourriez abuser des règles.
- La langue utilisée ne doit pas être une langue ésotérique. Une langue largement utilisée dans les projets réels doit être choisie, donc les langues avec une syntaxe de type C (au lieu de choses comme Golfscript) sont préférées.
Réponses:
C / C ++
Si vous voulez être encore plus pervers, ajoutez ce qui suit:
Comment peut-on en abuser:
Prenez le programme simple suivant qui ajoutera les 10 premiers éléments d’un tableau. Ce code ne serait pas conforme à la norme.
la source
0
s'agit d'une constante octale? Je présume que c'est parce que cela commence par le caractère0
. Cela renforcerait l'argument de votre hypothétique pédant.Python
Règle 1: tout le code doit être compilé en octets à l'aide de l'
-OO
indicateur, qui optimise le bytecode. Nous voulons optimiser le bytecode pour sa taille et son efficacité!Règle 2: Les tests doivent être exécutés sur le même "artefact" de code qui sera mis en production. Nos auditeurs l'exigent.
la source
help()
du REPL, et le test informel de REPL est toujours en cours de test.unittest
module ou, qui implémentera ses propres assertions ne dépendant pas de l'__debug__
indicateur. Les médecins ne fonctionneront pas silencieusement cependant. Sournois!Ceci est pour un projet Node.JS.
Comment peut-on en abuser:
la source
JavaScript (ECMAScript)
(La syntaxe de l'extrait de grammaire elle-même [et non celle qu'il définit] correspond à celle de la spécification ECMAScript. Cela serait bien entendu défini plus rigoureusement à un autre point de la spécification hypothétique.)
L'astuce
Le programme suivant est non conforme:
la source
C #
Pourquoi
la source
JAVA / PRINTEMPS
L'astuce
la source
Encodage de site Web
Comment peut-on en abuser:
la source
Opérateurs JavaScript au niveau des bits
Comment peut-on en abuser:
la source
x = (x<<10) + (x<<8) + (x<<5) + (x<<4) + (x<<3) + (x)
est inférieur à tous les égards (peut-être même à la vitesse)x *= 1337
, et que remplacer la division par une non-puissance de deux par des sommes de bitshifts est encore pire.JavaScript (ECMAScript)
L'astuce
la source