Published on

도서 "코드 작성 가이드" 리뷰

코드 작성 가이드

도서 링크

길벗에서 도서 지원을 받아 리뷰를 작성하게 되었습니다. 책에 관심이 있는 분들에게 도움이 되었으면 좋겠습니다. 또한 제기 책을 읽으면서 느낀 점들을 정리해봅니다.

요약

  • 가독성 좋은 코드 작성에 관한 방법론과 저자의 생각을 공유한 책입니다.
  • 예시 코드가 Kotlin으로 작성되어 있어서 개인적으로 추천 대상은 1순위 안드로이드 개발자, 2순위 Kotlin 사용 개발자, 3순위 Typescript에 익숙한 개발자입니다.
  • 좋은 코드에 대한 저자의 생각을 공유하고 확신하거나 강요하지는 않는 서술 방식이 좋았습니다.
  • 읽기 쉽고 수정하기 쉬운 코드를 작성하는 데에 관심있는 개발자라면 추천합니다.

책 소개

책의 풀네임은 "현직 LINE 개발자가 알려주는 읽기 쉽고 코드 리뷰하기 좋은 코드 작성 가이드"입니다. 제목에서부터 많은 내용을 알려주고 있습니다. 클린 코드로 대표되는 가독성 좋은 코드를 작성하기 위한 방법에 관한 책임을 알 수 있고 실제 내용도 그렇습니다.

특징

자연스러운 번역

저자 "이시가와 무네토시"는 일본 LINE의 안드로이드 개발자입니다. 옮긴이 "정기욱" 개발자는 저자의 같은 팀 동료인 iOS 개발자입니다. 이러한 저자-옮긴이의 관계는 처음 보는데, 아무래도 저자의 생각을 잘 알고 있고 직접 마주하기 편한 관계이니 번역이 자연스럽게 잘 되었다는 느낌을 받았습니다.

강요하지 않는 서술 방식

매우 유명하고 좋은 책이지만 클린 코드를 읽으면서 조금 아쉬웠던 부분은 "이게 무조건 옳다"라는 느낌을 받을 수밖에 없었습니다. 이러한 내용은 코드 작성에 관한 지식과 주관이 정립되지 않은 주니어 개발자에게는 위험하다고 생각하는데, 이 책에서는 일단 지식이나 정보를 소개하고 그에 관한 자신의 의견을 서술합니다. 그리고 마지막엔 "프로젝트나 언어를 고려하여 상황에 맞게 적용하는 것이 바람직합니다."라는 말을 자주 덧붙여 책의 내용을 맹신하는 위험을 줄이려는 저자의 의도가 느껴집니다.

Kotlin 예제 코드

저자가 안드로이드 개발자이다보니 예제 코드가 Kotlin으로 작성되어 있습니다. Typescript와 닮은 언어라는 말만 듣고 실제로 처음 보게 됐는데, Typescript에서는 쓰지 않고 Kotlin에서만 쓰는 개념들만 생소했고 전혀 이해하지 못할 정도는 아니었습니다. 안드로이드 개발자, Kotlin 개발자에게 최적인 책이겠지만 Typescript 개발자에게도 나쁘지는 않다고 말할 수 있겠습니다.

주요 내용

가독성 높은 코드에 관하여

가독성 높은 코드가 좋다는 이야기는 많지만 모든 개발자가 지지하지는 않습니다. 이 책에서는 "왜" 가독성 높은 코드를 작성해야 좋은지부터 이야기합니다. 생산성과 연관지어 앞으로 할 이야기에 대한 이유를 명확히 밝히고 보이스카우트 원칙, KISS, 단일 책임 원칙 등 몇 가지 프로그래밍 원칙들을 제시하여 방법도 함께 제시합니다. 여기서는 보이스카우트 원칙(코드를 변경할 때는 주변을 둘러보고 소소한 개선이 필요한 부분을 함께 살펴보아야 한다는 원칙)과 KISS(Keep It Simple Stupid - 바보스러울 정도로 단순하게 만들어라)가 인상깊었습니다.

네이밍

저는 이름짓기에 굉장히 많은 시간을 들입니다. 하지만 꽤 자주 좋지 않은 이름을 짓게 되고 나아지려고 하지만 방법을 잘 모르겠어서 답답함을 느끼고 있었습니다. 그러던 참에 반가운 챕터였습니다. 여기서는 문법을 무시하고 네이밍하는 이유, 긍정적인 단어 사용하기 등 좋은 네이밍에 관한 기준들을 제시합니다. 실무에 바로 적용할 수 있는 좋은 부분이었습니다.

주석

저는 주석을 거의 사용하지 않습니다. 주석이 없어도 알 수 있는 코드가 좋은 코드라고 알고 있기 때문입니다. 이는 사실이지만 "주석이 없어도 알 수 있는 코드"를 작성할 수 있는 개발자에게 적용되는 사실입니다. 정말 코딩을 너무 잘하는 사람이 아니라면 어렵다고 생각합니다. 책에서는 "좋은 주석을 작성하는 법"을 소개합니다. 주석을 작성하지 않아야 한다는 편견을 깨주었고, 어떻게 하면 가독성과 품질이 좋은 코드를 만들 수 있는지 근본적인 목적에 집중하게 되는 챕터였습니다.

상태, 함수, 의존 관계

클래스 구조, 더 나아가 객체 지향에서 적용할 수 있는 개념들을 설명합니다. 아직 실무에 적용하며 익히고 있는 부분이라 이해가 가지 않는 부분도 있었지만 상황에 따라 적절한 "상태"를 적용하고, 함수의 책임을 명확히하여 잘 분리하고, 의존 관계의 방향성을 객체 지향 기본 원칙에 맞게 설계하는 등 실무에 직접 적용할 수 있는 부분을 간간히 찾아보며 적용해봐야겠습니다.

코드 리뷰

꽤나 인상깊던 부분입니다. 코드 리뷰에 관한 내용까지 소개합니다. 코드 리뷰도 가독성과 품질 좋은 코드를 위한 큰 요소이기 때문에 저자가 이 챕터를 추가한 것 같습니다. 어떻게하면 분쟁이 일어나지 않고 빠르게 좋은 코드 리뷰를 할 수 있는지 소개합니다. 이 또한 바로 실무에 적용할 수 있는 좋은 내용이었습니다.

마무리

평소 좋은 코드 작성에 관심이 많은 저에게는 반가운 책이었습니다. 좋은 코드 작성때문에 개발 속도가 느려지는 경우가 있는데, 이를 설득할 수 있는 방법은 좋은 코드로 내가 속한 개발 조직이 결과적으로 이득을 보는 경험을 겪게 하는 것이라고 생각합니다. 이를 위한 여정에 도움을 주는 좋은 책이었습니다. 우리는 아마 매우 뛰어고 특출난 개발자가 아니라면 코드를 작성하는 내내 "완벽한 코드"는 작성할 수 없을 것이라고 생각합니다. 그저 "완벽한 코드를 위한 노력"을 지속할 뿐일 것입니다. 커리어 내내 옆에 두고 생각날 때 꺼내볼 수 있는 책으로 두려고 합니다. 좋은 코드 작성에 관심있는 어떤 개발자든 이 책을 추천합니다.

도서 지원해주신 길벗에 감사하다는 말씀을 전합니다.