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

Читаемость и понятность фрагментов кода, рекомендуемых поисковыми системами общего назначения: сравнительное исследование

Основная информация

  • ID статьи: 2110.07087
  • Название: Readability and Understandability of Snippets Recommended by General-purpose Web Search Engines: a Comparative Study
  • Авторы: Carlos Eduardo C. Dantas, Marcelo A. Maia
  • Категория: cs.SE (Программная инженерия)
  • Дата публикации/конференция: AeSIR '21, 15–11 ноября 2021
  • Ссылка на статью: https://arxiv.org/abs/2110.07087

Аннотация

Разработчики часто ищут повторно используемые фрагменты кода в поисковых системах общего назначения, таких как Google, Yahoo! или Microsoft Bing. Однако эти фрагменты кода могут иметь низкое качество с точки зрения читаемости или понятности. В данной статье представлен эмпирический анализ, использующий три независимые переменные (ранжирование, поисковая система и рекомендуемый веб-сайт) для анализа оценок читаемости и понятности фрагментов кода, извлеченных из сети. Исследование собрало топ-5 рекомендуемых веб-сайтов и соответствующие рекомендации фрагментов кода от Google, Yahoo! и Bing для 9 480 запросов и оценило их показатели читаемости и понятности. Исследование показало, что некоторые рекомендуемые веб-сайты значительно превосходят другие по оценкам читаемости и понятности. Фрагменты кода с более высоким ранжированием не обязательно более читаемы или понятны, чем фрагменты с более низким ранжированием во всех поисковых системах общего назначения. Кроме того, в отношении оценок читаемости Google обеспечивает лучшее ранжирование фрагментов кода, чем Yahoo! или Microsoft Bing.

Исследовательский контекст и мотивация

Определение проблемы

  1. Основная проблема: Фрагменты кода, рекомендуемые поисковыми системами общего назначения, демонстрируют различия в качестве с точки зрения читаемости и понятности; фрагменты с более высоким ранжированием не обязательно имеют более высокое качество
  2. Практическая необходимость: Разработчики широко используют поисковые системы общего назначения для поиска примеров кода, но отсутствует систематическая оценка качества этих фрагментов кода
  3. Ограничения поисковых систем: Хотя Google использует более 200 факторов ранжирования, страницы с высоким ранжированием могут содержать примеры кода низкого качества

Значимость исследования

  • Повторное использование фрагментов кода может сократить время выполнения задач программирования и ускорить процесс разработки
  • Google контролирует более 90% рынка поисковых систем, но качество ранжирования кода в других поисковых системах неизвестно
  • Необходимо понимание взаимосвязи между читаемостью и понятностью: читаемость связана с синтаксическим пониманием, понятность — с семантическими аспектами

Мотивирующий пример

Статья ссылается на исследование Hora: при поиске "File.mkdirs examples" в Google фрагмент кода с веб-сайта Tutorialspoint, несмотря на более низкие показатели читаемости и повторного использования, получил более высокий рейтинг благодаря наличию объяснений на естественном языке, похожих на запрос.

Основные вклады

  1. Первое систематическое сравнительное исследование: Крупномасштабный сравнительный анализ читаемости и понятности фрагментов кода, рекомендуемых тремя основными поисковыми системами: Google, Yahoo! и Microsoft Bing
  2. Построение крупномасштабного набора данных: Сбор 47 400 веб-ссылок для 9 480 запросов, охватывающих 5 355 различных веб-сайтов
  3. Многомерная аналитическая база: Предложена методология анализа на основе трех независимых переменных: ранжирование, поисковая система и рекомендуемый веб-сайт
  4. Эмпирические открытия: Подтверждены два важных предположения: фрагменты кода с более высоким ранжированием не обязательно имеют более высокую читаемость/понятность; существуют значительные различия в качестве кода между рекомендуемыми веб-сайтами
  5. Стандартизация метрики понятности: Предложена методология нормализации когнитивной сложности в интервал 0,1

Подробное описание методологии

Определение задачи

Входные данные: Запросы, связанные с программированием Выходные данные: Оценки читаемости и понятности фрагментов кода Ограничения: Анализ только фрагментов кода на Java, рассмотрение топ-5 результатов поиска

Архитектура исследовательского дизайна

Исследование использует пятиэтапный подход:

  1. Выбор входных запросов: Сбор 10 000 пользовательских запросов из инструмента CROKAGE
  2. Сбор топ-n веб-страниц: Получение топ-5 рекомендуемых веб-страниц от Google, Yahoo! и Bing
  3. Извлечение фрагментов кода: Извлечение фрагментов кода на Java с выбранных веб-сайтов
  4. Расчет метрик: Вычисление оценок читаемости и понятности
  5. Методология анализа: Использование ANOVA и теста Tukey для статистического анализа

