클린코드

[서적 리뷰] 유지보수 가능한 코딩의 기술 C#편 <주스트 뷔서 등 5인>

CodeJB 2021. 12. 1. 19:49
이런 개똥 같은 코드를 짠 사람 누구야! 이런 식이면 나 일 못해!!
- 익명 프로그래머-

책 표지

이 책의 저자는 SIG(소프트웨어 품질 그룹)의 연구소장인 '주스트 뷔서' 및 SIG 품질 담당 컨설턴트와 개발자로 구성하여 총 5인이 작성하였다. SIG는 소프트웨어 제품 품질에 대한 국제 표준(ISO 25010)에 대하여 표준화된 검사를 하는 유일하게 인증된 연구소를 운영해오고 있는 곳이다. 개발자 뿐만 아니라, 소프트웨어의 품질을 관리하고 평가하며 컨설턴트를 하는 조직이 직접 작성한 책이라는 점에서 큰 메리트를 느꼈다. 사실, 클린 코드나 유지보수가 가능한 코드라는 것은 기준이나 평가를 매기기에 모호한 부분이 많다. 하지만, 이 조직은 자체적인 평가 기준과 수많은 데이터를 기반으로 "유지보수가 가능한 코드란 무엇인가?"에 대한 지침들을 소개하고 신뢰도있는 근거를 제시하고 있다.

구성과 내용

 이 책의 이름에서도 알 수 있다시피 "유지보수가 가능한", "코딩의 기술", "C#" 세 가지의 핵심 키워드를 주제로 책이 구성되어 있다. C#을 기반으로해서 어떻게 해야 유지보수가 가능한 코드를 설계할 수 있는지, 그리고 코드로 어떻게 구현해낼 수 있는지를 설명해준다. 또한, 어떻게 리팩터링 할 수 있는지를 설명해준다. 이를 10가지의 지침으로 구분하여 각 지침마다 C# 예제와 SIG그룹에서 자체적으로 가지고 있는 데이터를 기반으로 설명해준다. 하지만, 이 책에서 강조하고 있는 부분은 꼭 C#에 국한된 유지보수 기술이 아니라는 것이다. 모든 언어에 다 해당되는 지침들이고 C# 예제 또한 몇가지 예약어만 다른 언어에 맞게 변형시켜주면 충분히 적용이 가능하다. 지침 10가지는 다음과 같다.

  • 짧게 작성하자
  • 단순하게 작성하자
  • 한 번만 작성하자
  • 단위 인터페이스를 작게 하자
  • 관심사를 모듈로 분리하자
  • 아키텍처 컴포넌트를 느슨하게 결합하자
  • 균형 잡힌 설계를 하자
  • 코드베이스를 작게 하자
  • 자동화된 테스트
  • 클린 코드를 작성하자

 첫 번째 지침인 "짧게 작성하자"의 주된 내용은 당연하게도 "어떻게 짧게 작성하는가?"이다. 그리고 "짧게 작성하면 뭐가 좋은데?"가 포함되어 있다. 그런데, "얼마나 짧게 작성하느냐?"라고 물어본다면 상당히 모호하다. 각 메서드마다 라인 수가 20줄이 짧은건지 15줄이 짧은건지 그 누구도 정의 해놓지도, 정의 해놓을 수도 없기 때문이다. 하지만, 이 책의 저자는 소프트웨어 품질 컨설턴트 그룹의 연구소장이기 때문에 수많은 데이터를 기반으로 하여 "우리가 정말 많은 데이터를 가지고 있는데, 각 메서드마다 이 정도의 라인수를 가지고 있을 때 가장 효율이 좋았다"라고 당당하게 얘기해준다. 또한, 각 챕터의 마지막에는 해당 지침에 대한 반대 의견들을 스스로 밝히며 이에 대한 반박글을 작성하였다. 사실 유지보수, 클린코드에 대한 기준이 상당히 모호하다보니 반대 의견이 쏟아질 수 밖에 없다. 하지만, 저자는 굉장히 당당하고 신뢰도 있는 근거를 바탕으로 반대 의견에 반박한다. 이러한 구성과 내용이 독자로 하여금 더 높은 신뢰감을 갖게 해주었다고 생각한다.

결론

  •  클린 코드에 신경쓰지 못하고 항상 스트레스만 받아왔던 사람이 입문하기에 정말 좋다. 개인적으로 겪었던 모든 문제들이 이 책에 다 담겨있었다. 그래서 이 책을 읽는 내내 너무너무 행복했다. 또한 유지보수 기술, 클린코드에 더 깊은 관심을 가지게 되었다.
  • 만약, 이미 클린코드에 대해 연구했던 사람이라면 다른 서적을 찾아보는 것이 좋다. 왜냐하면 어찌보면 "당연한" 지침들도 몇 가지 존재하기 때문이다. 본인은 당연하지만 놓쳤던 부분들, 프로젝트가 커질 수록 이 당연한 것들이 어려운 문제로 번져나갔던 것을 경험했기 때문에 서적을 통해 다시한 번 중요성을 인식했고 프로젝트 초반부터 리팩터링 해나가는 습관을 기르기로 다짐할 수 있었다.
  • 아쉬운 점은, 전반적으로 번역이 좋았으나 몇 가지 이해할 수 없는 문장들도 존재하긴 했다. 그리고 보편적으로 우리나라에서 잘 사용하지 않는 단어들도 많이 존재했다.(당연히 우리 나라 서적이 아니기 때문) 예를 들어, "해피 플로우", "써니 사이드 테스트"와 같은 단어들이다. 더 보편적으로 사용하는 단어가 있지 않을까? 라는 개인적인 아쉬움이 있으나, 아쉬움일 뿐 이 책의 단점이라고 할 수는 없다. 이 외에 아쉬운 것은 없다.