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

Legibilidad y Comprensibilidad de Fragmentos Recomendados por Motores de Búsqueda Web de Propósito General: un Estudio Comparativo

Información Básica

  • ID del Artículo: 2110.07087
  • Título: Legibilidad y Comprensibilidad de Fragmentos Recomendados por Motores de Búsqueda Web de Propósito General: un Estudio Comparativo
  • Autores: Carlos Eduardo C. Dantas, Marcelo A. Maia
  • Clasificación: cs.SE (Ingeniería de Software)
  • Fecha de Publicación/Conferencia: AeSIR '21, 15–11 de noviembre de 2021
  • Enlace del Artículo: https://arxiv.org/abs/2110.07087

Resumen

Los desarrolladores frecuentemente buscan fragmentos de código reutilizables en motores de búsqueda de propósito general como Google, Yahoo! o Microsoft Bing. Sin embargo, estos fragmentos de código pueden tener baja calidad en términos de legibilidad o comprensibilidad. Este artículo presenta un análisis empírico que utiliza tres variables independientes (clasificación, motor de búsqueda y sitio web recomendado) para analizar las puntuaciones de legibilidad y comprensibilidad de fragmentos de código extraídos de la web. El estudio recopiló los 5 principales sitios web recomendados por Google, Yahoo! y Bing para 9,480 consultas, junto con sus correspondientes recomendaciones de fragmentos de código, y evaluó sus puntuaciones de legibilidad y comprensibilidad. El estudio encontró que ciertos sitios web recomendados superan significativamente a otros en puntuaciones de legibilidad y comprensibilidad. Los fragmentos de código con clasificación más alta no son necesariamente más legibles o comprensibles que los de clasificación más baja en todos los motores de búsqueda de propósito general. Además, en términos de puntuaciones de legibilidad, Google tiene un mejor ranking de fragmentos de código que Yahoo! o Microsoft Bing.

Antecedentes de Investigación y Motivación

Definición del Problema

  1. Problema Central: Los fragmentos de código recomendados por motores de búsqueda de propósito general presentan variaciones de calidad en legibilidad y comprensibilidad, y los fragmentos con clasificación más alta no necesariamente tienen mayor calidad
  2. Necesidad Práctica: Los desarrolladores utilizan ampliamente motores de búsqueda de propósito general para encontrar ejemplos de código, pero carecen de una evaluación sistemática de la calidad de estos fragmentos
  3. Limitaciones del Motor de Búsqueda: Aunque Google utiliza más de 200 factores de clasificación, las páginas con clasificación más alta pueden contener ejemplos de código de baja calidad

Importancia de la Investigación

  • La reutilización de fragmentos de código puede reducir el tiempo de tareas de programación y acelerar el proceso de desarrollo
  • Google posee más del 90% de la cuota de mercado de motores de búsqueda, pero se desconoce la situación de clasificación de calidad de código en otros motores de búsqueda
  • Es necesario comprender la interrelación entre legibilidad y comprensibilidad: la legibilidad se asocia con la comprensión sintáctica, mientras que la comprensibilidad se asocia con aspectos semánticos

Ejemplo de Motivación

El artículo cita un caso de estudio de Hora: al buscar "File.mkdirs examples" en Google, el fragmento de código de Tutorialspoint, aunque tiene métricas de legibilidad y reutilizabilidad deficientes, tiene una clasificación más alta porque incluye explicaciones en lenguaje natural similares a la consulta.

