노트

『켄트 벡의 Tidy First?』 개요

Tidy First?: A Personal Exercise in Empirical Software Design

설계#refactoring#book · 연결된 개념 14개

쉽게 말하면

이 책은 '코드를 바꾸기 전에 먼저 정리해야 할까?'라는 질문 하나에, 몇 분짜리 작은 정리를 언제 얼마나 할지 경제학으로 답하는 책이에요. 정리는 기능 변경과 따로 커밋하라고 말해요.

비유가 깨지는 곳 '무조건 먼저 정리하라'는 책은 아니에요. 돈의 시간 가치와 옵션의 가치가 부딪치니 '먼저·나중에·안 함' 중에서 상황마다 골라요. 결국 소프트웨어 비용은 결합도에 달렸다고 봐요.

켄트 벡이 "코드를 바꾸기 전에 먼저 정리해야 할까?"라는 질문 하나를 붙잡고 쓴 얇은 책. 아주 작은 구조 변경인 정리의 기법, 언제 정리할지의 관리, 왜 그런지의 이론을 차례로 다룬다.

정리 기법

대부분 몇 분이면 끝나는 작은 변경들이다. 성격별로 묶으면 이렇다.

  • 흐름 펴기: 보호 구문, 죽은 코드 지우기, 같은 일을 다른 모양으로 한 코드를 하나로 맞추기(Normalize Symmetries)
  • 읽는 순서와 배치: 읽기 좋은 순서·함께 바뀌는 것끼리 모으기·선언과 초기화 붙이기(문장 슬라이드하기), 빈 줄로 덩어리 나누기(Chunk Statements)
  • 이름 붙이기: 설명 변수, 설명 상수, 필요한 입력을 드러내는 명시적 매개변수(Explicit Parameters), 목적이 분명한 헬퍼 추출(Extract Helper)
  • 합쳤다 다시 나누기: 너무 잘게 쪼개져 이해가 안 되면 한 덩어리로 합친 뒤 다시 정리한다(One Pile, 한국어판 "하나의 더미")
  • 주석: 남이 물어볼 만한 것은 미리 적고, 코드와 같은 말을 하는 주석은 지운다
  • 인터페이스 바꾸기: 새 인터페이스를 만들고 옛 구현을 부르게 한다(New Interface, Old Implementation, 병렬 수정 (팽창-수축))

관리

구조 변경과 동작 변경을 다른 커밋·PR(Pull Request)로 나누고, 정리를 얼마나 묶어 배포할지, 정리를 먼저 할지 나중에 할지 아예 안 할지를 정한다(정리(Tidying)).

이론

소프트웨어 설계는 요소들을 이롭게 관계 짓는 일이다. 돈의 시간 가치와 옵션의 가치가 정리 시점을 두고 부딪치며(구조와 동작, 옵션의 가치), 소프트웨어 비용은 결국 결합도에 달렸고 응집도가 그것을 다루는 도구다.

같은 저자의 설계 규칙, 정리보다 큰 단위인 리팩터링과 함께 읽으면 좋다.

출처: 『켄트 벡의 Tidy First?』 켄트 벡 (원서 Tidy First?)

연결된 개념

이 노트를 가리키는 문서

뜻이 가까운 노트

  • 테스트 주도 개발 (TDD)

    코드를 쓰기 전에 실패하는 자동화된 테스트부터 쓰고, 그 테스트를 통과시킨 뒤 중복을 없애는 짧은 주기를 반복하는 개발 방식. 켄트 벡이 정리했다.

  • 매개변수 객체 만들기

    여러 함수에 늘 함께 넘겨지는 값 묶음(데이터 뭉치, Data Clumps)을 하나의 객체로 묶어 넘기는 리팩터링.

보기 옵션