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.