[서평 작성] 켄트백의 Tidy First?

목차.

Part 1 코드 정리법

Chapter 1 보호 구문
Chapter 2 안 쓰는 코드
Chapter 3 대칭으로 맞추기
Chapter 4 새로운 인터페이스로 기존 루틴 부르기
Chapter 5 읽는 순서
Chapter 6 응집도를 높이는 배치
Chapter 7 선언과 초기화를 함께 옮기기
Chapter 8 설명하는 변수
Chapter 9 설명하는 상수
Chapter 10 명시적인 매개변수
Chapter 11 비슷한 코드끼리
Chapter 12 도우미 추출
Chapter 13 하나의 더미
Chapter 14 설명하는 주석
Chapter 15 불필요한 주석 지우기

Part 2 관리

Chapter 16 코드 정리 구분
Chapter 17 연쇄적인 정리
Chapter 18 코드 정리의 일괄 처리량
Chapter 19 리듬
Chapter 20 얽힘 풀기
Chapter 21 코드 정리 시점

Part 3 이론

Chapter 22 요소들을 유익하게 관계 맺는 일
Chapter 23 구조와 동작
Chapter 24 경제 이론: 시간 가치와 선택 가능성
Chapter 25 오늘의 1달러가 내일의 1달러보다 크다
Chapter 26 옵션
Chapter 27 옵션과 현금흐름 비교
Chapter 28 되돌릴 수 있는 구조 변경
Chapter 29 결합도
Chapter 30 콘스탄틴의 등가성
Chapter 31 결합도와 결합도 제거
Chapter 32 응집도
Chapter 33 결론

Part 4 참고 문헌

Appendix A 참고 문헌

들어가며.

안녕하세요? 정리하는 개발자 워니즈입니다. 이번에는 켄트백의 Tidy First?t라는 책을 읽고 서평을 해보려고합니다. 소프트웨어 엔지니어라면 한번쯤은 들어봤을 이름 켄트백에 대해서 알고 있을 겁니다. TDD의 아버지라고들 알고 계실 겁니다. 워낙 유명하신 분이라 이분이 작성하신 책을 한번쯤 읽어보고 싶던 차에 번역본책이 출간을 하여 바로 읽어보게 되었습니다.

이번 책을 읽게 되면서 저자인 안영희님에 대해서도 알게 됐습니다. 이번 책은 옮긴이 노트라고 안영희님이 켄트벡과의 소통을 기록한 별책 부록 같은 책이 한권더 첨부되어있습니다. 옮긴이 노트만 보더라도 안영희님이 이책을 옮기기 위해서 얼마만큼의 노력을 하고 진심이였는지를 알 수 있었습니다.

그리고 다음의 글들을 발견하게 되었는데요. 옮긴이 노트에 기재가 되어있는 내용들이지만 사전에 얼마나 많은 준비를 하고 책을 출간하기 위해 노력을 했는지가 느껴졌습니다.

흥미로운 Tidy First 고찰

켄트 벡의 글을 번역며 알게 된 것들

그럼 본격적으로 각 챕터별로 어떤 내용들을 소개하고 있는지 간단히 기록해보겠습니다.

Part 1. 코드 정리법

Part 1은 총 15개의 Chapter로 구성이 되어있으며, 정리를 수행하는 방법론 적인 설명들이 기재되어있습니다. 물론 개발경력이 어느정도 되는 소프트웨어 엔지니어라면 기본적으로 알고 있어야 하는 내용들입니다. 15가지 방법론들을 모두 적용하기에는 어려움이 있을 수 있지만, 이런 기법들을 숙지하고 적용하기 위해 노력한다면 코드 정리의 기본적인 발판이 되지 않을까 생각하게 되었습니다.

Part 2. 관리

2부에서는 1부에서 이야기한 코드정리 기법들을 자연스럽게 적용하는 흐름에 대해서 이야기를 하고 있습니다. 켄트백이 이야기하는 코드 정리는 동작변경과 구조변경을 분리하고(특히 동작에 영향을 주지 않고) 작은 단위로 나누어 반복적으로 수행하는 작업으로 정의하고 있다고 생각합니다.

코드 정리는 자꾸 손이 가는 감자칩과 같습니다.

