Ah, gli spaghetti, deliziosi quando sono conditi con salsa marinara, pesto o salsa cremosa, ma terribili quando hanno a che fare con le mie righe di codice. Questo articolo è dedicato al mio rapporto di amore-odio con il codice spaghetti.

Spero che alla fine dell'articolo odierete il codice spaghetti tanto quanto me e che potremo trovare conforto nella nostra esperienza condivisa. Se così non fosse, spero almeno che abbiate imparato qualcosa o che vi siate almeno fatti una risata!

In questa storia di amore-odio con lo Spaghetti Code...

Allora cominciamo, cos'è il codice spaghetti 🙄?

È ciò che accade quando si scrive codice che non segue le buone pratiche di sviluppo software. Alla fine di questo articolo, spero che sarà chiaro cosa sia il codice spaghetti, o almeno come si presenta (e cosa non fare).

Il significato formale di codice spaghetti è ciò che accade quando si hanno quelle che vengono chiamate dipendenze profonde o ampie. Con questo intendo dire che il codice dipende da troppe o troppo poche parti dell'applicazione per funzionare correttamente.

Ma esistono molte idee diverse su cosa sia il codice spaghetti. Credo che la mia definizione preferita sia quella di Alex Martelli: "Il codice spaghetti è ciò che si ottiene quando non si rispettano le regole di una corretta decomposizione top-down".

Per chi non ha familiarità con il termine "top-down", cito Wikipedia: "Il design top-down, noto anche come design gerarchico, inizia con la definizione di moduli di alto livello e successivamente di sottomoduli di livello inferiore fino alla definizione delle singole routine".

Ciò significa che un pezzo di spaghetti ideale passerà da ciò che è attualmente scritto a ciò che il codice dovrebbe fare, seguendo questi passaggi:

1) Identifica la funzione di questo pezzo di spaghetti.

2) Se ciò che fa attualmente non è ciò che dovrebbe fare, riscrivilo in modo che faccia ciò che deve fare (questa fase può essere suddivisa in ciò che vuoi che il tuo codice faccia).

3) Scrivi il codice.

4) Ripeti fino a quando tutti gli spaghetti sono stati sostituiti con un codice non spaghetti.

Tuttavia, il più delle volte, le persone semplicemente saltano questi punti 3 e 4 e passano direttamente al punto 2 o 1 (di solito 1), per poi iniziare a programmare come scienziati pazzi senza alcuna attenzione alle pratiche di codice pulito. Qualche mese dopo si ritrovano con quello che viene comunemente definito codice spaghetti.

Come identificare il codice spaghetti?

In primo luogo, se il tuo codice sembra un pasticcio difficile da seguire, questo è probabilmente il primo indizio. Per i codici spaghetti più difficili da identificare, ecco alcuni altri indizi:

  • Se modificare il codice o eliminare i bug ti causa un'immensa frustrazione, è probabile che si tratti di codice spaghetti.
  • Se nessuno sviluppatore vuole lavorare con te su un determinato progetto o vuole esaminare la tua richiesta di PR, è probabile che si tratti di codice spaghetti.
  • Se il tuo manager ha sfoghi di rabbia casuali nei tuoi confronti, è probabile che tu scriva molto codice spaghetti.

Non preoccuparti se uno di questi esempi ti riguarda, ciò che conta è come ritieni che sia il tuo codice spaghetti: probabilmente quello che ora ti sembra brutto ti sembrerà ancora peggiore dopo aver letto questo articolo.

Allora, che aspetto ha il codice spaghetti?

Dipende dal linguaggio di programmazione utilizzato e dal framework/dalle librerie impiegate. Qui vi mostrerò un esempio di codice spaghetti scritto in JavaScript utilizzando jQuery:

funzione KFCSecretMenu() { //costruttore

this.getKrushers = function() {

} } $(document).ready(function(){ //event listener for DOM Ready $(‘.welcome’).click(function (){ //event listener for click on element with class name of welcome $(‘.menu-item’).addClass(‘active’); //class to be added if the submenu is opened.

$(‘.menu-item’).find(‘.description’).slideDown(); //sliding down effect for description text }) }); function MenuItemClicked (e) { var itemID = $(e.target).parent().attr(‘id’); //gets ID of parent menu item var description = $(e.target).next().text() KFCSecretMenu.getKrushers({‘itemID’:itemID,’description’:description}); //calling function below }

Seguendo? No, sono proprio spaghetti! 🕵️

Vedremo cosa rende questo codice spaghetti così pessimo, cosa lo rende più spaghettoso di altri e cosa puoi fare per risolverlo. Cosa rende il codice spaghetti così pessimo? Penso che questo sia l'elenco più utile di ciò che rende il codice spaghetti quello che è: Funzioni, metodi e variabili duplicati o eccessivamente complessi Strutture difficili da seguire e/o non indentate Funzioni difficili da seguire e/o lunghe Spazi bianchi difficili da leggere Logica difficile da seguire Mancanza di commenti Stili di codifica insoliti (troppo elaborati) Nomi di variabili appropriati.

Ci sono anche altre cose che renderanno il tuo codice un vero disastro, ma che non sono necessariamente da considerarsi codice spaghetti: algoritmi inefficienti, file di grandi dimensioni, software mal progettato, mancanza di test. Il codice spaghetti appare diverso in ogni linguaggio, framework e libreria utilizzati: ciò che può essere considerato spaghetti in uno, potrebbe non esserlo in un altro. Questo è ciò che rende difficile definire l'aspetto del codice spaghetti. Quello che devi fare è ripensare a quello che sarebbe stato codice spaghetti per te qualche anno fa: quali erano i problemi più grandi del tuo codice? Probabilmente hai commesso alcuni degli errori elencati sopra, quindi inizia a confrontare ciò che non andava bene in quei pezzi di codice passati e cerca di tenere a mente quell'elenco mentre leggi questo articolo.

Quindi, hai identificato il tuo codice spaghetti, ma come gestirlo?

Alcune cose importanti da tenere a mente prima di iniziare a discutere su come trasformare il nostro pezzo di spaghetti... ehm, intendo dire codice, in quello che dovrebbe essere:

Nota 1: Esistono centinaia (forse migliaia) di modi per NON scrivere il proprio codice. Sto cercando di rendere il tutto il più semplice possibile, il contesto di ciò che sto scrivendo qui è rivolto a coloro che hanno una conoscenza di base su come scrivere codice. Rimarrete sorpresi da ciò che potete ottenere semplicemente aggiungendo alcuni spazi bianchi e commenti!

Nota 2: È fondamentale comprendere bene cosa si sta facendo prima di provare a correggere da soli il codice spaghetti, altrimenti si rischia solo di peggiorare la situazione! In caso contrario, rileggi questo articolo fino a quando non avrai compreso bene, poi torna qui.

Nota 3: Stiamo cercando di capire cosa rende i tuoi spaghetti disordinati in questo momento, ma non stiamo cercando di capire cosa potrebbe averlo causato in primo luogo (e quindi dovremmo pensarci due volte prima di aprire il nostro editor).

Quali sono i vantaggi del codice spaghetti?

Niente. Prossimo punto!

Come prevenire il codice spaghetti in futuro?

Oltre a trasferirti in Italia e farti picchiare sulla testa da un italiano molto arrabbiato con un piatto di spaghetti crudi ogni volta che scrivi una riga di codice sporco, potresti provare queste cose...

  • Un buon modo per evitare il codice spaghetti è quello di mantenere brevi le funzioni e i metodi. Ciò significa che una funzione dovrebbe fare solo ciò che deve fare, non c'è bisogno di una funzione che faccia 10 cose diverse o che abbia 100 righe: rimuovete ciò che non è necessario!
  • Un altro consiglio per evitare il codice spaghetti è quello di evitare di modificare ciò che è già stato fatto: ciò che intendo dire è che dovresti cercare di non avere un'imbricazione profonda di cicli all'interno di altri cicli, o in altre parole: non imbricare ciò che non ha bisogno di essere imbricato!
  • Non dimenticare nemmeno la formattazione del codice: gli spazi bianchi e le indentazioni possono fare miracoli per il codice spaghetti! Più il codice è ben strutturato, più sarà facile da leggere.
  • Retros – rivedi sempre ciò che è andato bene in modo da poterlo monitorare e implementarlo la prossima volta!
  • In alternativa, potresti migliorare le tue capacità di programmazione.
  • Un ultimo consiglio quando pianifichi come vuoi che sia il tuo codice spaghetti: prova a disegnare dei grafici di ciò che vuoi che faccia invece di scrivere direttamente il codice nell'editor (cioè, guarda cosa deve fare ogni funzione prima di implementarla). Se qualcosa va storto, fai un passo indietro e ricomincia da capo.

Se segui queste semplici regole, posso quasi garantirti che quello che stai scrivendo non si trasformerà in spaghetti – ma che ne so io? Forse quello che tua zia chiamava spaghetti è in realtà codice spaghetti sotto mentite spoglie.

Considerazioni finali sul codice spaghetti

Potresti anche provare ad abbracciare i tuoi spaghetti, amarli come unica fonte di gioia nella tua vita! Se questo non funziona, c'è questa eccellente GIF che simula l'alternativa.

Meme Dev su compiti e riunioni degli ingegneri: revisione dello sprint backlog

Se tutto il resto fallisce, potresti semplicemente migliorare le tue capacità di programmazione. Ma, seriamente, quella dovrebbe essere l'ultima, ultima, ultima, ultima cosa che dovresti fare!