Ключевые технические реализации

Стратегия сбора данных

Методология извлечения кода

  • StackOverflow: Извлечение фрагментов кода на Java из принятых ответов
  • Другие веб-сайты: Использование регулярных выражений для поиска исходного кода в HTML-тегах, содержащих "example" и "Java"

Метрики оценки

Измерение читаемости:

  • Использование предиктивной модели, предложенной Scalabrino и др.
  • Включает метрики комментариев, согласованности идентификаторов, связности текста, количества значений и концепций
  • Диапазон выходных данных: 0,1, где 0 означает низкую читаемость, 1 означает высокую читаемость

Измерение понятности:

  • На основе когнитивной сложности, предложенной Campbell
  • Формула нормализации:
understandability(cs_i) = {
    1 - #cc/#mcc  if #cc < 15
    0.0           otherwise
}

где #cc — значение когнитивной сложности, #mcc=15 — рекомендуемое максимальное значение

Экспериментальная установка

Детали набора данных

  • Источник запросов: Пользовательские запросы из инструмента CROKAGE, поступившие из более чем 80 стран
  • Масштаб данных: 9 480 действительных запросов, 47 400 веб-ссылок
  • Охват веб-сайтов: 5 355 различных веб-сайтов
  • Языковое ограничение: Только язык программирования Java

Методология оценки

  • Статистический анализ: Использование дисперсионного анализа (ANOVA) с уровнем доверия 5% (p-value<0.05)
  • Множественное сравнение: Использование теста Tukey для выявления значительных различий между группами
  • Дизайн группировки:
    • Поисковые системы: 3 группы (Google, Bing, Yahoo!)
    • Ранжирование: 5 групп (top-1 до top-5)
    • Веб-сайты: 5 групп (выбранные 5 веб-сайтов)

Предварительная обработка данных

  • Удаление дублирующихся запросов и запросов, вручную отмеченных как неприменимые
  • Фильтрация запросов с менее чем 5 рекомендуемыми веб-страницами
  • Использование регулярных выражений для извлечения ссылок из HTML-тегов

Результаты экспериментов

Основные открытия

RQ1: Взаимосвязь между ранжированием поисковой системы и качеством кода

  • Результаты ANOVA: p-value читаемости=0.0034, p-value понятности=0.0003
  • Ключевое открытие: Фрагменты кода Top-2 в целом превосходят Top-1, Top-4 и Top-5 по читаемости и понятности
  • Размер эффекта: Небольшой (-0.02 до 0.01 для читаемости, -0.01 до 0.02 для понятности)
  • Вывод: Подтверждено предположение H1, что фрагменты кода с более высоким ранжированием не обязательно более читаемы или понятны

RQ2: Сравнение между поисковыми системами

  • Результаты ANOVA: p-value читаемости=1.207e-12, p-value понятности=0.0364
  • Порядок читаемости: Google > Microsoft Bing > Yahoo!
  • Понятность: Google немного превосходит Microsoft Bing
  • Размер эффекта: Небольшой эффект (-0.02 до 0.02 для читаемости, -0.01 до 0.005 для понятности)

RQ3: Сравнение между рекомендуемыми веб-сайтами

  • Результаты ANOVA: p-value читаемости и понятности <2.2e-16
  • Лучшая читаемость: geeksforgeeks
  • Лучшая понятность: tutorialspoint
  • Размер эффекта: Средний эффект для читаемости (-0.15 до 0.10), небольшой эффект для понятности (-0.04 до 0.08)

Детальные результаты анализа

Анализ читаемости

Причины лучшей производительности GeeksforGeeks:

  • Каждая строка кода сопровождается комментарием
  • Высокая связанность, каждая концепция независима
  • Пример: запрос "How to append to a string?"
    • GeeksforGeeks: оценка читаемости 0.94
    • Tutorialspoint: оценка читаемости 0.44

Ограничения анализа понятности

  • 58.3% фрагментов кода достигают максимальной оценки понятности
  • Большинство фрагментов кода представляют собой простые вызовы API без сложных управляющих структур
  • Рекомендация: эта метрика более подходит для полных файлов репозитория Git

Связанные работы

Исследования читаемости кода

  • Hora (2021): Исследование того, как Google ранжирует фрагменты кода на основе характеристик читаемости и повторного использования
  • Scalabrino и др.: Предложена предиктивная модель читаемости кода
  • Buse и Weimer: Изучение метрик читаемости кода

