켄트 벡의 Tidy First?

Erdos·2025년 6월 22일

서재

목록 보기
4/14

추천사 기록

작은 일도 무시하지 않고 최선을 다해야 한다. 작은 일에도 최선을 다하면 정성스럽게 된다. 정성스럽게 되면 겉에 배어 나오고, 겉에 배어 나오면 겉으로 드러나고, 겉으로 드러나면 이내 밝아지고, 밝아지면 남을 감동시키고, 남을 감동시키면 이내 변하게 되고, 변하면 생육된다. 그러니 오직 세상에서 지극히 정성을 다하는 사람만이 나와 세상을 변하게 할 수 있는 것이다.

  • 영화 <역린> 상책의 대사

코드는 개발자 생각의 반영입니다. 코드가 논리적으로 흘러가는 방식은 개발자의 머릿속에서 일어난 생각을 그대로 드러내는 법이죠. 그래서 자기가 원하는 알고리즘을 정확히 이해한 개발자는 대체로 읽기 쉬운 코드를 작성하고, 그렇지 않으면 읽기 어려운 코드를 작성합니다. 하지만 알고리즘의 이해가 전부는 아닙니다. 의미가 잘 전달되는 코드를 작성하려면 코드의 겉모습도 신경 써야 합니다. 알고리즘이 코드의 내용이면, 코드의 겉모습은 곧 형식입니다.

  • 한빛앤 대표이사 임백준

이 책은 '어떻게 할지'가 아닌 '어떻게 생각할지'에 초점을 맞춘 책입니다.


이 책의 구조

  1. 코드 정리법
  2. 관리
    코드를 정리하는 일이 반드시 보고해야 하고, 추적하고, 계획하고, 일정을 잡아야 하는 일이 되어서는 안됩니다. 특정 코드를 변경해야 하는데 코드가 지저분해서 변경하기 어려울 때, 먼저 코드를 정리하는 것입니다. 일상적인 업무이자, 생각하면서 개선하는 절차입니다
  3. 이론
    저자의 목표: 독자들이 아침에 책을 읽고 더 나은 설계를 할 수 있도록 하는 것

저자는 왜 이 책을 썼는가?

만 단어를 작성한 후, 한 권의 책으로 소프트웨어 설계의 모든 것을 다룰 수는 없다는 중요한 교훈을 얻었습니다. 제가 초고를 작성할 때, 계속 떠오르는 시나리오 중 하나가 바로 소규모 설계의 순간이었습니다. 지저분한 코드가 잇는데 이 코드를 바로 변경해야 할까, 아니면 코드 정리를 먼저 해야 할까?

제 책 쓰기 경험은 항상 이런 식이었습니다. 일단 책 한 권으로 쓰기에는 너무 작아 보이는 주제를 잡습니다. 그리고 씁니다. 책으로 쓰기에는 큰 주제임을 깨닫습니다. 너무 작다 싶은 조각으로 또 나눕니다. 다시 씁니다. 아직도 너무 큰 것임을 발견합니다. 이 과정을 반복합니다.


목차

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 코드 정리 시점

1) 코드 정리 x

  • 앞으로 다시는 코드를 변경하지 않을 때
  • 설계를 계산하더라도 배울 것이 없을 때

2) 정리를 나중으로 미루세요

  • 정리할 코드 분량이 많은데, 보상이 바로 보이지 않을 때
  • 코드 정리에 대한 보상이 잠재적일 때
  • 작은 묶음으로 여러 번에 나눠서 코드 정리를 할 수 있을 때

3) 동작 변경 후에 정리하세요

  • 다음 코드 정리까지 기다릴수록 비용이 더 불어날 때
  • 코드 정리를 하지 않으면 일을 끝냈다는 느낌이 들지 않을 때

4) 코드 정리 후에 동작 변경을 하세요

  • 코드 정리를 했을 떄, 코드 이해가 쉬워지거나 동작 변경이 쉬워지는 즉각적인 효과를 얻을 수 있을 때
  • 어떤 코드를 어떻게 정리해야 하는지 알고 있을 때
profile
수학을 사랑하는 애독자📚 Stop dreaming. Start living. - 'The Secret Life of Walter Mitty'

2개의 댓글

comment-user-thumbnail
2025년 6월 23일

켄트 백의 Tidy first 라는 책을 많이 들어는 봤는데 이런 내용들을 포함하고 있었군요. 코드가 정리하고 싶어질 때, 읽어보고 싶네요! 좋은 글 써주셔서 감사합니다.

1개의 답글