Contribuciones Principales

  1. Primer Estudio Comparativo Sistemático: Análisis comparativo a gran escala de fragmentos de código recomendados por tres principales motores de búsqueda (Google, Yahoo! y Microsoft Bing) en términos de legibilidad y comprensibilidad
  2. Construcción de Conjunto de Datos a Gran Escala: Recopilación de 47,400 enlaces de páginas web para 9,480 consultas, cubriendo 5,355 sitios web distintos
  3. Marco de Análisis Multidimensional: Propuesta de un método de análisis basado en tres variables independientes: clasificación, motor de búsqueda y sitio web recomendado
  4. Hallazgos Empíricos: Confirmación de dos hipótesis importantes: los fragmentos de código con clasificación más alta no necesariamente poseen mayor legibilidad/comprensibilidad; existe variación significativa en la calidad del código entre diferentes sitios web recomendados
  5. Estandarización de Métricas de Comprensibilidad: Propuesta de un método estandarizado para convertir complejidad cognitiva al intervalo 0,1

Explicación Detallada de la Metodología

Definición de la Tarea

Entrada: Consultas relacionadas con programación Salida: Puntuaciones de legibilidad y comprensibilidad de fragmentos de código Restricciones: Análisis únicamente de fragmentos de código en Java, considerando los 5 principales resultados de búsqueda

Arquitectura del Diseño de Investigación

El estudio adopta un enfoque de cinco pasos:

  1. Selección de Consultas de Entrada: Recopilación de 10,000 consultas de usuarios de la herramienta CROKAGE
  2. Recopilación de los n Principales Sitios Web: Obtención de los 5 principales sitios web recomendados por Google, Yahoo! y Bing
  3. Extracción de Fragmentos de Código: Extracción de fragmentos de código Java de los sitios web seleccionados
  4. Cálculo de Métricas: Cálculo de puntuaciones de legibilidad y comprensibilidad
  5. Método de Análisis: Utilización de pruebas ANOVA y Tukey para análisis estadístico

Implementación Técnica Clave

Estrategia de Recopilación de Datos

Método de Extracción de Código

  • StackOverflow: Extracción de fragmentos de código Java de respuestas aceptadas
  • Otros Sitios Web: Utilización de expresiones regulares para buscar código fuente en etiquetas HTML que contengan "example" y "Java"

Métricas de Evaluación

Medida de Legibilidad:

  • Utilización del modelo predictivo propuesto por Scalabrino et al.
  • Incluye métricas de comentarios, consistencia de identificadores, coherencia textual, cantidad de significados y conceptos
  • Rango de salida: 0,1, donde 0 indica baja legibilidad y 1 indica alta legibilidad

Medida de Comprensibilidad:

  • Basada en complejidad cognitiva propuesta por Campbell
  • Fórmula de estandarización:
understandability(cs_i) = {
    1 - #cc/#mcc  si #cc < 15
    0.0           en caso contrario
}

donde #cc es el valor de complejidad cognitiva y #mcc=15 es el valor máximo recomendado

Configuración Experimental

Detalles del Conjunto de Datos

  • Fuente de Consultas: Consultas de usuarios de la herramienta CROKAGE, procedentes de más de 80 países
  • Escala de Datos: 9,480 consultas válidas, 47,400 enlaces de páginas web
  • Cobertura de Sitios Web: 5,355 sitios web distintos
  • Restricción de Lenguaje: Únicamente lenguaje de programación Java

Método de Evaluación

  • Análisis Estadístico: Utilización de análisis de varianza (ANOVA), nivel de confianza del 5% (p-value<0.05)
  • Comparación Múltiple: Utilización de prueba de Tukey para identificar diferencias significativas entre grupos
  • Diseño de Agrupación:
    • Motor de Búsqueda: 3 grupos (Google, Bing, Yahoo!)
    • Clasificación: 5 grupos (top-1 a top-5)
    • Sitio Web: 5 grupos (5 sitios web seleccionados)

Preprocesamiento de Datos

  • Eliminación de consultas duplicadas y consultas marcadas manualmente como no aplicables
  • Filtrado de consultas con menos de 5 recomendaciones de páginas web
  • Utilización de expresiones regulares para extraer enlaces de etiquetas HTML

Resultados Experimentales

Hallazgos Principales

