2025-11-23T09:49:16.774551

Readability and Understandability of Snippets Recommended by General-purpose Web Search Engines: a Comparative Study

Dantas, Maia
Developers often search for reusable code snippets on general-purpose web search engines like Google, Yahoo! or Microsoft Bing. But some of these code snippets may have poor quality in terms of readability or understandability. In this paper, we propose an empirical analysis to analyze the readability and understandability score from snippets extracted from the web using three independent variables: ranking, general-purpose web search engine, and recommended site. We collected the top-5 recommended sites and their respective code snippet recommendations using Google, Yahoo!, and Bing for 9,480 queries, and evaluate their readability and understandability scores. We found that some recommended sites have significantly better readability and understandability scores than others. The better-ranked code snippet is not necessarily more readable or understandable than a lower-ranked code snippet for all general-purpose web search engines. Moreover, considering the readability score, Google has better-ranked code snippets compared to Yahoo! or Microsoft Bing
academic

Leggibilità e Comprensibilità dei Frammenti di Codice Consigliati dai Motori di Ricerca Web Generici: uno Studio Comparativo

Informazioni di Base

  • ID Articolo: 2110.07087
  • Titolo: Readability and Understandability of Snippets Recommended by General-purpose Web Search Engines: a Comparative Study
  • Autori: Carlos Eduardo C. Dantas, Marcelo A. Maia
  • Classificazione: cs.SE (Software Engineering)
  • Data di Pubblicazione/Conferenza: AeSIR '21, 15–11 novembre 2021
  • Link Articolo: https://arxiv.org/abs/2110.07087

Riassunto

Gli sviluppatori cercano frequentemente frammenti di codice riutilizzabili su motori di ricerca generici come Google, Yahoo! o Microsoft Bing. Tuttavia, questi frammenti di codice potrebbero avere una qualità inferiore in termini di leggibilità o comprensibilità. Questo articolo presenta un'analisi empirica che utilizza tre variabili indipendenti (ranking, motore di ricerca generico e sito web consigliato) per analizzare i punteggi di leggibilità e comprensibilità dei frammenti di codice estratti dal web. Lo studio ha raccolto i primi 5 siti web consigliati da Google, Yahoo! e Bing per 9.480 query e i corrispondenti frammenti di codice consigliati, valutandone i punteggi di leggibilità e comprensibilità. Lo studio ha rilevato che alcuni siti web consigliati hanno punteggi di leggibilità e comprensibilità significativamente superiori rispetto ad altri. I frammenti di codice con ranking più alto non sono necessariamente più leggibili o comprensibili rispetto a quelli con ranking più basso su tutti i motori di ricerca generici. Inoltre, in termini di punteggi di leggibilità, Google ha un ranking migliore dei frammenti di codice rispetto a Yahoo! o Microsoft Bing.

Contesto di Ricerca e Motivazione

Definizione del Problema

  1. Problema Centrale: I frammenti di codice consigliati dai motori di ricerca generici presentano variazioni di qualità in termini di leggibilità e comprensibilità, e i frammenti con ranking più alto non hanno necessariamente una qualità superiore
  2. Esigenza Pratica: Gli sviluppatori utilizzano ampiamente i motori di ricerca generici per trovare esempi di codice, ma manca una valutazione sistematica della qualità di questi frammenti
  3. Limitazioni dei Motori di Ricerca: Sebbene Google utilizzi oltre 200 fattori di ranking, le pagine con ranking più alto potrebbero contenere esempi di codice di qualità inferiore

Importanza della Ricerca

  • Il riutilizzo di frammenti di codice può ridurre il tempo delle attività di programmazione e accelerare il processo di sviluppo
  • Google possiede oltre il 90% della quota di mercato dei motori di ricerca, ma la qualità del ranking del codice su altri motori di ricerca rimane sconosciuta
  • È necessario comprendere la relazione reciproca tra leggibilità e comprensibilità: la leggibilità è associata alla comprensione sintattica, mentre la comprensibilità è associata agli aspetti semantici

Esempio di Motivazione

L'articolo cita un caso di studio di Hora: quando si cerca "File.mkdirs examples" su Google, il frammento di codice di Tutorialspoint, sebbene abbia indicatori di leggibilità e riutilizzabilità inferiori, ha un ranking più alto perché contiene spiegazioni in linguaggio naturale simili alla query.

