공부하는 스누피
클린 코드 본문
www.aladin.co.kr/shop/wproduct.aspx?ItemId=34083680
클린 코드는 오프라인에서도 개발 지식을 얻을 수 있다는 것을 알게 해준 책이다.
다소 건방져보일지는 모르겠지만 개발 관련 지식은 인터넷에서 찾는 것이 더 빠르고, 최신 정보를 찾을 수 있다고 생각했다. 물론 일부 신기술이나 API는 그렇게 공부하는 것이 더 낫다고 여전히 생각하지만, 시간이 흘러도 변하지 않을 기본기는 책을 통해 더욱 깊고, 정확하게 쌓을 수 있다. 클린 코드는 초보 개발자의 정신을 번쩍 들게 해 주는 책이다. OOP의 원칙을 각 챕터마다 인용하는데, 좋은 코드만 보여주기보다 왜 이렇게 코드를 짜면 안되는지 가르쳐준다. 책을 보면서 내 GitHub의 옛날 코드들을 보는데 저자가 말하는 'bad smell'이 풀풀 풍기는 코드뿐이었다.
저자 로버트 C. 마틴은 SOLID 원칙과 애자일 방법론을 처음으로 정리한 개발자인데, 이 책에서는 SOLID 원칙을 바탕으로 한 객체 지향 프로그래밍 기법을 주로 다룬다. SOLID에 대한 자세한 내용은 저자의 다른 책 Clean Architecture에 나온다. 책 구성은 17개의 챕터와 2개의 부록으로 이루어져 있는데, 각 챕터의 길이는 마지막 챕터를 제외하고 10페이지 내외라서 잠자기 전에 한 챕터씩 깊이 있게 읽으면 좋다.
저자는 첫 챕터에서부터 이 책을 꼼꼼히 읽으라고 여러번 강조한다. 저자의 말이 맞다. 거의 모든 챕터에는 코드 블록들이 하나씩 있는데, 모두 각 챕터의 핵심 요소를 담고 있어 물 흐르듯 지나치면 책을 읽은 의미가 없게 된다. 또한, 다양한 디자인 패턴들과 법칙들도 나오니 속독하려 하지 말고 모르는건 찾아보면서 읽자. 책을 독파하기까지 한 달 조금 넘게 걸렸는데, 메모하면서 읽다 보니 오래 걸렸던 것 같다. 책을 정독할 시간이 없다면 17장(냄새와 휴리스틱)을 먼저 읽어보는 것을 추천한다. 책에 있는 거의 모든 내용을 요약해서 정리해 놓은 챕터이다.
책을 읽기 전에 알아야 할 것이 3가지 있다.
1) SOLID 원칙
2) TDD
3) 결합도와 응집도 (+ 디자인 패턴)
셋 다 정보처리기사를 준비하면서 공부했던 개념들인데, 이 책에서는 이 개념들이 실전에서 어떻게 쓰이는지와 왜 쓰이는지 알려준다. 처음에는 '코드를 쓰는 법'에 대해 다룬다. 명확한 이름을 사용하기, 발음하기 쉬운 이름을 사용하기부터 시작해 점점 깊이 들어간다. 처음에 볼 때는 JAVA 책이 아니었지만, 읽다 보면 어느새 JAVA와 조금 친해져버린 자신을 발견할 수 있다. 응용 단계로 들어가면 AOP, DI같은 Spring에서 볼 수 있는 개념들도 나온다. 책 후반에는 글보다 코드가 더 많다. 앞에서 배운 것을 바탕으로 코드에서 어느 부분이 개선되어야 하는지 혹은 개선되었는지 체크하면서 읽으라는 의도였던 것 같다. 그리고 동시성에 대해서도 다루는데, 저자가 실무 경험을 바탕으로 중요하다고 생각한 것들을 엮어서 설명해준다.
클린 코드는 교과서같은 책이다. 처음 읽을 때는 메모하면서 정독하고, 두 번째 읽을 때는 빠르게 읽어보자. N번째 읽을 때는 17챕터를 훑어 읽으면서 이해가 안 가는 부분은 앞 챕터에서 찾아 보면 된다. 처음 읽었을 때는 낯선 디자인 패턴이나 테스팅 방법들이 있어 그렇게 쉽게 읽히지는 않았는데, 다음번에 읽을 때는 내가 얼마나 성장했는지 확인할 수 있지 않을까 한다.
'IT 도서' 카테고리의 다른 글
컴퓨터 구조 및 설계 (3) | 2020.11.18 |
---|---|
인프라 엔지니어의 교과서 (0) | 2020.11.17 |
클린 아키텍처: 소프트웨어 구조와 설계의 원칙 (0) | 2020.11.06 |
컴퓨터 네트워킹: 하향식 접근 (0) | 2020.11.05 |
초보 웹 개발자를 위한 스프링5 프로그래밍 입문 (0) | 2020.10.01 |