Per tutto il pubblico
anglofobico ho deciso di fare una nuova traduzione! Andremo nel cuore della filosofia della programmazione e vedremo come si chiamano le più abusate tipologie di pattern e anti-pattern dell'ambiente informatico!
Avverto tutti che il compito è lungo e pedante: stiamo parlando di
neologismi inadatti a chi storce il naso parlando di zippare, cliccare, twittare, etc...
Userò come al solito una personalissima traduzione maccheronica, e che la grammatica abbia pietà di me.
 |
Eccezzioni: acchiappiamole tutte! |
NGI: Neologismi Gergali Informatici
Ho cercato di dividere nelle sezioni che più ritenevo opportune questi termini, neologismi o termini gergali nati da quella spinta tecnologica che vuole automatizzare l'informazione ma che è fonte primigenia di caos. Se muovete il cursore sopra al neolemma potrete vedere l'originale inglese.
Codice
- Condizionali alla Yoda
- Se trovi scritto
if( "giallo" == colore.ToString()) {}
trovato chi usa la forza tu hai! Se un colore è giallo o se giallo è il colore in italiano non è troppo fastidioso comunque si intendono i confronti logici invertiti, avanti!
 |
Lungo il testo è! |
- Eccezioni alla Pokemon
- Molto fastidioso, si trova nelle forme:
try{}catch(Exception){}
try{}catch(){}
try{}catch(Exception){rethrow}
Catturare tutte le eccezioni un abitudine degna del migliore allenatore di pokemon, ma se un linguaggio mette a disposizione eccezioni differenti è sempre meglio far intendere su cosa si vuol lavorare o perlomeno arricchire l'eccezione o il log degli errori!
- Parentesi Egiziane
- Quando la prima parentesi grafa è nella stessa linea della condizione, la posizione delle parentesi ricorda il famoso gesto.
if(true){
// op
}
Chiamata ufficialmente indentazione K&R, perchè usata nel libro "Il linguaggio C" di Brian Kernighan e Dennis Ritchie.
Refuctoring
Ovvero l'antica pratica di prendere qualcosa di funzionante e scritto più o meno bene in un pezzo di codice orrendo e inusabile (scusa Andrea).
Linguaggi
Semplici modi di scrivere del codice in qualunque linguaggio, sono spesso anti-pattern abbastanza semplici da evitare, ma che per motivi di ignoranza, inesperienza e mancanza di tempo (che dovrebbe sempre esserci per queste cose) diventano pane quotidiano per tutti i programmatori, vecchi e giovani.
- Spaghetti Code
- Quando il codice non è strutturato e presenta simpatici GOTO, eccezioni mal gestite, metodi senza senso; insomma, quando il flusso del programma si intreccia senza essere facilmente discricabile.
 |
Spaghetti code! Yummy! |
- Spaghetti con Polpette Code
- Quando lo Spaghetti Code non basta, e un programmatore illuminato decide di aumentare l'entropia con una personalissima interpretazione del codice ad oggetti, complicando tutto in maniera meeeeeravigliosa.
- Lasagne Code
- Quando il codice è spalmato su diversi layer per nessun motivo logico, ecco a voi le buonissime "Lasagne Code pronto"!
- Ravioli Code
- Codice ad oggetti quando le classi sono piccole e fortemente accoppiate (capita quando si ereditano alcuni progetti RAD fatti bene ma in fretta: un bel problema per chi deve fare manutenzione).
- Wurstel Code
- Hai presente quel codice che hai sezionato fino al minimo dettaglio e non vuoi mai più rivedere? Ecco quello.
- Jenga Code
- Quando alterare un blocco di codice fa implodere il programma su se stesso, spesso genera la frase: "funziona? non toccare!".
- Idra Code
- Codice che non deve essere corretto. Ogni correzione genera altri due bachi. Deve essere riscritto assolutamente.
- Codice Cicatriziale
- Tutto quel codice che è rimasto commentato nell'ultima versione caricata dallo sviluppatore ed è rimasto negli anni intoccato.
- Pig's Lipstick
- Espressione idiomatica traducibile come "Codice del rosseto sul maiale (link inglese)", definisce quelle situazioni dove tutte le brutture del codice son state nascoste dentro a metodi o pattern più o meno belli a vedersi, solitamente il pattern Facade è il principale responsabile di questi scempi.
 |
