카테고리 없음

[BOOK] 실무로 통하는 클린코드

소팡팡 2024. 8. 25. 12:09

프로젝트를 진행하면서 구현에 급급했던 모습에서

한 단계 발전해서 ‘어떻게 하면 코드를 더 잘 쓸 수 있을까?’ 를 고민하는 나를 발견했다.

현업에서는 어떻게 코드를 작성하고 리팩토링하는지 알고 싶었다.

 

‘내가 지금 작성하고 있는 코드가 맞는 코드인가? 어떻게 하면 더 잘 쓸 수 있을까’

코딩을 하면서 내가 작성한 코드에 대해 피드백을 받고 더 발전하고 싶은 욕심이 생겼다.

GPT의 도움과 나의 검색 그리고 머리굴리기로 코드를 작성하고 있지만 늘 2%가 부족함을 느끼고 있었다.

 

그런 고민과 함께, 마침 서평을 쓸 기회를 얻게 되었는데,

내가 고민 하고 있는 두 단어가 떡하니 들어간 책이 눈에 들어왔다.

그것은 ‘실무’와 ‘클린코드’였다.

 

 

책의 첫 머리에는 내가 하고 있는 고민이 적혀 있는 것 같았다.

  • 사람들이 이해하기 쉬운 코드를 작성하려면 어떻게 해야 할까?
  • 코드를 오랫동안 안전하게 유지 보수 할 수 있는 방법은 무엇일까?

 

어떤 내용이 있나?

 

어떤 내용이 담겨 있을지 목차를 먼저 훑어봤다. 목차만 읽었음에도 꽤 흥미로운 주제들이 많았다. 평소에 궁금했던 내용들이 들어있었고, 책은 그에 대한 답을 어떻게 설명해 줄 지 기대되었다.

  • 코드 스멜이란 무엇인가? 리팩터링은 무엇인가? 왜 클린코드인가?
  • 객체의 본질 파악하기, 기본형 데이터 구체화하기, 문자열 남용 제거하기
  • var를 const로 변경하기, 본질 변경 금지하기, 지연된 초기화 제거하기, 호이스팅 방지하기
  • 명시적 반복 대체하기, 재사용 변수 범위 좁히기
  • 헬퍼와 유틸리티 이름 변경 및 분리하기, 추상적인 이름 변경하기
  • 주석을 함수명으로 변환하기, 주석을 테스트로 대체하기
  • 반복되는 코드 제거하기, 메서드를 객체로 추출하기, 기능 토글 제거하기
  • 과도한 인수/변수/괄호/메서드 줄이기

 

처음 받아 읽어본 책의 느낌은 그다지 친절하지 않다고 느껴졌다.

이 책에서 기본으로 이해하고 가야 하는 개념에 대해 1-2장에서 설명해주는데, 약간 추상적이라 크게 와닿지 않았다.

 

어떤 문제 상황을 설명할 때 하나의 언어로만 이야기 하지 않는다.

JavaScript( or TS ), Ruby, Java, PHP 등 다양한 언어로 코드를 설명하기 때문에 JavaScript만 공부했던 나는 약간의 혼란이 오기도 했다. 하지만 클린코드는 특정 프로그래밍 언어에만 제한되는 것이 아니기 때문에 일부러 다양한 언어로 설명한다고 이야기한다. 

 

각 장에서는 코드를 작성하며 일어날 수 있는 여러 상황들을 <문제><해결><설명>의 순으로 설명한다.

책에서는 이것을 레시피라고 이야기하는데 나에게 모든 레시피가 와 닿는 것은 아니었다.

 

저자도 알고 있는지 레시피에 대한 이야기를 할 때 다음과 같은이 이야기한다.

'책의 레시피를 최대한 활용하려면, 내가 사용하는 프로그래밍 언어와 디자인 솔루션으로 변환해 적용해보기를 추천한다. 레시피를 통해 문 제를 이해하고 원하는 결과를 파악하고 코드를 개선하는 방법을 배워봐라' 라고 말이다. 

 

나 또한  책의 스타일에 적응해가고 보니 내 코드로 변형해서 생각할 수 있는 활용력?이 생겼다.

책을 읽으면 읽을수록 내가 작성하고 있는 코드가 떠오르면서

‘이렇게 고쳐볼 수 있겠다’는 아이디어가 떠올라서 굉장히 재미있게 읽고 있는 중이다.

 

어떻게 활용해 볼 수 있을까?

실제로 책을 통해 아이디어가 떠올라 현재 진행하고 있는 프로젝트에 적용해보고 싶은 욕구가 뿜뿜했다. ‘당장 코드로!!!’ 이런 상황이 되는 것은 아니기 때문에 이렇게 아이디어가 떠오른 것을 어떻게 정리할 수 있을까 고민을 하던 중에 목차를 활용해야 겠다는 생각을 했다.

 

(1) 노션에 정리

각 장의 내용에서 내가 이해한 내용을 나만의 언어로 바꿔서 정리해봤다. ( 진 행 중 )

이렇게 정리하고 보니 클린코드에 대한 개념이 훨씬 쉽게 다가왔다.

그래서 내 코드에도 적용해 볼 수 있을 것 같다는 자신감이 뿜뿜 커졌다.

https://www.notion.so/fun-blog/27dfcb83a18140b18b1cadf71952b384

 

(2) 목차 활용하기

또 다른 방법은 목차에 내용 요약해 놓는 것이다.

이 책은 번역본이기 때문에, 목차만 봤을 때 어떤 내용인지 감이 안 오는 경우가 종종 있다.

그리고 목차에 모든 내용을 담을 수 없기에 내가 꼭 적용해보고 싶은 부분이 어디인지 기억이 안나는 경우가 있을 수 있기에 해당 레시피를 간단하게 정리해서 목차에 써 놓고 있다. ( 진 행 중 )

 

이렇게 정리해서 옆에 요약본처럼 두고 싶을 정도로 알찐한 내용이 들어있었던 책이다.

현재 진행형으로 읽고 있는 책이라 앞으로 적용해 볼 수 있는 레시피들이 더욱 궁긍해진다.

첫 진입시 약간의 마음의 준비가 필요하지만 ㅋㅋㅋㅋㅋ
‘한번은 읽어보자’ 하고 마법을 걸고 시작만 한다면 분명 내 코드에도 변화가 있을 거라 생각한다.

 

 

 

"한빛미디어 <나는리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."