Esistono vari standard di codifica applicati alle società di software che hanno l'obiettivo di aumentare l'affidabilità del codice, la portabilità e, soprattutto, la leggibilità nel codice scritto congiuntamente da diversi sviluppatori.
Due esempi notevoli sono il MISRA C e lo standard C ++ sviluppato per il progetto JSF .
Questi sono di solito nella forma seguente, dopo aver specificato attentamente cosa significano le parole "must", "must", "should", "might", ecc.
Esempio:
Regola 50: le variabili in virgola mobile non devono essere verificate per l'eguaglianza o la disuguaglianza esatta.
Motivazione: Poiché i numeri in virgola mobile sono soggetti a errori di arrotondamento e di troncamento, l'eguaglianza esatta potrebbe non essere raggiunta, anche quando previsto.
Questi standard di codifica pongono delle restrizioni, di solito su un codice che sarebbe legale dal punto di vista del compilatore, ma è pericoloso o illeggibile ed è quindi "considerato dannoso".
Ora abusiamo di questo!
Sei accettato come membro di un piccolo comitato di standardizzazione presso la tua azienda, che ha lo scopo di progettare i nuovi standard di codifica che ogni sviluppatore dell'azienda dovrà utilizzare. All'insaputa degli altri, sei segretamente impiegato in un'organizzazione sinistra e hai la missione di sabotare la compagnia. Devi proporre una o più voci allo standard di codifica che in seguito ostacoleranno gli sviluppatori. Tuttavia, devi stare attento a non renderlo immediatamente evidente, altrimenti rischi di non essere accettato nello standard.
In altre parole, è necessario introdurre regole per lo standard di codifica che sembrano legittime e hanno buone probabilità di essere accettate dagli altri membri del comitato. Dopo che i progetti sono avviati e innumerevoli ore-uomo sono investiti nel codice, si dovrebbe essere in grado di abusare di queste regole (ad esempio, per un cavillo, o da un moltointerpretazione letterale) per contrassegnare il codice altrimenti normale e di buona qualità come contrario allo standard. Quindi devono impegnarsi molto per ridisegnarlo, e le regole li ostacoleranno da questo punto in poi, ma poiché le regole sono attive da un po 'di tempo ormai, il puro slancio manterrà in vita questi ruoli e poiché ci sono conflitti significativi di interessi tra diversi livelli di gestione, gli altri gestori probabilmente manterranno vive le regole (sarebbero sciocchi ad ammettere il loro errore!), ostacolando quindi la società! Mwahahahahaaa!
punteggio
La risposta più votata dopo circa 2 settimane dalla prima iscrizione valida vince. Ho un'idea per una buona risposta, ma la posterò solo pochi giorni dopo, poiché qualcun altro potrebbe venire alla stessa idea e non voglio privarli del piacere. Naturalmente, la mia risposta non sarà accettata sopra ogni altra, indipendentemente dal punteggio.
Gli elettori sono incoraggiati a valutare le risposte in base a quanto bene sono nascoste le scappatoie e quanto frustranti sarebbero per gli sviluppatori.
Norme e regolamenti
- La regola o le regole devono apparire scritte professionalmente, come nell'esempio sopra
- Le regole dovrebbero apparire autentiche (quindi cose come "tutte le variabili devono contenere almeno un carattere di sottolineatura, una lettera maiuscola, una lettera minuscola e due numeri" non sono accettate. Avrebbero effettivamente ostacolato gli sviluppatori, ma molto probabilmente non sarebbero state accettate da il comitato) e se il loro merito non è immediatamente evidente, dovresti dare una buona logica.
- Dovresti essere in grado di trovare un modo per utilizzare / abusare delle tue regole per sabotare gli sviluppatori in seguito. Potresti abusare di qualsiasi ambiguità in altre regole, oppure potresti usare più regole che sono innocue da sole, ma diaboliche una volta combinate!
- Dovresti pubblicare una spiegazione nei tag spoiler alla fine del tuo post su come potresti abusare delle regole
- La lingua utilizzata non deve essere una lingua esoterica. Deve essere scelto un linguaggio ampiamente utilizzato in progetti reali, quindi sono preferiti i linguaggi con sintassi tipo C (invece di cose come Golfscript).