본문 바로가기
3. 서재

[독서] Clean Code

by su8y 2024. 1. 28.

신입 사원 온보딩 필독서로 꼽히기도 하는 로버트 C. 마틴의 클린 코드(Clean Code)를 읽었습니다.

저 역시 "개발자는 그저 기능 구현만 잘하면 되는 것 아닐까?"라는 안일한 생각을 하던 시기가 있었습니다. 하지만 프로젝트에서 과거에 짠 코드를 내가 이해하지 못하는 상황을 겪으며 깨달았습니다.

우리는 작가(Author)다

이 책을 관통하는 가장 인상 깊은 문장입니다.

코드를 작성하는 시간보다 코드를 읽는 시간이 압도적으로 깁니다. 내 코드를 읽을 동료, 그리고 미래의 나를 위해 우리는 '읽기 좋은 글'을 쓰듯이 코드를 작성해야 합니다.

  • 코드를 읽다가 "잠깐, 이게 무슨 뜻이지?" 하고 정의(Definition) 부분으로 점프하게 만든다면, 그 이야기의 흐름은 끊긴 것입니다. 몰입감을 깨지 않는 글쓰기가 필요합니다.
  • 우리가 쓴 글(코드)의 독자는 컴파일러가 아닙니다. 컴파일러는 변수명이 a든 account든 상관하지 않습니다. 

훌륭한 작가는 독자가 술술 읽을 수 있도록 지속적인 퇴고를 거듭합니다. 개발자도 마찬가지인거 같습니다. 코드를 '입력하는 속도'가 아니라, '읽히는 속도'를 최적화하기 위해서 지속적으로 리팩토링을 해야되는거 같습니다.

반대 의견

책에서는 Java를  바탕으로 좋은 코드와 나쁜 코드의 예시를 보여주며 설명을 해줍니다.
저의 환경에서 바로 적용할수있는 부분부터 내용을 추가하려니 애매하고 오히려 코드가 난해해질수 있다고 느끼는 섹션들도 많았습니다.

가령 '함수는 최대한 작게 (줄 제한)', '주석 == 나쁜 것' 등 자칫하면 잘못된 신념(혹은 개념을) 가질수있을거같습니다.

저 뿐만이 아니라 다른 독자들도 애매하다고 느껴서 그런지.. 다른 독자들은 각자의 반대의견을 책이나 블로그로 표현하고 있는거 같습니다.

이런 면에서 보면 책이나 기술 문서혹은 블로그 포스팅을 보더라도 '나의 생각', '저자의 생각', '또 다른 독자들의 생각'을 천천히 비교해보는 습관을 가지는게 좋을거같습니다.

무기로 사용하지 말자

책의 후반부는 자바(Java) 언어의 구체적인 사례나 다소 논쟁적인 주제들도 포함하고 있습니다. 책의 모든 규칙을 율법처럼 따르기보다는, 팀의 컨벤션과 상황에 맞춰 유연하게 적용하는 지혜가 필요합니다.

유연하게 적용하지 않고 책의 내용을 마치 개발자의 컨벤션이라고 강요하거나, 코드 리뷰에서 상대를 공격하는 무기로 사용해서는 안 됩니다.

진정한 '클린 코드'는 책 속에 있는 것이 아니라, 함께가기 위함을 잊지 않고, 고통받지 않고 즐겁게 일할 수 있는 코드를 작성하는데에 있을거 같습니다.