Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Ravioli Code

Spezzettare il codice in troppe classi, fino a non sapere più in che punto succede davvero qualcosa
Spezzettare il codice in troppe classi, fino a non sapere più in che punto succede davvero qualcosa
Link copiato negli appunti

L'antipattern "Ravioli Code" (codice a ravioli) è un problema inerente all'architettura delle classi e alla loro conseguente implementazione. L'espressione simbolo di chi sta per incorrere in questo antipattern è: "Divide et Impera."

Come per lo "Spaghetti Code" anche in questo caso l'analogia di una classe con un piatto di pasta è incredibilmente calzante, infatti come un raviolo è l'elemento che racchiude un qualche tipo ripieno, così una classe racchiude metodi e dati.

Ogni programmatore, dinanzi ad un particolare problema, applica una metodologia risolutiva dettata dalla propria esperienza o frutto di determinati studi.

Tra le più comuni e apprezzate c'è la filosofia del "divide et Impera", che fornisce un approccio ai problemi efficace e lineare. Questo procedimento viene spesso applicato alla scrittura di classi, data una classe con molti compiti da svolgere, si preferisce scinderla in classi più piccole con problemi più semplici e facili d'affrontare.

Tuttavia, in alcuni casi, l'eccesso di divisione può portare alla creazione di un numero eccessivo di classi. Le conseguenze posso essere veramente dannose, il risultato è un codice frammentato, confuso, difficile da comprendere e analizzare.

Cause

S'incorre in questo antipattern quando si sviluppano un numero eccessivo di classi fortemente legate tra loro tanto da somigliare ad una di ragnatela o meglio ancora ad un piatto di ravioli. Cause Le cause alla base di questo antipattern sono:

  • Errata architettura dei componenti
  • Convinzione che un numero maggiore di classi lavorino meglio e in modo più efficiente
  • Errata interpretazione del concetto di riuso del codice
  • Convinzione che sia più semplice la fase di testing

Sintomi

Gli elementi che permettono d'individuare questo antipattern sono:

  • Molte classi con nomi e metodi simili
  • Frequente richiamo tra le stesse classi
  • La modifica aggiornamento di una classe spesso comporta la modifica di molte altre
  • Crescita esponenziale ed indiscriminata del numero di classi

Conseguenze

Le conseguenze di tale antipattern sono:

  • Inutile spreco di risorse
  • Impossibilità di un riuso efficace del codice
  • Difficoltà di produrre la documentazione
  • Difficile avere una visione d'insieme delle funzionalità della classe

Soluzione

Per evitare d'incorrere in questo antipattern si possono adottare degli accorgimenti:

  • Analisi accurata dell'architettura delle classi
  • Fusione di più classi che hanno compiti simili o fortemente dipendenti tra di loro

Nota

È bene porre molta attenzione verso questo antipattern, la fase di "soluzione" è molto delicata: eccedere nella fusione di più classi può portare alla formazione di blob.

Questa osservazione è importante, perché ci permette di ribadire che agire sul codice per eliminare un antipattern richiede solide conoscenze e molta pazienza, poiché si rischia di rimuovere un problema introducendone un altro.


Ti consigliamo anche