RQ1: Relación entre Clasificación del Motor de Búsqueda y Calidad del Código

  • Resultado ANOVA: p-value de legibilidad=0.0034, p-value de comprensibilidad=0.0003
  • Hallazgo Clave: Los fragmentos de código Top-2 superan en general a Top-1, Top-4 y Top-5 en legibilidad y comprensibilidad
  • Tamaño del Efecto: Pequeño (-0.02 a 0.01 en legibilidad, -0.01 a 0.02 en comprensibilidad)
  • Conclusión: Confirmación de la hipótesis H1, los fragmentos de código con clasificación más alta no necesariamente poseen mayor legibilidad o comprensibilidad

RQ2: Comparación entre Motores de Búsqueda

  • Resultado ANOVA: p-value de legibilidad=1.207e-12, p-value de comprensibilidad=0.0364
  • Orden de Legibilidad: Google > Microsoft Bing > Yahoo!
  • Comprensibilidad: Google ligeramente superior a Microsoft Bing
  • Tamaño del Efecto: Pequeño efecto (-0.02 a 0.02 en legibilidad, -0.01 a 0.005 en comprensibilidad)

RQ3: Comparación entre Sitios Web Recomendados

  • Resultado ANOVA: p-value de legibilidad y comprensibilidad <2.2e-16
  • Mejor Legibilidad: geeksforgeeks
  • Mejor Comprensibilidad: tutorialspoint
  • Tamaño del Efecto: Efecto medio en legibilidad (-0.15 a 0.10), pequeño efecto en comprensibilidad (-0.04 a 0.08)

Resultados de Análisis Detallado

Análisis de Legibilidad

Razones del mejor desempeño de GeeksforGeeks:

  • Cada línea de código acompañada de un comentario
  • Alta cohesión, cada concepto es independiente
  • Ejemplo: consulta "How to append to a string?"
    • GeeksforGeeks: puntuación de legibilidad 0.94
    • Tutorialspoint: puntuación de legibilidad 0.44

Limitaciones del Análisis de Comprensibilidad

  • El 58.3% de los fragmentos de código alcanza la puntuación máxima de comprensibilidad
  • La mayoría de los fragmentos de código son llamadas simples a API, careciendo de estructuras de control complejas
  • Se recomienda que esta métrica sea más apropiada para archivos de repositorios Git completos

Trabajo Relacionado

Investigación sobre Legibilidad de Código

  • Hora (2021): Investigación sobre cómo Google clasifica fragmentos de código según características de legibilidad y reutilizabilidad
  • Scalabrino et al.: Propuesta de modelo predictivo de legibilidad de código
  • Buse y Weimer: Aprendizaje de métricas de legibilidad de código

Búsqueda y Recomendación de Código

  • Herramienta API Sonar: Utilización de características de legibilidad para clasificar fragmentos de código
  • Método Muse: Utilización de características de legibilidad para clasificar ejemplos de código
  • CROKAGE: Motor de búsqueda de código que extrae fragmentos de código y explicaciones de StackOverflow

Evaluación de Calidad de Código

  • Treude y Robillard: Descubrimiento de que solo el 49% de los fragmentos de código de StackOverflow son completamente autoexplicativos
  • Complejidad Cognitiva: Método de medida de comprensibilidad propuesto por Campbell

Conclusiones y Discusión

Conclusiones Principales

  1. Paradoja de Clasificación: La clasificación del motor de búsqueda no está completamente correlacionada con la calidad del código; los fragmentos de código Top-2 y Top-3 pueden tener mayor calidad
  2. Diferencias entre Motores de Búsqueda: Google tiene el mejor desempeño en legibilidad, pero la ventaja es limitada
  3. Diferenciación de Calidad de Sitios Web: Existe variación significativa de calidad entre sitios web recomendados; los sitios web de tutoriales (GeeksforGeeks) tienen mejor legibilidad
  4. Limitaciones de Comprensibilidad: La métrica de comprensibilidad actual tiene capacidad de discriminación limitada para fragmentos de código simples

