Mi è stato segnalato questo "articolo" di Davide Bianchi (lo chiamo articolo, non mi veniva in mente altro :P) sulle convenzioni da seguire per scrivere codice pessimo. Nonostante il tono sarcastico utilizzato dall'autore, il documento pone evidenza su molte cattive abitudini che in taluni casi sono riscontrabili nel codice scritto da altri. Viene proprio da chiedersi: "ma l'ha fatto apposta?".
Si parla di nomenclatura, camuffamento, documentazione, progettazione e altro. Come detto, il tono è scherzoso e divertente, in taluni casi volutamente ironico ed esagerato. Di per sè l'articolo fa ridere, ma deve anche far riflettere. Ecco un estratto molto significativo relativo alla nomenclatura... :)
1. Nuovi usi per il "libro dei nomi" (ISBN: 0-380-78047-X)
Comperatevene subito una copia e non vi troverete mai in difficolta' nell'inventare il nome di una variabile. "Gino" e' un ottimo nome, e' breve, si scrive alla svelta ed ha una marea di altre possibilita' (Lino, Pino, Dino...) tutte molto simili e facilmente confondibili tra di loro. Se state cercando per dei nomi "facili" provate "adsf" o "aeou",,,
2. Errori grammaticali
Se dovete necessariamente utilizzare dei nomi descrittivi per le vostre variabili e funzioni, e' il momento di scordarvi della grammatica e di come si scrivono le parole.
3. Siate astratti
Utilizzate pesantemente l'astrazione "come", "quello", "data", "gestione", "varie", "fai" e le cifre, Es. Gestione325, FaiQualcheCosa, Data234...
4. A.C.R.O.N.I.M.I.
Usate gli acronimi per rendere il codice piu' "pulito", E ricordate che I "veri" uomini non spiegano *mai* gli acronimi: li capiscono per via genetica...
5. Sinonimi e contrari
Per evitare la monotonia utilizzate un bel vocabolario dei sinonimi e dei contrari. Soprattutto se avete una serie di funzioni/variabili il cui significato e' praticamente lo stesso, utilizzando dei sinonimi "sottintenderete" delle differenze nell'utilizzo. Tuttavia, se avete diverse funzioni che differiscono in particolari cruciali, curatevi di usare sempre lo stesso nome o quasi. Es. "print" per stampare sulla stampante, scrivere su un file o visualizzare a video...
Non soccombete MAI alla richiesta di documentare il vostro codice e di scrivere un glossario.
6. Usate lingue straniere
Uno script che tiene traccia dei vari "statil" ritornati dai "vaxen"... Esperanto, Klingon, Hobbitese sono linguaggi qualificati per questi scopi.
7. maIusColE
Se usate le lettere maiuscole per identificare le singole parole in una parola lunga, fatelo casualmente, questo e' molto piu' efficace se usate un mix di parole inglesi ed italiane.
8. Riciclate i nomi
Assicuratevi di usare la stessa variabile per almeno 3 cose diverse nello stesso pezzo di codice, se lavorate in C/C++/Java potete creare dei "blocchi" usando { }, all'interno definite altre variabili locali con lo stesso nome di altre variaibli globali. Lo scopo e' che la ricerca di una variabile porti il maggior numero possibile di risultati nello stesso blocco di codice, in modo che il VERO scopo della variabile (se c'e') non sia affatto chiaro senza una attenta analisi del codice.
9. Lettere accentate
Usate gli accenti per i nomi delle variabili, per esempio:
typedef struct { int i; } ìnt;
Se non ve ne siete accorti, la 'i' dell'ultimo 'int' e' una lettera accentata, questa pero' passa facilmente inosservata, cosi' vi ritrovate una cosa che sembra una variabile mentre e' una struttura.
10. Usate a vostro vantaggio la massima lunghezza delle variabili
Se il vostro compilatore supporta ad esempio solo 8 caratteri, usate categoricamente nomi piu' lunghi, cambiando solamente la fine.
Per esempio var_unit_dimension e var_unit_expression, queste due sembrano diverse, ma per il compilatore sono una sola... devo dire altro ?
11. Sottolineato, un'amico.
Usate _ e __ come identificatori
12. Mescolanza di lingue
Mescolate liberamente le lingue estere note (ed ignote) nel vostro codice, chi legge non puo' dire che non avete commentato il codice, potra' chiedersi perche' parte dei commenti sono in Tedesco o in Thailandese....
13. Il codice ASCII e' composto da 255 caratteri
E sono quasi tutti validi per le variabili, compresi §, ¿ e cose di questo genere.
14. Usare nomi comuni per le variabili
Cercate di scegliere dei nomi "comuni" per le variabili, ma che abbiano significati completamente diversi da quello per cui le variabili sono pensate, per esempio:
marypoppins = (julieAndrews + starship) / mailbox;
Questo confonde il lettore che ha difficolta' a dissociare la parola dal suo contesto "solito".
15. Variabili tipiche
Mai usare 'i' per un ciclo come al solito, usate qualsiasi altra variabile ma non 'i'.
16. Ignorare le convenzioni implicite
Se il vostro linguaggio (tipo Java) ha delle convenzioni implicite per i nomi (tipo le classi iniziano con la maiuscola, le variabili no...) IGNORATELE! In alternativa fatevi la VOSTRA serie di convenzioni assolutamente bizzarre e lamentatevi del fatto che nessuno le usa.
17. La 'l' (elle) somiglia molto ad '1' (uno)
Due nomi come def1ab e deflab sono molto simili ma sono diversi.
18. Essere creativi con i parametri delle funzioni
Se avete una funzione F che richiama G passandogli un parametro che in F e' chiamato A, in G usate come identificativo un altro nome che e' presente in F ma non in G. Questo rendera' molto piu' complesso il capire cosa fa' esattamente la funzione 'G' e come viene usato il suo valore di ritorno. Altro esempio: se avete una funzione CalcWidth( height, size ), usate "height" per contenere il valore che verra' usato come "size" nel calcolo e viceversa...
19. Utlzo dle abbrvzni (utilizzo delle abbreviazioni)
Non c'e' un solo modo di abbreviare una parola... siate creativi.
20. Sottostimare le funzioni
Utilizzate per le funzioni dei nomi che non diano l'idea (o non precisamente) di cosa effettivamente fa' la funzione. Se qualcuno domanda spiegate che la funzione e' stata migliorata e le nuove funzionalita' aggiunte in un secondo tempo, questo spiega il nome. Per esempio una funzione come
isValid( x )
Dovrebbe verificare la validita' del suo parametro, ma se contemporaneamente lo converte in binario e lo memorizza in un database...
21. Notazione ungherese
La Notazione Ungherese e' una vera arma nucleare nelle mani di un sapiente "offuscatore". Non c'e' sforzo di comprensione del codice che non possa essere vanificato, ne' ingegniere, programmatore o tecnico di sorta che non possa essere indotto al suicidio con un buon attacco di Notazione Ungherese.
Per chi non lo sapesse, la Notazione Ungherese e' la pratica di anteporre al "nome" vero della variabile un "prefisso" che identifica il tipo e lo scopo della variabile. Cosi' abbiamo per esempio
intValore, strTesto, objOggetto e cosi' via.
Il trucco sta' nell'utilizzare prefissi identici ma che abbiano diversi significati in vari punti del programma, cosi' abbiamo:
intXXX = Intervallo Non Trovato...
intXXX = Indice Numerico Transazione
intXXX = Informazione Non Trovata...
strXXX = Stato Transazione Ritornata...
e cosi' via.
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
- We Love Raf!, il 17 ottobre 2007 alle 16:38
- Italia campione di software design, l'11 agosto 2006 alle 13:30
- 500 modi per uccidere un coniglio [OT], l'1 aprile 2005 alle 10:45
- Microsoft annuncia la sostituzione del cavo di alimentazione per XBOX, il 18 febbraio 2005 alle 15:30
- Questa non la sapevo... Era uno scherzo!, l'11 febbraio 2005 alle 02:33