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

Lisibilité et Compréhensibilité des Extraits Recommandés par les Moteurs de Recherche Web Généralistes : une Étude Comparative

Informations Fondamentales

  • ID de l'article: 2110.07087
  • Titre: Readability and Understandability of Snippets Recommended by General-purpose Web Search Engines: a Comparative Study
  • Auteurs: Carlos Eduardo C. Dantas, Marcelo A. Maia
  • Classification: cs.SE (Ingénierie Logicielle)
  • Date de publication/Conférence: AeSIR '21, 15–11 novembre 2021
  • Lien de l'article: https://arxiv.org/abs/2110.07087

Résumé

Les développeurs recherchent fréquemment des extraits de code réutilisables sur des moteurs de recherche généralistes tels que Google, Yahoo! ou Microsoft Bing. Cependant, ces extraits de code peuvent présenter une qualité médiocre en termes de lisibilité ou de compréhensibilité. Cet article propose une analyse empirique utilisant trois variables indépendantes (classement, moteur de recherche généraliste et site web recommandé) pour analyser les scores de lisibilité et de compréhensibilité des extraits de code extraits du web. L'étude a collecté les 5 premiers sites web recommandés par Google, Yahoo! et Bing pour 9 480 requêtes ainsi que leurs extraits de code correspondants, et a évalué leurs scores de lisibilité et de compréhensibilité. L'étude révèle que certains sites web recommandés surpassent significativement les autres en termes de scores de lisibilité et de compréhensibilité. Les extraits de code mieux classés ne sont pas nécessairement plus lisibles ou compréhensibles que ceux moins bien classés sur tous les moteurs de recherche généralistes. De plus, en matière de scores de lisibilité, Google offre un meilleur classement des extraits de code que Yahoo! ou Microsoft Bing.

Contexte et Motivation de la Recherche

Définition du Problème

  1. Problème central: Les extraits de code recommandés par les moteurs de recherche généralistes présentent des variations de qualité en termes de lisibilité et de compréhensibilité, et les extraits mieux classés ne sont pas nécessairement de meilleure qualité
  2. Besoin pratique: Les développeurs utilisent largement les moteurs de recherche généralistes pour trouver des exemples de code, mais il manque une évaluation systématique de la qualité de ces extraits
  3. Limitations des moteurs de recherche: Bien que Google dispose de plus de 200 facteurs de classement, les pages mieux classées peuvent contenir des exemples de code de qualité médiocre

Importance de la Recherche

  • La réutilisation d'extraits de code peut réduire le temps des tâches de programmation et accélérer le processus de développement
  • Google détient plus de 90% de la part de marché des moteurs de recherche, mais la qualité du classement des codes sur les autres moteurs de recherche reste inconnue
  • Il est nécessaire de comprendre la relation mutuelle entre lisibilité et compréhensibilité : la lisibilité est associée à la compréhension syntaxique, tandis que la compréhensibilité concerne les aspects sémantiques

Exemple de Motivation

L'article cite un cas d'étude de Hora : lors de la recherche « File.mkdirs examples » sur Google, l'extrait de code de Tutorialspoint, bien que présentant des indicateurs de lisibilité et de réutilisabilité médiocres, est mieux classé en raison de l'inclusion d'explications en langage naturel similaires à la requête.

Contributions Principales

  1. Première étude comparative systématique: Analyse comparative à grande échelle de la lisibilité et de la compréhensibilité des extraits de code recommandés par trois grands moteurs de recherche : Google, Yahoo! et Microsoft Bing
  2. Construction d'un ensemble de données à grande échelle: Collecte de 47 400 liens web pour 9 480 requêtes, couvrant 5 355 sites web distincts
  3. Cadre d'analyse multidimensionnel: Proposition d'une méthode d'analyse basée sur trois variables indépendantes : classement, moteur de recherche et site web recommandé
  4. Découvertes empiriques: Confirmation de deux hypothèses importantes : les extraits de code mieux classés ne possèdent pas nécessairement une lisibilité/compréhensibilité supérieure ; il existe des différences significatives de qualité de code entre les sites web recommandés
  5. Standardisation des mesures de compréhensibilité: Proposition d'une méthode de normalisation convertissant la complexité cognitive en intervalle 0,1

Explication Détaillée de la Méthodologie

Définition de la Tâche

Entrée: Requêtes liées à la programmation Sortie: Scores de lisibilité et de compréhensibilité des extraits de code Contraintes: Analyse uniquement des extraits de code Java, considération des 5 premiers résultats de recherche

Architecture de la Conception de la Recherche

L'étude adopte une approche en cinq étapes :

  1. Sélection des requêtes d'entrée: Collecte de 10 000 requêtes utilisateur à partir de l'outil CROKAGE
  2. Collecte des n premières pages web: Obtention des 5 premières pages web recommandées par Google, Yahoo! et Bing
  3. Extraction des extraits de code: Extraction des extraits de code Java à partir des sites sélectionnés
  4. Calcul des indicateurs: Calcul des scores de lisibilité et de compréhensibilité
  5. Méthode d'analyse: Utilisation de l'ANOVA et du test de Tukey pour l'analyse statistique

