본문 바로가기
[Review]/Book

[도서 리뷰] 읽기 쉬운 코드

by 해피빈이 2024. 5. 14.

> 진행에 앞서

코드를 작성하는 일을 오랜시간 업으로 해온 개발자의 시선에서 보면 코드에는 개발자의 사상이 담기게 된다.

보는 관점마다 코드의 특성을 다르게 이야기할 수 있겠지만, 지금은 코드를 작성할 때 얼마나 읽기 좋은 코드인지에 대한 판단이 곧 좋은 코드라고 판단하는 관점에 대한 것이다.

쉽게 말해 가독성이 좋은 코드가 좋은 코드이다.

나는 나 스스로에게 이해력이 낮기 때문에 최대한 쉽게 작성하는 것이 필요하다고 생각하는 편이지만, 그것보다도 중요한것은 코드를 읽는 시간에 훨씬 많은 시간을 소요하기 때문이다. 물론 이 읽는다는 표현은 다른사람의 코드를 읽는 행위를 말하는 것이기 때문에, 일정 시간이 지나면, 내가 작성한 코드가 더 많아질 수 있기 때문에 상관없지 않은가 하고 생각할지도 모른다.

하지만 그렇지 않다.

내가 작성한 코드도 고작 한 달이면 다른 사람의 코드가 된다. 다른 사람의 손에 넘어가기 때문에 다른 사람의 코드라는 의미도 되지만, 그냥 두어도 다른 사람의 코드가 된다. 정확히 말하면, 현재의 내가 아닌 한 달 전의 나라는 사람이 작성한 코드이기 때문이다.

다른 사람의 생각을 알기 어렵듯, 한 달 전의 내가 갖고 있던 생각을 알기도 어렵다. 그런 맥락에서는 같다.

그렇기 때문에 읽기 좋은 코드를 만들려고 노력하고 있고, 그러던 차에 너무도 관심이 가는 제목의 책을 발견하게 되었다.

 

 

> 책에 대한 간단한 정보

앞 표지

 

책은 매우 심플한 표지로 되어있다. 이런 간단명료한 스타일을 나는 좋아한다. 게다가 간단한 그림도 하나 있지 않은가.

보석같은 코드를 의미하는지, 보석이 가운데에 그려져있다.

Code That Fits in your Head

'당신의 머리에 딱 맞는 코드'로 해석되는 이 문구도 잘 맞는 것 같다.

내가 이해할 수 있는 폭보다 너무 좁으면 그것도 문제이다. 효율이 많이 떨어질 것이기 때문이다. 반대로 내가 이해할 수 있는 폭보다 너무 넓어도 문제가 된다. 그것을 이해하기 좀처럼 어려우면 코드를 포기하게 될테니 말이다.

적절히 fit에 맞춘 코드가 되도록 노력하는 것. 그것이 읽기 쉬운 코드를 만드는 과정일 것이라고 생각한다.

 

 

> 인상깊은 부분들

fit에 대한 설명

지속 가능성에 대한 설명인데, 이것도 밸런스가 중요하다는 이야기이다.

여기에서 말하는 가치란, 내가 만든 코드로 어떤 의미있는 결과물을 만들어내는 것을 의미한다. 맞다. 결과물을 잘 만들어야 하는 것은 너무도 중요하다.

또한 반대로 가치에 초점을 두지 않는다는 것은, 결과물을 만들지 않는다는 것일까? 그것보다도 결과물을 만드는 것보다 잘 구조화된 코드를 만드는 것(엔지니어링 관점)을 중요하게 생각하여, 상당히 짜임새 있는 코드를 만드는 데 집중한다는 것이다.

그렇지만, 두가지 다 장단점이 존재한다. 가치에 초점을 둘 경우, 엔지니어링 관점에서 최악의 코드가 나올 수도 있다. 잘 짜여진 구조보다는 그저 잘 작동하는데 집중하기 때문에, 당장에는 잘 돌아갈지언정 수정이 매우 어려운 코드가 될 수 있다. 코드라는 것이 한 번 만들고 가만히 둘 수는 없기 때문에 결국은 자기가 제 무덤을 파는 꼴이 될 수도 있다.