Significado Práctico

  • Guía para Desarrolladores: Se recomienda priorizar fragmentos de código de sitios web de tutoriales como GeeksforGeeks
  • Estrategia de Búsqueda: No se debe depender únicamente de la clasificación para seleccionar fragmentos de código; es necesario considerar integralmente métricas de calidad
  • Mejora de Herramientas: Proporciona estándares de referencia para evaluación de calidad en motores de búsqueda de código

Limitaciones

  1. Cobertura Limitada de Sitios Web: Análisis de solo 5 sitios web, representando el 34%-38.1% de sitios web recomendados
  2. Estrategia de Extracción: Extracción de solo el primer fragmento de código de cada página web
  3. Impacto de Modificación de Consultas: La adición de "example in java" puede afectar los resultados de búsqueda
  4. Precisión de Métricas: Las herramientas de legibilidad y comprensibilidad pueden contener errores

Direcciones Futuras

  1. Investigación Cualitativa: Comprensión profunda de las razones de las diferencias en puntuaciones de legibilidad y comprensibilidad
  2. Investigación Extendida: Inclusión de más sitios web o desarrollo de métodos de extracción de código universales
  3. Soporte Multilingüe: Extensión a otros lenguajes de programación
  4. Manejo de Múltiples Fragmentos de Código: Desarrollo de métodos heurísticos para procesar múltiples fragmentos de código en una sola página

Evaluación Profunda

Fortalezas

  1. Novedad de la Investigación: Primer estudio comparativo sistemático de la calidad de fragmentos de código de motores de búsqueda principales
  2. Escala de Datos: Investigación empírica a gran escala con volumen de datos suficiente y conclusiones confiables
  3. Rigor Metodológico: Utilización de métodos de análisis estadístico maduros con resultados estadísticamente significativos
  4. Valor Práctico: Proporciona orientación empírica para que los desarrolladores seleccionen fragmentos de código
  5. Reproducibilidad: Proporciona paquete completo de reproducción y descripción detallada de métodos

Deficiencias

  1. Limitaciones de Métricas: La métrica de comprensibilidad tiene capacidad de discriminación insuficiente para fragmentos de código simples
  2. Sesgo en Selección de Sitios Web: Análisis de solo 5 sitios web principales, posible existencia de sesgo de selección
  3. Restricción de Lenguaje: Consideración únicamente de lenguaje Java, generalización limitada
  4. Temporalidad: Los resultados de búsqueda tienen temporalidad; las conclusiones pueden cambiar con el tiempo

Impacto

  1. Contribución Académica: Proporciona nueva perspectiva para investigación en búsqueda de código e ingeniería de software
  2. Orientación Práctica: Impacto directo en el comportamiento de búsqueda de código de desarrolladores
  3. Mejora de Herramientas: Proporciona base para optimización de algoritmos de clasificación de motores de búsqueda y sistemas de recomendación de código
  4. Investigación Posterior: Sienta las bases para investigación en campos relacionados

Escenarios Aplicables

  • Evaluación de calidad en búsqueda de código para desarrolladores de software
  • Optimización de algoritmos de clasificación de motores de búsqueda de código
  • Control de calidad de ejemplos de código en educación en programación
  • Análisis de calidad de código en investigación de ingeniería de software

Referencias Bibliográficas

El artículo cita 23 referencias relacionadas, incluyendo principalmente:

  • Métodos de medida de legibilidad y comprensibilidad de código
  • Investigación en sistemas de búsqueda y recomendación de código
  • Análisis de calidad de código de StackOverflow
  • Investigación sobre mecanismos de clasificación de motores de búsqueda

Evaluación General: Este es un artículo de investigación de ingeniería de software empírica de alta calidad que llena un vacío en la investigación de evaluación de calidad de búsqueda de código, con importante valor teórico y práctico significativo. La metodología de investigación es científica y rigurosa, la escala de datos es suficiente, la credibilidad de las conclusiones es alta, y proporciona perspectivas valiosas para desarrolladores e investigadores.