Che cos'è Spaghetti Code e come evitarlo

Pubblicato: 2020-07-03

Anche se può essere una deliziosa cena italiana, una delle ultime cose che vuoi sentire riguardo al tuo codebase sono gli spaghetti . L'idea che il tuo codice sia ingarbugliato come un piatto di spaghetti è orribile, ma per molti sviluppatori l'idea è così astratta che non riescono a capirlo (oa capire come evitarlo o risolverlo). Ecco perché in questo post vogliamo tuffarci in cosa sia effettivamente il codice spaghetti, mostrarti alcune best practice per evitarlo e (quando succede) come affrontarlo.

Iscriviti al nostro canale Youtube

Cos'è il codice spaghetti?

Il codice degli spaghetti è un incubo, ecco cosa. Come abbiamo detto sopra, il termine slang prende il nome perché, come un gigantesco groviglio di spaghetti, se si tira su un filo (pezzo di codice), finisce per intrecciarsi in un altro e un altro e un altro, fino a quando non o tutti i pezzi aggrovigliati si rompono.

Ad esempio, pensa alla proprietà !important nei CSS. È incredibilmente potente, consentendo a un designer di sovrascrivere gli stili ereditati e di avere il controllo su qualsiasi elemento particolare senza dover ricodificare l'intero foglio di stile. Tuttavia, quando loro (o futuri sviluppatori e designer) devono modificare qualcos'altro, potrebbero aggiungere un altro tag !important per sovrascrivere quello precedente. E così via. Ma se dovessi tornare indietro e rimuovere o modificare qualcuno di quelli in quella pila, qualsiasi numero di stili sulla pagina potrebbe interrompersi.

Che è quello che stiamo cercando di evitare.

Best practice per evitare Spaghetti Code

1. Sviluppare standard di codifica

Il modo numero uno per prevenire il codice spaghetti è creare e codificare standard all'interno della tua organizzazione o progetto. Gli standard di codifica sono ciò che rende possibili progetti come WordPress. Migliaia di sviluppatori hanno lavorato su WP Core, ma gli standard di codifica di WordPress hanno fatto in modo che tutti lavorino secondo le stesse linee guida ed eseguano le attività all'interno degli stessi parametri allo stesso modo.

Gli standard di codifica sono solo regole che applichi. Mantengono il codice di tutti funzionante nello stesso schema in modo che gli errori siano facili da trovare e correggere e che i futuri sviluppatori (o anche tu o il tuo team attuale) possano sapere esattamente cosa fa ogni riga di codice nel modo più efficiente possibile. Se il codice di Susan non supera i test, non entra. Se il codice di Janine non ha test da eseguire, la richiesta pull viene negata. Forse Daniel non usa div nella sua richiesta pull più recente. Nessuna fusione finché le cose non sono divise.

Inoltre, alcune delle basi di codice originali afflitte dal codice spaghetti erano linguaggi più vecchi senza logica funzionale. Il codice non era basato sulla funzione e, pertanto, varie logiche erano dirette a righe specifiche all'interno del codice. Con piccoli progetti, questo non è male da navigare. Quando inizi a ridimensionare i progetti, avere riferimenti diretti a file e righe di codice specifici può ostacolare tale sviluppo. I file possono scomparire, le righe possono essere cancellate o numerate erroneamente. E il debugging per scoprire quale filo di spaghetti è stato tirato può richiedere centinaia di ore-persona. Avere standard di codifica può impedire che questo tipo di disordine si verifichi altrettanto spesso.

Quindi, sviluppando degli standard, hai ridotto in modo molto efficace le possibilità di avere un repository di codice spaghetti. Se vuoi saperne di più sugli standard di codifica in generale, GeeksforGeeks ha un'ottima guida.

2. Segui una guida di stile

Oltre agli standard di codifica, avere una guida di stile da seguire può anche evitare che il tuo codice diventi troppo ingarbugliato. Anche se in teoria può sembrare simile, i due sono molto diversi. Gli standard di codifica sono presenti come regole applicabili che i tuoi sviluppatori seguono per mantenere il codice funzionante in modo efficiente. Questi possono cambiare da progetto a progetto o da team a team all'interno di un'organizzazione.

Una guida di stile, tuttavia, è generalmente scritta lingua per lingua, fornendo una serie di best practice per rendere il codice leggibile e funzionale. Ad esempio, Airbnb ha creato una delle migliori guide di stile per React.js in circolazione. Se non sei uno sviluppatore di React, non significa quasi nulla. Ma per gli sviluppatori di React, guardare questo può dare un vero aiuto nel modo in cui il tuo codice dovrebbe essere strutturato e scritto per renderlo il più accessibile possibile ai futuri sviluppatori per ordinarlo.

Una guida di stile, in contrasto con gli standard di codifica generali, non sono necessariamente regole applicabili. Sono suggerimenti per rendere il codice più uniforme, il che rende il codice più facile da leggere. Il che impedisce il codice spaghetti perché sai esattamente quale filo stai tirando in un dato momento.

3. Commenta il tuo codice

I commenti sul codice sono forse il modo più semplice per evitare che i tuoi repository si riempiano di codice spaghetti. Quando scrivi qualcosa, crea un commento su ciò che fa. Se si tratta di una funzione o di uno snippet complicato, spiega cosa fa la logica e perché è importante.

Tuttavia, ti imbatti in un paio di problemi che si basano sui commenti del codice per evitare problemi. Il primo è che aggiunge molto tempo extra ai progetti. Quando stai cercando di rispettare una scadenza o di assicurarti che una funzione funzioni correttamente, non è sempre prioritario scrivere una spiegazione dettagliata al riguardo. E se inizi a commentare e cadi a metà progetto o il prossimo sviluppatore non continua? Questo è un grande piatto di spaghetti.

Altri sono sopraffatti dall'idea di commentare il loro codice - o imparare a commentare il loro codice se non l'hanno fatto prima - a causa del volume che sviluppano. Il che è del tutto valido. Ma anche se commenti occasionalmente su righe o frammenti importanti (o addirittura precari), risparmierai a qualcuno, potenzialmente a te stesso, la fatica di tirarlo fuori in passato, cercando di capire cosa fa.

Avvolgendo

Il codice degli spaghetti è un incubo, lo ripeto. Trascorrere innumerevoli ore cercando di capire quale riga di codice è stata modificata in un gigantesco repository è una delle parti peggiori dell'essere uno sviluppatore. Il debug va bene (ish). Il debug e non sapere da dove cominciare o cosa sta causando il problema anche da remoto non lo è. Ma se il tuo team imposta gli standard di codifica, segue una guida allo stile del linguaggio e ha anche una politica di commento del codice minore, c'è un'alta probabilità che il tuo piatto di spaghetti digitale sia molto meno ingarbugliato di quanto lo sarebbe altrimenti.

Cosa fare per prevenire il codice spaghetti?

Immagine in primo piano dell'articolo di Donnay Style / shutterstock.com