ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 내 코드가 그렇게 이상한가요?
    Backend/책 정리 2024. 6. 6. 20:07

    시작에 앞서...

    예전에 블로그에 클린 코드나 이팩티브 자바를 읽고 정리하는 내용을 올렸었는데, 관련된 정리 내용은 다른 블로그에도 너무 많은것 같아서 앞으로는 책 정리 내용을 블로그에 올리지는 않을 예정입니다.


    사실 그전에도 책은 꾸준히 읽고 있었는데 블로그에 정리는 하지 않았고 대신 개인 노트 앱에 정리하고 github에 올리는 방식으로 변경하고 여기 블로그에는 책에 대한 리뷰만 작성하려고 합니다.

     

    내용 정리에 대한 깃허브는 아래 링크를 통해 볼 수 있습니다.

     

    기술 책 정리 github repository](https://github.com/jin-mook/TechBookSummaries\))

     

    이번 글은 최근에 다 읽었던 '내 코드가 그렇게 이상한가요' 라는 책에 대한 리뷰입니다.

     

     


     

    챕터별 리뷰

     

    지금까지 스터디를 통해 꾸준히 책을 읽고 있었는데, 이번에 처음으로 개인적으로 시간을 내어서 읽은 책이었습니다.

     

    예전에 NextStep 의 TDD 클린 코드 교육을 받았었는데, 그때는 실습을 하고 여러 멘토분들에게 코드 리뷰를 받으며 클린한 코드를 작성하기 위해 학습했다면, 이번 책을 읽으면서는 왜 이렇게 코드를 작성하면 좋은지에 대해 많이 느낄 수 있었습니다.

     

    책에서는 왜 이런 구조가 좋지 않은지에 대한 설명을 많이 하고 있습니다. 이러한 좋지 못한 구조를 악마라고 표현하며, 악마를 퇴치하는 방법을 알려주고 있습니다. 따라서 끝까지 책을 읽다보면 반복해서 비슷한 악마 퇴치 방법에 관한 내용이 나오다 보니 저절로 머리에 박히게 된 것 같습니다. 좋은 구조를 알기 위해서는 가장 중요한게 무엇이 나쁜 구조인지를 아는 것이라고 책에서 많이 얘기를 하고 있는데 책을 읽으며 여러 예시 코드들을 통해 어떤 구조가 나쁜 구조인지, 이게 어떻게 좋은 구조로 바뀌어 가는지 잘 설명이 되어 있어서 읽기 좋았습니다.

     

    각 챕터 별로 간단하게 정리를 해보자면

     

    1장에서는 잘못된 구조의 문제에 대한 얘기를 하고 있습니다. 해당 챕터에서 나오는 얘기를 보다보면 지금까지 작성했던 저의 코드나, 회사에서 봤던 코드들이 많이 떠오르는것 같았습니다. 결국 잘못된 구조에서 오는 문제가 무엇인지 먼저 알게 해주고 앞으로의 내용에 더 흥미를 느낄 수 있었던 챕터였습니다.

     

    2장에서는 설계 첫걸음으로 앞으로 여러 장에 걸쳐 설명할 내용에 대한 맛보기 느낌의 챕터였습니다.

     

    3장의 경우 어떻게 클래스를 설계하는 것이 좋은지 설명을 해주는 챕터입니다. 응집도가 높은 객체, 불변 필드와 가드에 대한 설명이 나오고 있습니다.

     

    4장에서 앞에서 잠깐 언급한 불변을 활용하여 악마퇴치를 하는 방법에 대한 설명을 하고 있습니다.

     

    5장에서는 응집도에 대한 설명을 하고 있습니다.

     

    6장에서는 조기 리턴 전략을 이용한 if 문 처리에 관한 내용이 나오고 있습니다. 특히 아직 디자인 패턴에 대해 많이 알지는 못하는데, 대충 이름이랑 어떤 형식인지 알고 있던 전략 패턴을 통해 복잡한 스위치 구문을 없애는 방법에 대해 설명을 하고 있습니다. 이때, interface 를 이용한 전략패턴을 통해 악마를 퇴치하는 방법이 자세히 나와있어서 좋았던 챕터였습니다.

    정책 패턴에 대해서도 설명했는데 interface를 이렇게도 사용할 수 있구나를 느끼게 된 챕터여서 책을 다 읽고 나중에 관련된 구조의 요구사항에 대해 코드를 구현할 일이 있다면 다시 읽어보면 좋을만한 챕터라고 느꼈습니다.

     

    7장에서는 일급 컬렉션 객체에 대해 나오고 있습니다. 일급 컬렉션은 TDD 교육을 통해 처음 들었는데 이번에 좀 더 자세히 알게 되어 좋았고, 좀 더 확실하게 사용할 수 있을것 같습니다.

     

    8장에서는 강한 결합을 어떻게 느슨하게 할 수 있는지에 대해 설명하고 있습니다. 아직까지 package private 을 사용한 경험이 없는데 나중에 개인적으로 꼭 한번 사용해서 코드 뿐만 아니라 패키지에서도 완전히 차단할 수 있도록 적용해야겠다는 생각이 많이 들었던 챕터입니다.

     

    9장에서는 지금까지 나온 악마 외에 추가적인 악마에 대해 설명하고 있습니다. null, 데드 코드 등 지금까지 나온 악마 외에 많이 볼수 있는 구조의 악마에 대해 설명하고 있습니다.

     

    10장 부터 12장 까지는 이름에 대한 얘기를 주로 하고 있습니다. 어떻게 하면 좋은 이름을 만들 수 있을지, 어떻게 주석을 이용하면 좋을지에 대한 얘기를 하는데, 특히 주석 부분에서 코드에 대한 설명을 작성하는 주석보다, 이후에 수정할때 어떻게 바꾸면 된다를 설명해주는 주석을 작성하라는 얘기가 신선하게 느껴졌던것 같습니다.
    그리고 이름을 작성할때 목적을 염두에 두고 작성하라는 말도 예시를 통해 좀 더 확실하게 느낄 수 있던 챕터들이었습니다.

     

    13장, 14장은 지금까지 학습한 내용을 어떻게 사용할지에 대한 내용입니다. 모델링의 과정은 어떻게 거치고, 어떻게 리팩터링을 진행할지에 관한 내용이 있습니다.

     

    마지막으로 15장부터 17장은 마인드셋과 관련된 내용이었습니다. 앞으로 어떻게 개발자로서 마인드셋을 세팅하고 일을 할지 스스로 한번 돌이켜 볼 수 있는 시간이었습니다. 책을 읽으며 내용도 좋았지만 스스로 많이 돌이켜보게 되는 그런 챕터였습니다.

     

     

     


     

    정리

     

    개인적으로 기본에 대해 많이 알 수 있던 책이었습니다. 그래서 저처럼 주니어 개발자들이나 회사에서 코드 리뷰를 받기 어려운 환경에서 어떻게 코드를 작성하는게 좋을지 의문이 있는 분들이라면 한번쯤 읽어보면 좋지 않을까 싶습니다. 물론 기본적인 내용이 많이 나와서 대부분 알고 있는 기법들이 많을 수 있는데, 알고 있더라도 어떤 효과가 있는지 한번 더 정리하면서 빠르게 읽기에도 부담없는 양이라고 생각이 듭니다.

     

    책에서도 얘기하지만 결국 많이 읽는것도 중요하지만, 더욱 중요한것은 output을 내야한다는 점입니다. 단순 이론보다는 결국 직접 행동으로 실천을 해봐야 더욱 내것이 된다라는 의미로 얘기를 하고 있는데, 지금 학습하고 있는 클린 아키텍처나 DDD와 관련된 내용에서 나온 내용과 같이 활용할 수 있는 부분이 많다고 느꼈습니다. 따라서 앞으로 개인적으로 프로젝트를 하거나 회사에서 일을 할 때 이번에 학습한 내용들을 사용할 수 있는지 고민해보고 활용을 꼭 해봐야겠다는 생각을 많이 했습니다.

     

    마지막으로 저처럼 따로 리뷰를 받기 어렵지만, 더 좋은 코드가 무엇일지 고민을 하는데 어떤 책으로 시작하면 좋을까 싶은 분들에게는 조심스럽게 추천을 하면서 리뷰를 마무리 하도록 하겠습니다.

     

    다음에 읽는 책도 이런 식으로 꾸준히 리뷰하도록 하겠습니다.

     

    피드백은 언제나 환영입니다.

     

     

     

    'Backend > 책 정리' 카테고리의 다른 글

    클린 코드를 마무리 하며...  (0) 2023.05.18
    객체 참조를 해제하라  (0) 2023.05.17
    Clean Code 12 ~ 13 장  (0) 2023.04.04
    Clean Code 9 ~ 11 장  (0) 2023.03.28
    Clean Code 7~8 장  (0) 2023.03.21

    댓글

Designed by Tistory.