마치 애자일 방법론과 같이 끊임없고 지속적인 행동 철학에 대해서 이야기하고 있지 않나 생각해봅니다. 코드를 작성하는것도 엄연히 글을 쓰는(작문) 행위와 같다고 생각합니다. 글을 작성하고 반복적인 퇴고를 수행하여 좀 더 좋은 구문과 문장을 만들 듯이 코드 정리도 좀더 간결하고 읽기 쉬운 흐름으로 가는 것에서 닮아 있다고 생각합니다.

Chapter 18에서 말하는 코드 정리의 일괄 처리량부분을 보면, 이책의 제목에서 말하는 부분이 아닐까 생각합니다.

코드 정리 비용을 중리고자 한다면, 코드 정리 개수를 늘려서 동작 변경에 소용되는 비용을 줄인세요. 그러면, 검토 비용을 줄일 수 있습니다.

Part 3. 이론

3부에서는 코드 정리를 왜 하는지 그 이유에 대해서 설명하고 있습니다. 다음과 같은 질문을 다룬다고 설명되어 있습니다

  • 소프트웨어 설계란 무엇인가?
  • 소프트웨어 설계가 소프트웨어 개발과 운영 비용을 어떻게 좌우하는가?
  • 소프트웨어 구조에 투자할 떄와 투자하지 않을 떄의 장단점은 무엇인가?
  • 소프트웨어의 구조를 변경할지 여부와 방법을 결정할 때 어떤 경제적, 인간적 원칙을 사용할 수 있는가?

위의 질문들에 대해서 쉽게 설명하기 위해서 경제 이론이 등장을 합니다. 시간 가치와 선택 가능성에 관한 이야기를 하고 있습니다.

  • 오늘의 1달러가 내일의 1달러보다 더 가치가 있기 때문에 버는 것을 빨리하고, 쓴느것을 가능한 뒤로 미룹니다.
  • 혼란스러운 상황에서는 어떤 물건에 대한 옵션이 물건 자체보다 낫기 때문에 불확실성에 맞서는 옵션을 만듭니다.

구조 변경과 동작 변경은 모두 가치를 만들어내지만 근본적으로 가역성(되돌릴 수 있는)이 되는가가 다릅니다. 둘중 어느게 나은가가 아니라 둘을 어떻게 조화시키는가가 중요합니다. 동작 변경을 먼저 하여 돈을 버는 것이고, 구조 변경은 옵션을 만드는 것입니다.

Part 3을 읽었을 떄는 결국 초반에는 동작을 변경하기 위해서(돈을 벌기 위해) 구현에 집중을 하고 있지만 나중에 가역성을 만들어내기 위한 옵션을 만들기 위해 코드 정리(구조 변경)을 조합해서 하기 위해 노력해라! 라는 의미로 받아들였습니다.

그리고 마지막으로 항상 들어온 이야기처럼 높은 응집도와 낮은 결합도를 통해서 소프트웨어의 비용을 줄일 수 있다는 이론에 대해서 설명을 하고 있습니다.

마치며.

이 책은 켄트백의 책을 안영희님이 옮긴 내용입니다. 하지만 안영희님이 옮기면서 켄트백의 철학과 사상 그리고 함축적인 한마디 한마디를 독작에게 전달하기 위해 노력한 흔적들이 많이 보입니다. 더군다나 별책 부록으로 들어가있는 옮긴이의 노트에서는 직접 켄트백과의 소통을 통한 내용들이 기재가 되어있는데 음식을 먹고난 뒤의 후식을 먹는 기분으로 쉽게 쉽게 읽혀졌습니다.

책 자체는 굉장히 얇은(146p 분량)으로 되어있는데 그 안의 내용과 무게감은 그 어느 두꺼운 책보다도 가볍게 여겨지지 않았습니다.

코드 정리는 소트웨어 개발자라면 항상 따라다니는 수식어이지만 수행하기는 어려운(?) 존재였습니다. 하지만 책을 읽고 난뒤에는 마치 이 행위를 습관처럼 한다면 소프트웨어의 품질 향상과 협업에 큰 기여를 하게 되지 않을까 생각해보게 되었습니다.

본 포스팅은 “한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.”

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다