Skip to content

Latest commit

 

History

History
67 lines (41 loc) · 4.14 KB

17. Code Search.md

File metadata and controls

67 lines (41 loc) · 4.14 KB

17. Code Search

  • Code Search: 구글이 이용하는 코드 브라우징 및 검색 도구로, 프론트엔드 UI와 다양한 백엔드 요소로 이루어져 있다.
  • 클릭 한 번으로 다음 (예상) 질문에 답해주기가 Code Search 개발 원칙의 하나가 되었다.
  • 지금은 다음과 같은 질문들에 클릭 한두 번으로 답해주는 수준에 이르렀다.
    • 이 심볼은 어디에 정의되어 있는가?
    • 이건 어디서 사용되는가?
    • 이 심볼은 어떻게 인클루드하나?
    • 이 코드는 언제 코드베이스에 추가되었나?
    • 전체적으로 CPU 사이클을 얼마나 소모하나?

17.1 Code Search UI

  • 타이핑을 시작하면 제안 기능이 작동하여 개발자가 파일, 심볼, 디렉터리로 빠르게 찾아 들어갈 수 있다. 더 복잡한 쓰임새를 보여줄 때는 코드 스니펫이 포함된 결과 페이지를 보여준다.
  • Code Search는 Piper와도 통합되어 있어서 파일의 변경 이력도 보여준다. 파일의 이전 버전을 확인할 수 있고, 어디가 변경되었는지, 누가 작성했는지 확인할 수 있다. 또한 코드 리뷰 도구인 Critique로 점프하거나 다른 버전과 비교하거나, 원한다면 전통적인 blame 뷰도 확인할 수 있다. 디렉터리 뷰에서는 지워진 파일들도 보여준다.

17.2 구글 개발자가 Code Search를 이용하는 방법

  • 코드의 의도를 확인하기 위해 사용한다.

17.2.1 어디에?

  • 결과에 랭킹을 매겨 보여주고 표현력 좋은 질의어를 제공한다.

17.2.2 무엇을?

  • Code Search 사용량의 약 1/4는 전통적인 파일 브라우징에 쓰인다. '코드베이스의 이 부분이 무슨 일을 하는가?'라는 질문에 답하는 것이라 볼 수 있따.

17.2.3 어떻게?

  • 약 1/3을 차지하는 쓰임은 다른 사람들이 어떻게 썼는지를 보는 것이다.

17.2.4 왜?

  • 코드가 '무엇을'하는가와 연관된 쓰임인데, 개발자들이 코드가 '왜' 기대와 다르게 동작하는가와 관련해 더 구체적으로 질의할 수 있다.
  • Code Search 사용량의 약 16%는 '이 코드가 왜 추가되었나?' 혹은 '왜 이런 식으로 동작하지?'의 답을 찾는 것이다.

17.2.5 누가 언제?

  • Code Search 사용량의 약 8%는 특정 코드 조각을 누가 언제 추가했는지를 찾는 데 쓰인다.

17.3 독립된 웹 도구로 만든 이유

17.3.1 대규모 코드베이스 지원

  • 구글의 코드베이스가 너무 거대해서 코드베이스 전체를 로컬로 복사하는 게 불가능하기 때문이다.
  • 로컬에서 감당할 수 있는 규모라 해도 로컬 검색과 상호참조 인덱스를 생성하느라 IDE 구동 시간이 느려져서 개발자 생산성을 떨어뜨린다.
  • 검색 인덱스는 바로 갱신되지만, 상호참조 인덱스에는 그보다 늦게 반영되어 개발자들이 드물지만 반복적으로 문제를 겪곤 한다.

17.3.2 설정 없이 모든 코드 보기

  • 코드베이스 전체에서 최신 코드를 정확하게 브라우징할 수 있다면 재사용할 라이브러리나 복사해서 쓸 좋은 예시 코드를 찾기가 매우 쉽다.
  • Code Search 웹 UI는 아무런 설정(예: 프로젝트 설정, 빌드 환경) 없이도 이용할 수 있다. 따라서 어디에서 등장하는 코드든 상관없이 매우 쉽고 빠르게 찾아 검토할 수 있다.
  • 코드상의 의존성을 놓칠 일이 없어진다.

17.3.3 기능 특화

  • IDE가 아니기 때문에 편집이 아닌 코드 탐색과 이해에 사용자 경험을 최적화할 수 있다(키보드 단축키, 메뉴, 마우스 클릭, 화면 공간 활용 등).

17.3.4 다른 도구에 통합

  • 다른 도구 제작자들이 결과를 보여줄 UI를 따로 만들지 않아도 되며, 별달리 홍보하지 않아도 모든 개발자가 결과를 볼 수 있다.
  • 코드랩(codelab)이나 다른 문서자료에서도 API, 예시, 구현 코드를 참조하는 경우가 많다.

17.3.5 API 제공

  • Code Search는 검색, 상호참조, 구문 강조 기능을 API로 제공하여 다른 도구 개발자가 가져다 쓸 수 있다.