Поиск и рекомендация кода

  • Инструмент API Sonar: Использование характеристик читаемости для ранжирования фрагментов кода
  • Метод Muse: Использование характеристик читаемости для ранжирования примеров кода
  • CROKAGE: Поисковая система кода, извлекающая фрагменты кода и объяснения из StackOverflow

Оценка качества кода

  • Treude и Robillard: Обнаружено, что только 49% фрагментов кода StackOverflow полностью самообъясняющиеся
  • Когнитивная сложность: Метод измерения понятности, предложенный Campbell

Выводы и обсуждение

Основные выводы

  1. Парадокс ранжирования: Ранжирование поисковой системы не полностью коррелирует с качеством кода; фрагменты кода Top-2 и Top-3 могут иметь более высокое качество
  2. Различия между поисковыми системами: Google показывает лучшую производительность в читаемости, но преимущество ограничено
  3. Дифференциация качества веб-сайтов: Существуют значительные различия в качестве между рекомендуемыми веб-сайтами; учебные веб-сайты (GeeksforGeeks) обеспечивают лучшую читаемость
  4. Ограничения понятности: Текущие метрики понятности имеют ограниченную дискриминационную способность для простых фрагментов кода

Практическое значение

  • Руководство для разработчиков: Рекомендуется отдавать приоритет фрагментам кода с учебных веб-сайтов, таких как GeeksforGeeks
  • Стратегия поиска: Не следует полагаться только на ранжирование при выборе фрагментов кода; необходимо комплексно учитывать метрики качества
  • Улучшение инструментов: Предоставление эталонных стандартов оценки качества для поисковых систем кода

Ограничения

  1. Ограниченное охватывание веб-сайтов: Анализ только 5 веб-сайтов, составляющих 34%-38.1% рекомендуемых веб-сайтов
  2. Стратегия извлечения: Извлечение только первого фрагмента кода с каждой веб-страницы
  3. Влияние модификации запроса: Добавление "example in java" может повлиять на результаты поиска
  4. Точность метрик: Инструменты читаемости и понятности могут содержать ошибки

Направления будущих исследований

  1. Качественное исследование: Глубокое понимание причин различий в оценках читаемости и понятности
  2. Расширенное исследование: Включение большего количества веб-сайтов или разработка универсального метода извлечения кода
  3. Поддержка нескольких языков: Расширение на другие языки программирования
  4. Обработка нескольких фрагментов: Разработка эвристических методов для обработки нескольких фрагментов кода на одной странице

Глубокая оценка

Преимущества

  1. Новизна исследования: Первое систематическое сравнение качества фрагментов кода основных поисковых систем
  2. Масштаб данных: Крупномасштабное эмпирическое исследование с достаточным объемом данных и надежными выводами
  3. Строгая методология: Использование зрелых методов статистического анализа с статистически значимыми результатами
  4. Практическая ценность: Предоставление эмпирического руководства для разработчиков при выборе фрагментов кода
  5. Воспроизводимость: Предоставление полного пакета для воспроизведения и подробного описания методологии

Недостатки

  1. Ограничения метрик: Метрика понятности имеет ограниченную дискриминационную способность для простых фрагментов кода
  2. Смещение выбора веб-сайтов: Анализ только 5 основных веб-сайтов может привести к смещению выбора
  3. Языковое ограничение: Рассмотрение только языка Java ограничивает обобщаемость
  4. Временная чувствительность: Результаты поиска чувствительны ко времени; выводы могут изменяться со временем

Влияние

  1. Академический вклад: Предоставление новой перспективы для исследований поиска кода и программной инженерии
  2. Практическое руководство: Прямое влияние на поведение разработчиков при поиске кода
  3. Улучшение инструментов: Предоставление основы для оптимизации алгоритмов ранжирования поисковых систем и систем рекомендации кода
  4. Последующие исследования: Создание основы для исследований в смежных областях

Применимые сценарии

  • Оценка качества при поиске кода разработчиками программного обеспечения
  • Оптимизация алгоритмов ранжирования поисковых систем кода
  • Контроль качества примеров кода в программном образовании
  • Анализ качества кода в исследованиях программной инженерии

Библиография

Статья цитирует 23 связанные работы, включая в основном:

  • Методы измерения читаемости и понятности кода
  • Исследования поиска и рекомендации кода
  • Анализ качества кода StackOverflow
  • Исследования механизмов ранжирования поисковых систем

Общая оценка: Это высококачественная статья эмпирической программной инженерии, заполняющая пробел в исследованиях оценки качества поиска кода, с важной теоретической и практической ценностью. Методология исследования научно обоснована, масштаб данных достаточен, надежность выводов высока, предоставляя ценные идеи для разработчиков и исследователей.