Contributi Principali

  1. Primo Studio Comparativo Sistematico: Analisi comparativa su larga scala della leggibilità e comprensibilità dei frammenti di codice consigliati da tre principali motori di ricerca: Google, Yahoo! e Microsoft Bing
  2. Costruzione di Dataset su Larga Scala: Raccolta di 47.400 link web da 9.480 query, coprendo 5.355 siti web diversi
  3. Framework di Analisi Multidimensionale: Proposta di un metodo di analisi basato su tre variabili indipendenti: ranking, motore di ricerca e sito web consigliato
  4. Risultati Empirici: Conferma di due importanti ipotesi: i frammenti di codice con ranking più alto non hanno necessariamente leggibilità/comprensibilità superiore; esiste una variazione significativa della qualità del codice tra i diversi siti web consigliati
  5. Standardizzazione della Metrica di Comprensibilità: Proposta di un metodo standardizzato per convertire la complessità cognitiva nell'intervallo 0,1

Spiegazione Dettagliata del Metodo

Definizione del Compito

Input: Dichiarazioni di query correlate alla programmazione Output: Punteggi di leggibilità e comprensibilità dei frammenti di codice Vincoli: Analisi solo di frammenti di codice Java, considerando i primi 5 risultati di ricerca

Architettura del Disegno di Ricerca

La ricerca adotta un metodo a cinque fasi:

  1. Selezione delle Query di Input: Raccolta di 10.000 query utente dallo strumento CROKAGE
  2. Raccolta dei Primi n Siti Web: Ottenimento dei primi 5 siti web consigliati da Google, Yahoo! e Bing
  3. Estrazione dei Frammenti di Codice: Estrazione dei frammenti di codice Java dai siti selezionati
  4. Calcolo delle Metriche: Calcolo dei punteggi di leggibilità e comprensibilità
  5. Metodo di Analisi: Utilizzo di test ANOVA e Tukey per l'analisi statistica

Implementazione Tecnica Chiave

Strategia di Raccolta Dati

Metodo di Estrazione del Codice

  • StackOverflow: Estrazione dei frammenti di codice Java dalle risposte accettate
  • Altri Siti Web: Utilizzo di espressioni regolari per cercare il codice sorgente nei tag HTML contenenti "example" e "Java"

Indicatori di Valutazione

Misura di Leggibilità:

  • Utilizzo del modello predittivo proposto da Scalabrino et al.
  • Include indicatori come commenti, coerenza degli identificatori, coerenza del testo, quantità di significato e concetti
  • Intervallo di output: 0,1, dove 0 indica bassa leggibilità e 1 indica alta leggibilità

Misura di Comprensibilità:

  • Basata sulla complessità cognitiva proposta da Campbell
  • Formula di standardizzazione:
understandability(cs_i) = {
    1 - #cc/#mcc  if #cc < 15
    0.0           otherwise
}

dove #cc è il valore di complessità cognitiva e #mcc=15 è il valore massimo consigliato

Configurazione Sperimentale

Dettagli del Dataset

  • Fonte delle Query: Query utente dallo strumento CROKAGE, provenienti da oltre 80 paesi
  • Scala dei Dati: 9.480 query valide, 47.400 link web
  • Copertura del Sito Web: 5.355 siti web diversi
  • Limitazione Linguistica: Solo linguaggio di programmazione Java

Metodo di Valutazione

  • Analisi Statistica: Utilizzo dell'analisi della varianza (ANOVA), livello di confidenza 5% (p-value<0.05)
  • Confronto Multiplo: Utilizzo del test di Tukey per identificare differenze significative tra i gruppi
  • Disegno dei Gruppi:
    • Motore di Ricerca: 3 gruppi (Google, Bing, Yahoo!)
    • Ranking: 5 gruppi (da top-1 a top-5)
    • Sito Web: 5 gruppi (5 siti web selezionati)

Preelaborazione dei Dati

  • Rimozione delle query duplicate e di quelle contrassegnate manualmente come non applicabili
  • Filtraggio delle query con meno di 5 siti web consigliati
  • Utilizzo di espressioni regolari per estrarre i link dai tag HTML

