본문 바로가기
발전소/독서 및 서평

[독서 및 서평] : Clean Code | 읽는 중

by 오주현 2021. 12. 26.
반응형
Clean Code

https://book.naver.com/bookdb/book_detail.nhn?bid=7390287 

 

Clean Code

『CLEAN CODE(클린 코드)』은 오브젝트 멘토(OBJECT MENTOR)의 동료들과 힘을 모아 ‘개발하며’ 클린 코드를 만드는 최상의 애자일 기법을 소개하고 있다. 소프트웨어 장인 정신의 가치를 심어 주며

book.naver.com

 

목적
  • Clean Code의 교과서라고 불리는 책을 읽어보고 싶다.
  • 깔끔한 코드를 통해 스스로 발전하는 개발자가 되고 싶다.
  • 나쁜 코드는 어떤 코드인지, 좋은 코드는 어떤 코드인지 보고 무엇이 다른가 느껴보고 싶다.
  • 책의 지식을 프로젝트에 적용시키고 싶다.
  • 주변 사람에게 Clean Code에 대한 지식을 나눠주고 싶다.

 

후기
  1. 책을 읽기 시작했다. 나쁜 코드와 좋은 코드에 대한 여러 유명한 프로그래머의 개인적인 생각을 정리해 둔 파트가 책의 시작이다. 사실 프로그래머가 아니여도 나쁜 코드와 좋은 코드의 정의를 말해보라 하면 말할 수 있을 것 같다. 그렇게 이론은 나쁨과 좋음이란 단어와 그렇게 떨어져있지 않다. 다만 내가 생각하는 나쁨의 범위와 좋음의 범위가 뛰어난 프로그래머의 범위와 얼마나 일치하는지 생각해 볼 수 있어 좋았다.

  2. 의미 있는 이름에 대해 서술했다. 진짜 Clean Code를 통해 얻어가는 게 많은 파트였다. 내가 전에 프로젝트를 진행하면서 만든 인터페이스, 클래스, 변수 이름들이 이 책에서 말 하는 나쁜 코드에 온전히 고대로 속해있다. 충격이지만 기분이 좋다. 나는 그만큼 발전 할 수 있다. 다음 프로젝트를 만들면서 이름을 고민하고 고민해서 만들어야겠다. 제일 충격적인 부분은 나는 학교에서 인터페이스 부분에 앞에 I를 붙여 IService 등을 만들곤 했는데 인터페이스에 Service를 써주고 클래스 부분에 ServiceImp를 붙여주거나 CService를 붙여주는 게 더 낫다고 한다. 빨리 적용해 보고 싶다. 눈에 바로 캐치된 부분이라 마음이 급하다.

  3. 함수를 어떻게 잘 짤 수 있을까에 대한 고민들과 해답들을 알려준다. 함수를 작게 만드는 것이 중요하고 한 가지만 하는 것이 중요하다. 이게 요점인 것 같다. 반복도 하면 안 되고 부수 효과를 일으켜도 안 되고 아무래도 프로그래밍을 잘 하려면 무엇을 추가하는 능력 보다는 무엇을 배제하는 능력이 뛰어난 소양을 갖춰야 하는지도 모르겠다. 함수 파트를 읽으면서 ‘뭐 이렇게 하지 말라는 게 많지’ 싶었지만 읽으면서 ‘이건 한 번 적용해 보고 싶다’ 싶은 것도 있었다. 예를 들면 이항식 보다는 단항식을 사용하라는 부분과 서술적인 이름을 사용하라는 부분, 명령과 조회를 분리하라는 부분은 잘 활용한다면 정말 좋을 것 같다. 지금도 글을 적으면서 보니 하지 말라는 것 보다 하라고 했던 부분을 적었는데 원래 하던거에서 뺴는 것 보다. 못 하던 것을 추가하는 게 더 재밌는 법이다.

  4. 좋은 주석과 나쁜 주석에 대해 설명했다. 거의 지침서 같은 느낌이다. 주석 파트를 읽다 보면 굳이? 싶은게 많이 나왔던 것 같다. 이런 느낌이 아직 배우고 있는 단계라 초보자의 눈에는 잘 보이지 않는 무언가인지 아니면 사람마다 필요하다고 생각하는게 다르기 때문에 그렇게 느끼는 건지 잘 모르겠다. 하지만 분명 내가 생각하지도 못 했던, 적용하면 확실히 코드가 깔끔해 질 것 같던 방법이 많이 있었고 그 동안 해왔던 프로젝트들이 머릿속을 스쳐갔다. 도대체 나는 어떤 코드를 짠 것인지 자괴감이 들 정도이다. 우선 나쁜 코드를 설명할 때 어떤 주석이 나쁜 코드에 속하는지 예제를 통해 보여주는데 우리가 만든 프로젝트 코드들과 거의 정확하게 일치한다. 대박이다. 정확히 하지 말라는 것, 안 좋다는 것을 배우지도 않았는데 줄줄이 다 적용시키며 프로젝트를 만들었고 게다가 거기에 ‘음 깔끔한 주석’ 이런 느낌으로 만족도 하고 있었다는 게 어이가 없다. 역시 보고 느끼는 게 많은 만큼 발전할 수 있고 이번 파트도 읽자마자 지금 하고 있는 개인 프로젝트에 잘 못 되어 있는 코드를 어떻게 수정하면 좋을지 떠올리게 되었다. 아마 주석 파트는 많은 초보자들이 읽으면서 뜨끔해지는 파트가 될 것 같다.

  5. 형식을 맞추는 코드에 대해 설명을 했다. 나는 IDE에서 제공하는 자동으로 형식을 맞춰주는 방법을 주로 썼다. ( 이게 그래도 공통적인 것 일 테니까 말이다.) 하지만 IDE에서 못 잡아주는 조금 더 깔끔하게 코드를 적을 수 있는 방법이 있었다. 책에서 설명하길 자동으로 코드의 형식을 잡아주는 것은 연산자의 우선 순위등을 고려하지 못 해 내가 생각하는 것과 조금 다른 형태가 될 수 있다고 했다. 맞는 것 같다 물론 나는 아직 개발을 배우는 단게이고 나의 방식이 나쁜 방식에 속할 수 있지만 내가 옳다고 생각했던 것과 다르게 정렬되는 것에 의문과 불편함을 느낀 적이 한, 두번이 아니다. 하지만 이번 파트를 읽으면서 조금 더 남들이 보기 편하고 체계화된 코드 형식을 떠올릴 수 있게 되어 기쁘다. 항상 파트를 읽자 마자 무언가 뜨끔하며 느껴지는 게 많은 책 이란 것을 다시 한 번 느꼈다. 아마 매 파트마다 이런 느낌을 받지 않을까 싶다. Clean code 책 자체가 Clean code의 정석이 될 수는 없지만 적어도 많은 사람이 인정하는 내용을 담고 있는 책인 만큼 내가 모두가 만족하는 방향에서 멀어지는 코드를 짜는 것을 미리 체크하고 방지하고, 어떻게 수정할 지 머리에 떠올리게 되는 것 만으로도 만족한다. 앞으로 남은 파트도 재밌게 읽을 것 같다.

  6. 객체와 자료 구조에 대한 설명을 들었다. private와 public에 대해 말을 했고, get/set 함수를 사용해 공개를 하는지에 대해 이야기했다. 자료 추상화와 디미터 법칙, 자료 전달 객체의 유용함을 설명했다. 아직 공부가 부족한지 읽으면서 바로 바로 이해할 순 없었고 짧은 문장을 읽고 생각하는 식으로 설명하고자 하는 내용을 이해하려 하면서 읽었다. 좀 반가웠던 내용은 자료 전달 객체의 DTO 구조체가 나온 것이 반가웠다. 학교 프로젝트를 할 때 DTO로 데이터 베이스를 활용했는데 책에서 간단히 유용한 DTO 구조체, 라는 말로 설명을 해줬다. 이번 파트는 내용이 좀 짧긴 했지만 이론적이 부분에서 얻어가는 게 있었던 파트였다. 만족스럽다. 생각을 정리하면서 다음 파트도 읽어봐야겠다.
반응형

댓글