2년 전에 사서 다 읽고도 이해하지 못한 채 그대로 책장에 가둬버리고 다시금 코딩에 손을 대려고 하니 엉망진창으로 쓰이는 내 코드가 너무 마음에 들지 않아 오늘부터 책의 내용을 분석 및 정리하려고 한다.
코드 리뷰가 아닌 책 리뷰가 끝났을 때 내가 조금이라도 Clean Code에 와닿길 바란다.
책은 총 17개의 챕터와 3개의 부록으로 되어있으며 가능한 한 1개의 챕터를 모두 이해했다는 확신이 들 때 다음 글을 작성하려 한다.
옮긴이의 서문에서 책을 읽을 때 어떻게 읽어야 할 지에 대해 조언이 나와있다.
코드를 짜다 보면, 코드를 쓰는 시간보다 코드를 읽는 시간이 훨씬 더 많다는 사실을 알고 있다면, 이 책에서 제시하는 보이스카우트 규칙을 다른 모든 규칙에 앞서 특히 신경을 써서 봐야한다. 보이스카우트 단원들에게 야영장에 들어올 때보다 나갈 때 더 깨끗한 상태로 만들 의무가 있다면, 우리 개발자들에게는 체크아웃해 코드를 꺼낼 때보다 체크인해서 코드를 넣을 때 더 깨끗한 상태로 만들 의무가 있다. 기능 개선의 낭만적인 표현인 유지보수 작업으로 인해 모두들 신경 쇠약에 걸리고 있는 주변을 보면 이런 규칙의 중요성이 더욱 가슴에 와 닿을 것이다.
(Robert C. Martin "Clean Code" 2022, pp. xx)
... 이 책은 대충 읽고 넘기는 책이 아니다. 옜날 옜적에 성문 종합 영어나 수학의 정석을 붙들고 공부했듯이, 밑줄을 쳐가며 공부하는 책이다. 코드를 하나하나 짚어가며 저자가 코드를 고쳐간 방식을 이해하고 납득해야 가치를 발휘하는 책이다.
(Robert C. Martin "Clean Code" 2022, pp. xxi)
... 훌륭한 소프트웨어 기법은 집중, 침착, 사고라는 규율을 요구한다. ... 5S 철학은 다음 개념으로 이어진다.
1 정리 또는 조직 (정렬) : 적절한 명명법 등과 같은 방법을 사용해 무엇이 어디에 있는지 알아야 한다.
2 정돈 또는 단정함 (체계화) : "물건마다 모두 제자리가 있다"라는 속담이 있다. 코드는 누구나 예상하는 위치에 있어야 한다. 그렇지 않으면 다시 정돈해 누구나 예상하는 위치로 옮기기 바란다.
3 청소 또는 정리 (광내기) : 작업 공간에서 배선이나 기름이나 부스러기나 쓰레기는 치운다. 과거이력이나 미래 바람을 기억한 주석 혹은 주석으로 처리한 코드는 어떻게 처리하라고? 제거하기 바란다.
4 청결 또는 표준화 : 작업 공간을 청소하는 방식에 그룹이 동의한다. 그룹 내에서 일괄적인 구현 스타일과 기법의 필요성을 뭐라고 말할까? 표준은 어떻게 정할까? 직접 읽어보길 바란다.
5 생활화 또는 규율 : 관례를 따르고, 자기 작품을 자주 돌아보고, 기꺼이 변경하는 규율을 뜻한다.
이 책을 읽는 도전, 그리고 이 책을 읽고서 실천하는 도전을 받아들인다면 다섯 개의 원칙을 이해하고 감사하게 되리라고 믿는다.
(Robert C. Martin "Clean Code" 2022, pp. xxiv)
계속 곱씹어보면 단순히 눈으로만 볼 것이 아니며 책과 코딩을 겸하면서 5가지의 개념을 항시 상기하라는 말인 것 같아 포스트잇에 적고 모니터 오른쪽 위에 붙여놨다. 이렇게 하면 눈에 계속 보여서 자연스럽게 습득하지 않을까?
모쪼록 위 세 가지 조언을 명심하고 다음 포스팅은 1챕터를 이해했을 때 올리겠다.