Risultati Sperimentali

Risultati Principali

RQ1: Relazione tra Ranking del Motore di Ricerca e Qualità del Codice

  • Risultato ANOVA: p-value leggibilità=0.0034, p-value comprensibilità=0.0003
  • Risultato Chiave: I frammenti di codice Top-2 hanno nel complesso leggibilità e comprensibilità superiori rispetto a Top-1, Top-4 e Top-5
  • Dimensione dell'Effetto: Piccola (-0.02 a 0.01 leggibilità, -0.01 a 0.02 comprensibilità)
  • Conclusione: Conferma dell'ipotesi H1, i frammenti di codice con ranking più alto non hanno necessariamente leggibilità o comprensibilità superiore

RQ2: Confronto tra Motori di Ricerca

  • Risultato ANOVA: p-value leggibilità=1.207e-12, p-value comprensibilità=0.0364
  • Ordine di Leggibilità: Google > Microsoft Bing > Yahoo!
  • Comprensibilità: Google leggermente superiore a Microsoft Bing
  • Dimensione dell'Effetto: Piccolo effetto (-0.02 a 0.02 leggibilità, -0.01 a 0.005 comprensibilità)

RQ3: Confronto tra Siti Web Consigliati

  • Risultato ANOVA: p-value leggibilità e comprensibilità entrambi <2.2e-16
  • Migliore Leggibilità: geeksforgeeks
  • Migliore Comprensibilità: tutorialspoint
  • Dimensione dell'Effetto: Effetto medio leggibilità (-0.15 a 0.10), piccolo effetto comprensibilità (-0.04 a 0.08)

Risultati di Analisi Dettagliata

Analisi della Leggibilità

Motivi della migliore performance di GeeksforGeeks:

  • Ogni riga di codice è accompagnata da un commento
  • Alta coesione, ogni concetto è indipendente
  • Esempio: query "How to append to a string?"
    • GeeksforGeeks: punteggio leggibilità 0.94
    • Tutorialspoint: punteggio leggibilità 0.44

Limitazioni dell'Analisi della Comprensibilità

  • Il 58,3% dei frammenti di codice raggiunge il punteggio massimo di comprensibilità
  • La maggior parte dei frammenti di codice sono semplici chiamate API, mancano di strutture di controllo complesse
  • Si consiglia che questa metrica sia più adatta a file di tipo repository Git completo

Lavori Correlati

Ricerca sulla Leggibilità del Codice

  • Hora (2021): Ricerca su come Google classifica i frammenti di codice in base alle caratteristiche di leggibilità e riutilizzabilità
  • Scalabrino et al.: Proposta di un modello predittivo di leggibilità del codice
  • Buse e Weimer: Apprendimento delle metriche di leggibilità del codice

Ricerca e Raccomandazione di Codice

  • Strumento API Sonar: Utilizzo di caratteristiche di leggibilità per classificare i frammenti di codice
  • Metodo Muse: Utilizzo di caratteristiche di leggibilità per classificare gli esempi di codice
  • CROKAGE: Motore di ricerca di codice che estrae frammenti di codice e spiegazioni da StackOverflow

Valutazione della Qualità del Codice

  • Treude e Robillard: Scoperta che solo il 49% dei frammenti di codice di StackOverflow sono completamente auto-esplicativi
  • Complessità Cognitiva: Metodo di misurazione della comprensibilità proposto da Campbell

Conclusioni e Discussione

Conclusioni Principali

  1. Paradosso del Ranking: Il ranking del motore di ricerca non è completamente correlato alla qualità del codice, i frammenti Top-2 e Top-3 potrebbero avere una qualità superiore
  2. Differenze tra Motori di Ricerca: Google ha le migliori prestazioni in termini di leggibilità, ma il vantaggio è limitato
  3. Differenziazione della Qualità del Sito Web: Esiste una variazione significativa della qualità tra i diversi siti web consigliati, i siti di tutorial (GeeksforGeeks) hanno una leggibilità superiore
  4. Limitazioni della Comprensibilità: La metrica di comprensibilità attuale ha una capacità di discriminazione limitata per frammenti di codice semplici