반대로, 가치에 초점을 두지 않았을 경우 잘 만든 코드는 되어갈 수 있으나, 사람들에게 결과물을 내놓기는 어려워진다. 적절한 시기에 결과물이 나와주어야 하는데, 그 결과물이 나오지 않아서 경험할 수도 없기 때문이다.

 

그래서 그 밸런스를 잘 잡는 것이 중요하다. 여기에서는 그것을 잘 설득하고 있다.

 

잘 읽히는 코드가 중요한 이유

이것은 책을 읽기 전부터 나도 매우 공감하는 내용인데, 코드는 작성하는 시간보다 읽는 시간이 더 많이 소요되기 때문이다. 잠깐 쉽게 작성한 코드를 읽으려면 매우 많은 시간을 소요해야할지도 모른다. 그러면 과연 잘 작성된 코드라고 말할 수 있을까?

읽기 쉬운 코드를 작성해야 하는 이유는 충분하다.

사실 누구나 공감하는 내용이지만, 그 논리를 세우기엔 부족했던 근거들을 이 책의 앞장에서 충분히 다루고 있다.

자신을 충분히 설득했다고 생각하면, 그 다음으로 넘어갈 수 있다.

실제 여러가지 기법들을 통하여서 방법을 알 수 있었다.

 

큰 제목만 나열하면 다음과 같다.

- 수직 슬라이스

- 캡슐화하기

- 다각화하기

- 분해하기

- API 설계

- 팀워크

- 코드를 보강해봅시다

- 유닛테스트 편집하기

- 문제 해결하기

- 관심사의 분리

등...

 

 

리듬에 대한 것

코드를 작성하는 기법 뿐 아니라 코드를 작성할 때 투자하는 시간을 리듬에 비유하여 표현한 것이 인상적이었다.

바이오리듬같은 것을 생각하면 된다.

내가 얼마나 집중하고 쉬느냐에 따라서 집중하는 시간이 가치있게 채워질 수 있다는 것이다.

이 또한 공감이 되었다. 온전히 집중할 시간이 있어야 한다.

그래서 나는 업무 메신저도 알람소리를 켜 놓지 않는다. 시각적으로 보면 알 수 있을 정도로 했다.

대신 보는 간격을 너무 길지 않게 하고 있는데, 여기에서 제시하는 25분과 근접한 느낌이다.

집중하는 시간에 대해 애매하게 느껴지는 사람은 이것을 한번 참고하면 좋을 것 같다.

 

부록 - 규칙에 대한 내용

저자가 작성한 규칙들이다.

50/72 규칙, 80/24 규칙 등 이곳저곳에서 숫자로 표현한 것들이 인상적이었다.

예전에 TV에서 나온 개그 코너중에 '애정남'이라는 것이 있다.

애매한 것을 정해주는 남자인데, 이것이 그런 느낌이다.

얼마나 작성해야 좋은지 모르는 것들을 제시해주고 있다. 그래서 편안하다.

자신만의 기준이 있으면 그대로 하면 된다. 하지만 모르겠다면 이것을 참고하자.

 

 

뒷표지

로버트 C. 마틴을 비롯해 여러 추천사가 적힌 뒷표지를 보고 있노라니 공감이 매우 많이 되었다.

이 책을 부디 많은 사람이 읽었으면 하는 생각이 들었다.

 

> 추천 독자

- 숙련도가 높거나 입문하는 입장에 상관없이 개발자라면 모두

- 개발 팀 내에서 스터디를 하고 싶은 경우 팀원과 함께

 

 

> 개인적인 평점

- 가격: 7 / 10

- 내용: 10 / 10

- 디자인: 8 / 10

- 구성: 9 / 10

 

> 정보

저자: 마크 시먼

옮긴이: 김현규

출판사: 길벗

가격: 33,000원

전체 페이지: 384페이지

 

** 이 리뷰는 "길벗"을 통해 도서를 제공받아 작성하였습니다.

반응형

댓글