[BOOK] 실무로 통하는 클린코드
프로젝트를 진행하면서 구현에 급급했던 모습에서
한 단계 발전해서 ‘어떻게 하면 코드를 더 잘 쓸 수 있을까?’ 를 고민하는 나를 발견했다.
현업에서는 어떻게 코드를 작성하고 리팩토링하는지 알고 싶었다.
‘내가 지금 작성하고 있는 코드가 맞는 코드인가? 어떻게 하면 더 잘 쓸 수 있을까’
코딩을 하면서 내가 작성한 코드에 대해 피드백을 받고 더 발전하고 싶은 욕심이 생겼다.
GPT의 도움과 나의 검색 그리고 머리굴리기로 코드를 작성하고 있지만 늘 2%가 부족함을 느끼고 있었다.
그런 고민과 함께, 마침 서평을 쓸 기회를 얻게 되었는데,
내가 고민 하고 있는 두 단어가 떡하니 들어간 책이 눈에 들어왔다.
그것은 ‘실무’와 ‘클린코드’였다.
책의 첫 머리에는 내가 하고 있는 고민이 적혀 있는 것 같았다.
- 사람들이 이해하기 쉬운 코드를 작성하려면 어떻게 해야 할까?
- 코드를 오랫동안 안전하게 유지 보수 할 수 있는 방법은 무엇일까?
어떤 내용이 있나?
어떤 내용이 담겨 있을지 목차를 먼저 훑어봤다. 목차만 읽었음에도 꽤 흥미로운 주제들이 많았다. 평소에 궁금했던 내용들이 들어있었고, 책은 그에 대한 답을 어떻게 설명해 줄 지 기대되었다.
- 코드 스멜이란 무엇인가? 리팩터링은 무엇인가? 왜 클린코드인가?
- 객체의 본질 파악하기, 기본형 데이터 구체화하기, 문자열 남용 제거하기
- var를 const로 변경하기, 본질 변경 금지하기, 지연된 초기화 제거하기, 호이스팅 방지하기
- 명시적 반복 대체하기, 재사용 변수 범위 좁히기
- 헬퍼와 유틸리티 이름 변경 및 분리하기, 추상적인 이름 변경하기
- 주석을 함수명으로 변환하기, 주석을 테스트로 대체하기
- 반복되는 코드 제거하기, 메서드를 객체로 추출하기, 기능 토글 제거하기
- 과도한 인수/변수/괄호/메서드 줄이기
처음 받아 읽어본 책의 느낌은 그다지 친절하지 않다고 느껴졌다.
이 책에서 기본으로 이해하고 가야 하는 개념에 대해 1-2장에서 설명해주는데, 약간 추상적이라 크게 와닿지 않았다.
어떤 문제 상황을 설명할 때 하나의 언어로만 이야기 하지 않는다.
JavaScript( or TS ), Ruby, Java, PHP 등 다양한 언어로 코드를 설명하기 때문에 JavaScript만 공부했던 나는 약간의 혼란이 오기도 했다. 하지만 클린코드는 특정 프로그래밍 언어에만 제한되는 것이 아니기 때문에 일부러 다양한 언어로 설명한다고 이야기한다.
각 장에서는 코드를 작성하며 일어날 수 있는 여러 상황들을 <문제><해결><설명>의 순으로 설명한다.
책에서는 이것을 레시피라고 이야기하는데 나에게 모든 레시피가 와 닿는 것은 아니었다.
저자도 알고 있는지 레시피에 대한 이야기를 할 때 다음과 같은이 이야기한다.
'책의 레시피를 최대한 활용하려면, 내가 사용하는 프로그래밍 언어와 디자인 솔루션으로 변환해 적용해보기를 추천한다. 레시피를 통해 문 제를 이해하고 원하는 결과를 파악하고 코드를 개선하는 방법을 배워봐라' 라고 말이다.
나 또한 책의 스타일에 적응해가고 보니 내 코드로 변형해서 생각할 수 있는 활용력?이 생겼다.
책을 읽으면 읽을수록 내가 작성하고 있는 코드가 떠오르면서
‘이렇게 고쳐볼 수 있겠다’는 아이디어가 떠올라서 굉장히 재미있게 읽고 있는 중이다.
어떻게 활용해 볼 수 있을까?
실제로 책을 통해 아이디어가 떠올라 현재 진행하고 있는 프로젝트에 적용해보고 싶은 욕구가 뿜뿜했다. ‘당장 코드로!!!’ 이런 상황이 되는 것은 아니기 때문에 이렇게 아이디어가 떠오른 것을 어떻게 정리할 수 있을까 고민을 하던 중에 목차를 활용해야 겠다는 생각을 했다.
(1) 노션에 정리
각 장의 내용에서 내가 이해한 내용을 나만의 언어로 바꿔서 정리해봤다. ( 진 행 중 )
이렇게 정리하고 보니 클린코드에 대한 개념이 훨씬 쉽게 다가왔다.
그래서 내 코드에도 적용해 볼 수 있을 것 같다는 자신감이 뿜뿜 커졌다.
(2) 목차 활용하기
또 다른 방법은 목차에 내용 요약해 놓는 것이다.
이 책은 번역본이기 때문에, 목차만 봤을 때 어떤 내용인지 감이 안 오는 경우가 종종 있다.
그리고 목차에 모든 내용을 담을 수 없기에 내가 꼭 적용해보고 싶은 부분이 어디인지 기억이 안나는 경우가 있을 수 있기에 해당 레시피를 간단하게 정리해서 목차에 써 놓고 있다. ( 진 행 중 )
이렇게 정리해서 옆에 요약본처럼 두고 싶을 정도로 알찐한 내용이 들어있었던 책이다.
현재 진행형으로 읽고 있는 책이라 앞으로 적용해 볼 수 있는 레시피들이 더욱 궁긍해진다.
첫 진입시 약간의 마음의 준비가 필요하지만 ㅋㅋㅋㅋㅋ
‘한번은 읽어보자’ 하고 마법을 걸고 시작만 한다면 분명 내 코드에도 변화가 있을 거라 생각한다.
"한빛미디어 <나는리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."