Anche col rossetto, un maiale rimane sempre un maiale |
- Codice della mutua
- Codice così complesso e buggato che solo tu puoi manutenere, in modo che il datore di lavoro sia obbligato a tenerti, permettendoti di pagare il mutuo (o vedendo il codice come una mutua).
- Codice del Ghetto
- Codice particolarmente inelegante e non ottimizzato, ma che fa comunque lo sporco lavoro richiesto.
- Codice del coltellino svizzero
- Pezzo di codice che fa un sacco di cose, nessuna delle quali particolarmente bene.
- Codice copia-scoppia
- Prendendo spunto da copia-incolla, indica quel codice copiato ed inserito nell'applicazione che puntualmente esplode perché usato impropriamente. Spesso ti costringe a ritrovare lo stesso blog dal quale è stato pescato per capirne qualcosa di più. Quando si programma usando pesantemente questa tecnica, si può parlare di Blog Driven Development.
- Codice Stringamente Tipizzato
- Manomissione del termine Tipizzazione Forte (strongly typed in inglese); identifica quelle implementazioni dove si è usato inutilmente e impropriamente una o più stringhe per ottenere qualcosa che si sarebbe dovuto risolvere usando la programmazione ad oggetti.
Cosa che avrebbe reso tutto più leggibile e meno esplodente.
Fear Driven Development
Letteralmente "Sviluppo guidato dalla paura"; è quel modo di programmare tipico dei team dove i Project Manager hanno esercitato troppa pressione (licenziando alcuni elementi, chiedendo di fare troppo in fretta il lavoro). Porta a scrivere un sacco di toppe utili ad arginare momentaneamente il problema, aumentando a dismisura i costi di manutenibilità.
Protoduction
Avete presente quando il vostro prototipo finisce in produzione e ci rimane? Ecco.
Commenti Ninja
 |
Ora li vedi, presto non ci saranno più! |
Conosciuti anche come commenti invisibili, commenti segreti o mancanza di commenti.
Convenzione dei nomi molto puffa
Quando quasi tutte le classi hannolo stesso prefisso, o il nome delle stesse viene ripetuto inutilmente nei metodi. Simpatico refuso dell'epoca della
notazione ungherese.
Report degli Errori (o segnalazione dei bug)
- Report narcisistico
- Quando il bug viene riportato da un utente che crede di sapere molto più di quel che effettivamente sa. Solitamente è ripieno di particolari irrilevanti. Ha uno o più consigli (sbagliati) su quelle che crede siano le cause del problema o sul come risolverlo.
- Report fattone
- Un report così incomprensibile da far credere che chi l'abbia scritto fosse completamente fumato.
- Report insulso
- Uno dei più comuni, è quel report d'errore che non contiene altro che una vaga descrizione del problema. Tipicamente non contiene immagini, messaggi d'errore o un'indicazione sul come riprodurlo.
- Galleggiante
- Quando nel programma di gestione dei bug rimane uno o più bug a galleggiare per un periodo di rempo indefinito, in quanto non viene mai assegnato a nessuno, o perché esiste già un modo per evitarlo.
- Ultimo post di Fermat
- Quando in rete trovate un post dove l'autore afferma di aver risolto il problema, o aver trovato un modo per evitarlo, ma non lo spiega da nessuna parte, lasciando lo sviluppatore/assistente a brancolare nel buio.
Tipi di Bug
- HeisenBug
- Un bug che sparisce o si modifica quando si cerca di capirlo/debuggarlo. Dal principio di indeterminazione di Heisenberg.
- Higgs-Bugson
- Un bug che esiste, ma che avviene in presenza di così tante variabili che è impossibile ricrearlo partendo da poche linee di log o vaghe affermazioni di utenti che credono di averlo visto. Per trovarlo sarebbe necessario investire in un Large Hadron debugger. Dal bosone di Higgs.
- Hindenbug
- Un bug catastrofico che distrugge enormi quantità di dati. "Oh, the humanity!" (cit.)
- Controbug
- Un bug che ti si presenta quando cerchi il bug segnalato dalla persona che causato il bug.
- Bloombug
- Un bug che accidentalmente genera un guadagno. Avete presente Michael Bloomberg?
- Schrödinbug
- Si riferisce ad una funzionalità che sembra fluttuare tra lo stato di buggata e corretta (come il famoso gatto), fino a quando qualcuno non controlla il codice sorgente, capendo una volta per tutte che era un bug.
- Il Bug di Loch Ness
- Anche detto Bugfoot, è un bug che non può essere riprodotto e che è stato visto da una sola persona.
- UFO Bug
- Un bug che il cliente, anche in presenza della dimostrazione che non può presentarsi, continuerà a segnalare.
- Mandelbug
- Un bug le quali cause sono così complesse da farlo sembrare caotico e non deterministico. Dal nome del grande Benoît Mandelbrot.
- Bug della vergogna
- Un bug andato in produzione che ha fatto vergognare talmente tanto lo sviluppatore da farlo rimanere col classico sacchetto in testa per un periodo di tempo imprecisato.
- Bug dell'apprendista stregone
- Quando un bug scatena una funzione che quando viene richiamata scatena un'infinità di volte lo stesso bug. Ricorsivamente.
- Bug della ragazza incazzata
- Quando gli effetti di un bug rimangono nascosti a lungo, facendoti pensare che vada tutto bene.
- Excalibur bug
- Quel mistico bug che quasi tutti gli sviluppatori dell'azienda han provato a risolvere senza riuscire nell'impresa.
Nuove Funzionalità
- L'unicorno
- Una funzionalità meravigliosa pianificata così presto da sembrare immaginifica.
- Abolizione delle provincie
- Una funzionalità che tutti vorremmo implementare ma che probabilmente non verrà mai approvata.
Fonti
Comments
Post a Comment