Refactoring for Novices in Java: An Eye Tracking Study on the Extract vs. Inline Methods

Uno studio con tracciamento oculare su 32 novizi Java rivela che, sebbene l'estrazione dei metodi migliori le prestazioni per compiti complessi, per attività semplici peggiora la comprensione aumentando il carico cognitivo e i tempi di esecuzione, suggerendo cautela nell'insegnamento della modularizzazione ai principianti.

José Aldo Silva da Costa, Rohit Gheyi, José Júnior Silva da Costa, Márcio Ribeiro, Rodrigo Bonifácio, Hyggo Almeida, Ana Carla Bibiano, Alessandro Garcia

Pubblicato 2026-03-06
📖 5 min di lettura🧠 Approfondimento

Each language version is independently generated for its own context, not a direct translation.

Ecco una spiegazione semplice e creativa di questo studio, pensata per chiunque, anche senza competenze tecniche.

🧠 Il Grande Esperimento: "Tutto in un blocco" vs "Spezzare in pezzi"

Immagina di dover spiegare a un amico come cucinare una ricetta complessa. Hai due modi per farlo:

  1. Il metodo "Tutto in un blocco" (Inline): Gli dici: "Prendi le uova, rompiglie, aggiungi la farina, mescola, metti in forno, aspetta 20 minuti, togli e servi". Tutto in una frase lunghissima.
  2. Il metodo "Spezzato in pezzi" (Extract Method): Gli dici: "Prepara l'impasto, poi inforna, poi servi". E poi, se lui chiede "Cosa intendi per 'prepara l'impasto'?", gli spieghi i dettagli in un secondo momento.

Gli esperti di programmazione dicono sempre: "Spezza il codice in piccoli pezzi con nomi chiari! È più ordinato e facile da capire!". Ma questa regola vale anche per i principianti?

Gli autori di questo studio hanno deciso di scoprirlo usando una tecnologia affascinante: l'Eye Tracking (il tracciamento oculare).

👁️ La Tecnologia: Cosa guardano gli occhi?

Invece di chiedere semplicemente "È stato facile?", hanno messo degli occhiali speciali (o una telecamera sotto lo schermo) che seguivano i movimenti degli occhi di 32 studenti principianti mentre leggevano del codice Java.

Hanno misurato tre cose fondamentali:

  • Il tempo: Quanto ci hanno messo a capire il codice.
  • I "rimbalzi" (Regressions): Quanti volte l'occhio tornava indietro per rileggere una riga (come quando leggi un libro e ti perdi, quindi torni indietro a rileggere la frase).
  • La fissazione: Quanto tempo l'occhio si è bloccato su una parola specifica (segno che il cervello stava faticando per capire).

🎭 La Scoperta Sorprendente: Non è sempre meglio "Spezzare"!

Il risultato è stato una grande sorpresa. L'idea che "spezzare il codice sia sempre meglio" è falsa per i principianti, e dipende dalla difficoltà del compito.

1. Quando "Spezzare" aiuta (Il caso del Fattoriale) 🧮

Immagina un compito complesso, come calcolare il fattoriale di un numero (una formula matematica con un ciclo ripetitivo).

  • Codice "Spezzato": Il principiante vede un nome chiaro come calcolaFattoriale(). Il suo cervello pensa: "Ah, ok, so cosa fa questo blocco!". Non deve rileggere tutto il codice.
  • Risultato: Gli occhi si muovono meno, tornano indietro meno spesso e il compito viene finito molto più velocemente (fino al 78% più veloce!).
  • Metafora: È come avere un indice in un libro. Se cerchi un capitolo, l'indice ti porta dritto al punto senza dover sfogliare tutto il volume.

2. Quando "Spezzare" danneggia (Il caso dell'Area del Quadrato) 🟦

Immagina un compito semplicissimo, come calcolare l'area di un quadrato (basta fare lato * lato).

  • Codice "Spezzato": Il codice dice calcolaAreaQuadrato(lato). Il principiante pensa: "Ok, ma cosa fa esattamente? Devo andare a vedere la definizione della funzione!".
  • Risultato: L'occhio deve saltare avanti e indietro tra la chiamata e la definizione. Si crea confusione. Il tempo di esecuzione aumenta del 166% e gli occhi tornano indietro il 200% in più rispetto al codice tutto in uno!
  • Metafora: È come se, per bere un bicchiere d'acqua, dovessi prima aprire un cassetto, prendere un bicchiere, andare al rubinetto, riempirlo e poi tornare a sederti. Per un compito così semplice, è uno spreco di energie! Meglio avere il bicchiere già in mano.

🗣️ Il Paradosso: "Mi piace, ma non funziona"

C'è un'altra parte interessante dello studio: hanno fatto un sondaggio ad altri 58 principianti.

  • Cosa dicevano: "Preferisco il codice spezzato! È più ordinato, più pulito, sembra più professionale".
  • Cosa facevano: Quando dovevano davvero risolvere il compito, il codice spezzato li ha rallentati nei casi semplici.

È come dire: "Mi piace la cucina moderna con i piatti separati, ma quando ho fame e voglio solo un panino, preferisco che tutto sia già assemblato nel mio piatto". I principianti pensano che la modularità sia meglio, ma il loro cervello fatica di più a navigarla quando il compito è banale.

💡 La Lezione per gli Insegnanti e i Genitori

Questo studio ci insegna una cosa fondamentale: non esiste una regola d'oro valida per tutto.

  • Se il compito è complesso (come un algoritmo di ricerca o una formula difficile): Spezzalo! Dai un nome chiaro al pezzo di codice. Aiuta il cervello a fare un "salto di qualità" e a non perdersi nei dettagli.
  • Se il compito è semplice (come una somma o un calcolo veloce): Lascialo tutto insieme! Non creare funzioni inutili che costringono il principiante a fare "salti mortali" con gli occhi per capire cosa sta succedendo.

🚀 Conclusione

Gli occhi non mentono. Per i principianti, la chiarezza non significa sempre "più pezzi". A volte, la semplicità sta nel vedere tutto il flusso in un unico posto, senza dover saltare avanti e indietro come un coniglio spaventato.

La prossima volta che un insegnante di programmazione dice "Rifattorizza il tuo codice!", il principiante dovrebbe chiedersi: "Sto semplificando la vita a chi legge, o sto solo costringendolo a fare un viaggio inutile?".