Implémentation Technique Clé

Stratégie de Collecte de Données

Méthode d'Extraction de Code

  • StackOverflow: Extraction des extraits de code Java des réponses acceptées
  • Autres sites web: Utilisation d'expressions régulières pour rechercher le code source dans les balises HTML contenant « example » et « Java »

Indicateurs d'Évaluation

Mesure de lisibilité:

  • Utilisation du modèle prédictif proposé par Scalabrino et al.
  • Inclusion d'indicateurs tels que les commentaires, la cohérence des identificateurs, la cohérence textuelle, la quantité de significations et les concepts
  • Plage de sortie : 0,1, où 0 indique une faible lisibilité et 1 une lisibilité élevée

Mesure de compréhensibilité:

  • Basée sur la complexité cognitive proposée par Campbell
  • Formule de normalisation :
understandability(cs_i) = {
    1 - #cc/#mcc  si #cc < 15
    0.0           sinon
}

où #cc est la valeur de complexité cognitive et #mcc=15 est la valeur maximale recommandée

Configuration Expérimentale

Détails de l'Ensemble de Données

  • Source des requêtes: Requêtes utilisateur de l'outil CROKAGE, provenant de plus de 80 pays
  • Échelle des données: 9 480 requêtes valides, 47 400 liens web
  • Couverture des sites web: 5 355 sites web distincts
  • Restriction linguistique: Langage de programmation Java uniquement

Méthode d'Évaluation

  • Analyse statistique: Utilisation de l'analyse de variance (ANOVA), niveau de confiance 5% (p-value<0,05)
  • Comparaisons multiples: Utilisation du test de Tukey pour identifier les différences significatives entre les groupes
  • Conception des groupes:
    • Moteurs de recherche : 3 groupes (Google, Bing, Yahoo!)
    • Classement : 5 groupes (top-1 à top-5)
    • Sites web : 5 groupes (5 sites sélectionnés)

Prétraitement des Données

  • Suppression des requêtes dupliquées et de celles marquées manuellement comme non applicables
  • Filtrage des requêtes avec moins de 5 recommandations de pages web
  • Utilisation d'expressions régulières pour extraire les liens des balises HTML

Résultats Expérimentaux

Découvertes Principales

RQ1 : Relation entre le Classement des Moteurs de Recherche et la Qualité du Code

  • Résultats ANOVA: p-value de lisibilité=0,0034, p-value de compréhensibilité=0,0003
  • Découverte clé: Les extraits de code Top-2 surpassent globalement Top-1, Top-4 et Top-5 en termes de lisibilité et de compréhensibilité
  • Taille de l'effet: Petit effet (-0,02 à 0,01 pour la lisibilité, -0,01 à 0,02 pour la compréhensibilité)
  • Conclusion: Confirmation de l'hypothèse H1, les extraits de code mieux classés ne sont pas nécessairement plus lisibles ou compréhensibles

RQ2 : Comparaison entre les Moteurs de Recherche

  • Résultats ANOVA: p-value de lisibilité=1,207e-12, p-value de compréhensibilité=0,0364
  • Classement de lisibilité: Google > Microsoft Bing > Yahoo!
  • Compréhensibilité: Google légèrement supérieur à Microsoft Bing
  • Taille de l'effet: Petit effet (-0,02 à 0,02 pour la lisibilité, -0,01 à 0,005 pour la compréhensibilité)

RQ3 : Comparaison entre les Sites Web Recommandés

  • Résultats ANOVA: p-value de lisibilité et compréhensibilité <2,2e-16
  • Meilleure lisibilité: geeksforgeeks
  • Meilleure compréhensibilité: tutorialspoint
  • Taille de l'effet: Effet moyen pour la lisibilité (-0,15 à 0,10), petit effet pour la compréhensibilité (-0,04 à 0,08)

Résultats d'Analyse Détaillée

Analyse de Lisibilité

Raisons de la meilleure performance de GeeksforGeeks :

  • Chaque ligne de code est accompagnée d'un commentaire
  • Haute cohésion, chaque concept est indépendant
  • Exemple : requête « How to append to a string? »
    • GeeksforGeeks : score de lisibilité 0,94
    • Tutorialspoint : score de lisibilité 0,44

Limitations de l'Analyse de Compréhensibilité

  • 58,3% des extraits de code atteignent le score de compréhensibilité maximal
  • La plupart des extraits de code sont des appels API simples, manquant de structures de contrôle complexes
  • Recommandation : cet indicateur est plus approprié pour les fichiers de type dépôt Git complet

Travaux Connexes

Recherche sur la Lisibilité du Code

  • Hora (2021): Étude de la façon dont Google classe les extraits de code en fonction des caractéristiques de lisibilité et de réutilisabilité
  • Scalabrino et al.: Proposition d'un modèle prédictif de lisibilité du code
  • Buse et Weimer: Apprentissage des mesures de lisibilité du code

