[리뷰]/Software Engineering at Google

[Software Engineering at Google, 17장, 도구] Code Search

eezz 2024. 2. 11. 11:52

챕터 정리

  • Code Search는 grep을 대체하여 개발자 생산성을 높이는 핵심 도구로 성장했고, 그 과정에서 구글의 웹 검색 기술을 활용했다.
    • IDE에서 감당할 수 있는 작은 프로젝트를 진행하고 있으면 큰 의미는 없다.
    • 하지만 거대한 코드베이스에서 작업 중인 엔지니어들의 생산성을 책임지려면 값진 깨달음을 선물해 준다.
  • Code Search가 주는 가장 중요한 가치는 명백성이다.
    • 코드를 이해하는 것은 개발하고 유지보수하는 열쇠이다.
    • 그래서 측정하기 어렵지만 부정할 수 없는 이익을 돌려준다.
    • 가장 중요한 두 기능 'Kythe 통합(의미론적 코드 이해 추가)'과 '동작하는 예시 찾기'는 '변경 이력 찾기' 등의 기능과 비교하여 확실한 코드 이해를 돕는데 중점을 두고 있다.
  • Code Search를 사용할 수 없는 조직이라면, IDE용 사내 표준 인덱싱 프로파일을 설정하거나 egrep 사용법을 정리해서 공유하면 된다. 또는 ctags로 인덱스를 생성하거나 구글의 Code Search 같은 독자적인 인덱싱 도구를 구축해도 좋다.
    • 어떤 방식을 택하든 기대 이상으로 많이, 그리고 생각하지도 못한 방식으로 쓰일 것이며, 개발자들에게 큰 혜택으로 돌아갈 것이다.

 

핵심 정리

  • Code Search는 개발자들이 코드를 쉽게 이해하도록 도와주고, 엔지니어링 생산성을 크게 끌어올린다.
  • Code Search는 다른 도구들의 기반을 제공하며, 모든 문서자료와 개발자 도구가 참조하는 중앙의 표준 저장소라는 가치를 추가로 제공한다.
  • 구글은 코드베이스가 거대하여 독자적인 도구를 만들어야 했고, 코드베이스가 작다면 grep이나 IDE의 인덱싱 기능으로 충분하다)
  • Code Search는 대화형 도구이므로 반응이 빨라야 한다. 검색, 브라우징, 인덱싱 모든 면에서 지연이 짧아야 한다.
  • 신뢰할 수 있는 도구여야만 널리 쓰인다. 신뢰를 얻으려면 코드를 인덱싱 하고, 빠뜨림 없는 결과를 제공하고, 이용자가 원하는 결과를 먼저 보여줘야 한다. 이용자가 한계를 인지하고 있다면 초기의 덜 강력한 버전들도 충분히 유용하고 많이 쓰인다.

eezz 정리

  • 해당 챕터의 Code Search는 구글의 대규모 코드베이스를 로컬에서 이용하기 쉽지 않기 때문에 만들어진 도구이다. 그 과정에서 발생하는 다양한 트레이드오프와 고민에 대해 기록되어 있다.

Google Kythe

https://ko.wikipedia.org/wiki/%EA%B5%AC%EA%B8%80_%EC%B9%B4%EC%9D%B4%EC%8A%A4

 

구글 카이스 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 구글 카이스(Google Kythe)는 코드 이해를 위한 소스 코드 인덱서이자 크로스 레퍼런서이며, 자칭 "코드와 함께 동작하는 도구 빌드를 위한 접속 가능한 (대체적으

ko.wikipedia.org