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, 2021년 11월 15-11일
  • 논문 링크: https://arxiv.org/abs/2110.07087

초록

개발자들은 Google, Yahoo!, Microsoft Bing 등의 일반 검색 엔진에서 재사용 가능한 코드 스니펫을 자주 검색합니다. 그러나 이러한 코드 스니펫은 가독성이나 이해도 측면에서 품질이 낮을 수 있습니다. 본 논문은 세 가지 독립 변수(순위, 일반 검색 엔진, 추천 웹사이트)를 사용하여 웹에서 추출한 코드 스니펫의 가독성 및 이해도 점수를 분석하는 실증 분석을 제시합니다. 연구는 9,480개 쿼리에 대한 Google, Yahoo!, Bing의 상위 5개 추천 웹사이트 및 해당 코드 스니펫 추천을 수집하고 가독성 및 이해도 점수를 평가했습니다. 연구 결과, 특정 추천 웹사이트가 가독성 및 이해도 점수 측면에서 다른 웹사이트보다 현저히 우수함을 발견했습니다. 순위가 높은 코드 스니펫이 모든 일반 검색 엔진에서 순위가 낮은 코드 스니펫보다 반드시 더 가독성이 높거나 이해하기 쉬운 것은 아닙니다. 또한 가독성 점수 측면에서 Google은 Yahoo! 또는 Microsoft Bing보다 더 나은 코드 스니펫 순위를 제공합니다.

연구 배경 및 동기

문제 정의

  1. 핵심 문제: 일반 검색 엔진이 추천하는 코드 스니펫은 가독성 및 이해도 측면에서 품질 차이가 존재하며, 순위가 높은 코드 스니펫이 반드시 품질이 더 높지는 않습니다
  2. 실제 요구사항: 개발자들은 광범위하게 일반 검색 엔진을 사용하여 코드 예제를 찾지만, 이러한 코드 스니펫의 품질에 대한 체계적 평가가 부족합니다
  3. 검색 엔진의 한계: Google은 200개 이상의 순위 요소를 보유하고 있지만, 순위가 높은 페이지에는 품질이 낮은 코드 예제가 포함될 수 있습니다

연구의 중요성

  • 코드 스니펫 재사용은 프로그래밍 작업 시간을 단축하고 개발 프로세스를 가속화할 수 있습니다
  • Google은 90% 이상의 검색 엔진 시장 점유율을 보유하고 있지만, 다른 검색 엔진의 코드 품질 순위 상황은 알려지지 않았습니다
  • 가독성과 이해도 간의 상호 관계를 이해할 필요가 있습니다: 가독성은 구문 이해와 관련되고, 이해도는 의미론적 측면과 관련됩니다

동기 사례

논문은 Hora의 연구 사례를 인용했습니다: Google에서 "File.mkdirs examples"를 검색할 때, Tutorialspoint의 코드 스니펫은 가독성 및 재사용성 지표가 낮음에도 불구하고 쿼리와 유사한 자연어 설명을 포함하고 있어 더 높은 순위를 차지합니다.

핵심 기여

  1. 최초 체계적 비교 연구: Google, Yahoo!, Microsoft Bing 세 대형 검색 엔진이 추천하는 코드 스니펫의 가독성 및 이해도에 대한 대규모 비교 분석
  2. 대규모 데이터셋 구축: 9,480개 쿼리의 47,400개 웹페이지 링크를 수집하여 5,355개의 서로 다른 웹사이트를 포함
  3. 다차원 분석 프레임워크: 순위, 검색 엔진, 추천 웹사이트 세 가지 독립 변수를 기반으로 한 분석 방법 제시
  4. 실증적 발견: 두 가지 중요한 가설을 증명: 순위가 높은 코드 스니펫이 반드시 더 높은 가독성/이해도를 가지지는 않음; 추천 웹사이트 간 코드 품질에 현저한 차이 존재
  5. 이해도 측정 표준화: 인지 복잡도를 0,1 구간으로 변환하는 표준화 방법 제시

방법론 상세 설명

작업 정의

입력: 프로그래밍 관련 쿼리 문장 출력: 코드 스니펫의 가독성 및 이해도 점수 제약 조건: Java 언어 코드 스니펫만 분석, 상위 5개 검색 결과 고려

연구 설계 아키텍처

연구는 5단계 방법론을 채택합니다:

  1. 입력 쿼리 선택: CROKAGE 도구에서 10,000개의 사용자 쿼리 수집
  2. 상위 n개 웹페이지 수집: Google, Yahoo!, Bing의 상위 5개 추천 웹페이지 획득
  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개 그룹(상위-1부터 상위-5)
    • 웹사이트: 5개 그룹(선택된 5개 웹사이트)

데이터 전처리

  • 중복 쿼리 제거 및 수동으로 해당 없음으로 표시된 쿼리 제거
  • 5개 미만의 웹페이지 추천을 가진 쿼리 필터링
  • HTML 태그에서 링크를 추출하기 위해 정규 표현식 사용

실험 결과

주요 발견

RQ1: 검색 엔진 순위와 코드 품질 관계

  • ANOVA 결과: 가독성 p-value=0.0034, 이해도 p-value=0.0003
  • 핵심 발견: 상위-2 코드 스니펫이 가독성 및 이해도 측면에서 상위-1, 상위-4, 상위-5보다 전반적으로 우수
  • 효과 크기: 작음(-0.020.01 가독성, -0.010.02 이해도)
  • 결론: 가설 H1을 증명, 순위가 높은 코드 스니펫이 반드시 더 높은 가독성이나 이해도를 가지지는 않음

RQ2: 검색 엔진 간 비교

  • ANOVA 결과: 가독성 p-value=1.207e-12, 이해도 p-value=0.0364
  • 가독성 순서: Google > Microsoft Bing > Yahoo!
  • 이해도: Google이 Microsoft Bing보다 약간 우수
  • 효과 크기: 작은 효과(-0.020.02 가독성, -0.010.005 이해도)

RQ3: 추천 웹사이트 간 비교

  • ANOVA 결과: 가독성 및 이해도 p-value 모두 <2.2e-16
  • 가독성 최고: geeksforgeeks
  • 이해도 최고: tutorialspoint
  • 효과 크기: 가독성 중간 효과(-0.150.10), 이해도 작은 효과(-0.040.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: StackOverflow 코드 스니펫의 49%만 완전히 자명함을 발견
  • 인지 복잡도: Campbell이 제시한 이해도 측정 방법

결론 및 논의

주요 결론

  1. 순위 역설: 검색 엔진 순위와 코드 품질은 완전히 관련되지 않으며, 상위-2 및 상위-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 코드 품질 분석
  • 검색 엔진 순위 메커니즘 연구

종합 평가: 이는 높은 품질의 실증 소프트웨어 공학 연구 논문으로, 코드 검색 품질 평가 연구의 공백을 채우며 중요한 이론적 가치와 실무적 의의를 가집니다. 연구 방법은 과학적이고 엄밀하며, 데이터 규모는 충분하고, 결론의 신뢰도는 높으며, 개발자와 연구자에게 가치 있는 통찰력을 제공합니다.