Significato Pratico

  • Guida per gli Sviluppatori: Si consiglia di dare priorità ai frammenti di codice da siti di tutorial come GeeksforGeeks
  • Strategia di Ricerca: Non si dovrebbe fare affidamento solo sul ranking per selezionare i frammenti di codice, è necessario considerare complessivamente le metriche di qualità
  • Miglioramento degli Strumenti: Fornire standard di riferimento per la valutazione della qualità ai motori di ricerca di codice

Limitazioni

  1. Copertura del Sito Web Limitata: Analisi di soli 5 siti web, che rappresentano il 34%-38,1% dei siti web consigliati
  2. Strategia di Estrazione: Estrazione di un solo frammento di codice per pagina web
  3. Impatto della Modifica della Query: L'aggiunta di "example in java" potrebbe influenzare i risultati della ricerca
  4. Precisione della Metrica: Gli strumenti di leggibilità e comprensibilità potrebbero contenere errori

Direzioni Future

  1. Ricerca Qualitativa: Comprensione approfondita delle ragioni delle differenze nei punteggi di leggibilità e comprensibilità
  2. Ricerca Estesa: Inclusione di più siti web o sviluppo di metodi di estrazione del codice universali
  3. Supporto Multilingue: Estensione ad altri linguaggi di programmazione
  4. Gestione di Più Frammenti di Codice: Sviluppo di metodi euristici per gestire più frammenti di codice su una singola pagina

Valutazione Approfondita

Punti di Forza

  1. Novità della Ricerca: Primo studio comparativo sistematico della qualità dei frammenti di codice dei principali motori di ricerca
  2. Scala dei Dati: Ricerca empirica su larga scala, volume di dati sufficiente, conclusioni affidabili
  3. Rigore del Metodo: Utilizzo di metodi di analisi statistica consolidati, risultati statisticamente significativi
  4. Valore Pratico: Fornisce guida empirica agli sviluppatori nella selezione dei frammenti di codice
  5. Riproducibilità: Fornisce pacchetto completo di riproduzione e descrizione dettagliata del metodo

Carenze

  1. Limitazioni della Metrica: La metrica di comprensibilità ha capacità di discriminazione insufficiente per frammenti di codice semplici
  2. Bias nella Selezione del Sito Web: Analisi di soli 5 siti web principali, potrebbe esistere bias di selezione
  3. Limitazione Linguistica: Considerazione solo del linguaggio Java, generalizzabilità limitata
  4. Tempestività: I risultati della ricerca hanno tempestività, le conclusioni potrebbero cambiare nel tempo

Impatto

  1. Contributo Accademico: Fornisce nuova prospettiva per la ricerca sulla ricerca di codice e l'ingegneria del software
  2. Guida Pratica: Influenza direttamente il comportamento di ricerca del codice degli sviluppatori
  3. Miglioramento degli Strumenti: Fornisce base per l'ottimizzazione degli algoritmi di ranking dei motori di ricerca e dei sistemi di raccomandazione del codice
  4. Ricerca Successiva: Pone le basi per la ricerca in campi correlati

Scenari Applicabili

  • Valutazione della qualità della ricerca di codice per gli sviluppatori di software
  • Ottimizzazione degli algoritmi di ranking dei motori di ricerca di codice
  • Controllo della qualità degli esempi di codice nell'educazione alla programmazione
  • Analisi della qualità del codice nella ricerca di ingegneria del software

Bibliografia

L'articolo cita 23 articoli correlati, principalmente includenti:

  • Metodi di misurazione della leggibilità e comprensibilità del codice
  • Ricerca su sistemi di ricerca e raccomandazione di codice
  • Analisi della qualità del codice di StackOverflow
  • Ricerca sui meccanismi di ranking dei motori di ricerca

Valutazione Complessiva: Questo è un articolo di ricerca empirica di alta qualità nell'ingegneria del software, che colma il vuoto nella ricerca sulla valutazione della qualità della ricerca di codice, con importante valore teorico e pratico. Il metodo di ricerca è scientificamente rigoroso, la scala dei dati è sufficiente, l'affidabilità delle conclusioni è elevata, fornendo intuizioni preziose per sviluppatori e ricercatori.