Recherche et Recommandation de Code

  • Outil API Sonar: Utilisation de caractéristiques de lisibilité pour classer les extraits de code
  • Méthode Muse: Utilisation de caractéristiques de lisibilité pour classer les exemples de code
  • CROKAGE: Moteur de recherche de code extrayant les extraits de code et les explications de StackOverflow

Évaluation de la Qualité du Code

  • Treude et Robillard: Découverte que seulement 49% des extraits de code StackOverflow sont complètement auto-explicatifs
  • Complexité cognitive: Méthode de mesure de compréhensibilité proposée par Campbell

Conclusions et Discussion

Conclusions Principales

  1. Paradoxe du classement: Le classement des moteurs de recherche n'est pas complètement corrélé à la qualité du code, les extraits Top-2 et Top-3 peuvent avoir une qualité supérieure
  2. Différences entre moteurs de recherche: Google offre les meilleures performances en lisibilité, mais l'avantage est limité
  3. Différenciation de la qualité des sites web: Il existe des différences significatives de qualité entre les sites web recommandés, les sites tutoriels (GeeksforGeeks) offrant une meilleure lisibilité
  4. Limitations de compréhensibilité: L'indicateur de compréhensibilité actuel a une capacité de discrimination limitée pour les extraits de code simples

Implications Pratiques

  • Orientation pour les développeurs: Recommandation de donner la priorité aux extraits de code des sites tutoriels tels que GeeksforGeeks
  • Stratégie de recherche: Ne pas se fier uniquement au classement pour sélectionner les extraits de code, considérer les indicateurs de qualité de manière globale
  • Amélioration des outils: Fourniture de normes de référence pour l'évaluation de la qualité des moteurs de recherche de code

Limitations

  1. Couverture limitée des sites web: Analyse de seulement 5 sites web, représentant 34%-38,1% des sites recommandés
  2. Stratégie d'extraction: Extraction d'un seul extrait de code par page web
  3. Impact de la modification des requêtes: L'ajout de « example in java » peut affecter les résultats de recherche
  4. Précision des indicateurs: Les outils de lisibilité et de compréhensibilité peuvent présenter des erreurs

Directions Futures

  1. Recherche qualitative: Compréhension approfondie des raisons des différences de scores de lisibilité et de compréhensibilité
  2. Recherche étendue: Inclusion de plus de sites web ou développement d'une méthode d'extraction de code générale
  3. Support multilingue: Extension à d'autres langages de programmation
  4. Traitement de multiples extraits de code: Développement de méthodes heuristiques pour traiter plusieurs extraits de code sur une seule page

Évaluation Approfondie

Points Forts

  1. Nouveauté de la recherche: Première comparaison systématique de la qualité des extraits de code des principaux moteurs de recherche
  2. Échelle des données: Étude empirique à grande échelle avec volume de données suffisant et conclusions fiables
  3. Rigueur méthodologique: Utilisation de méthodes d'analyse statistique éprouvées avec résultats statistiquement significatifs
  4. Valeur pratique: Fourniture de conseils empiriques aux développeurs pour la sélection d'extraits de code
  5. Reproductibilité: Fourniture d'un package complet de reproduction et description détaillée de la méthodologie

Insuffisances

  1. Limitations des indicateurs: L'indicateur de compréhensibilité a une capacité de discrimination insuffisante pour les extraits de code simples
  2. Biais de sélection des sites web: Analyse de seulement 5 sites web populaires, risque de biais de sélection
  3. Restriction linguistique: Considération du langage Java uniquement, généralisation limitée
  4. Actualité: Les résultats de recherche sont sensibles au temps, les conclusions peuvent changer au fil du temps

Impact

  1. Contribution académique: Nouvelle perspective pour la recherche en recherche de code et ingénierie logicielle
  2. Orientation pratique: Impact direct sur le comportement de recherche de code des développeurs
  3. Amélioration des outils: Fondement pour l'optimisation des algorithmes de classement des moteurs de recherche et des systèmes de recommandation de code
  4. Recherche ultérieure: Base pour la recherche dans les domaines connexes

Scénarios d'Application

  • Évaluation de la qualité lors de la recherche de code par les développeurs de logiciels
  • Optimisation des algorithmes de classement des moteurs de recherche de code
  • Contrôle de la qualité des exemples de code dans l'éducation à la programmation
  • Analyse de la qualité du code dans la recherche en ingénierie logicielle

Références Bibliographiques

L'article cite 23 références connexes, incluant principalement :

  • Méthodes de mesure de la lisibilité et de la compréhensibilité du code
  • Recherche sur les systèmes de recherche et de recommandation de code
  • Analyse de la qualité du code StackOverflow
  • Recherche sur les mécanismes de classement des moteurs de recherche

Évaluation Globale: Cet article est une recherche empirique en ingénierie logicielle de haute qualité qui comble un vide dans l'évaluation de la qualité de la recherche de code. Il possède une valeur théorique et pratique importante. La méthodologie de recherche est scientifiquement rigoureuse, l'échelle des données est suffisante, la fiabilité des conclusions est élevée, et elle fournit des perspectives précieuses aux développeurs et aux chercheurs.