커밋 단위로 리팩터링하는 과정을 기록
예시 코드는 연극정보(play.json), 청구서(invoices.json) 데이터를 가지고 관람 총액과 적립 포인트를 plainText로 출력하는 프로그램
- 출력 결과가 plainText가 아닌 html로 출력되는 기능이 추가된다면? =>
단개쪼개기
- 비극, 희극 외 다른 장르의 연극이 추가된다면? =>
조건부 로직을 다형성으로 바꾸기
위부터 아래로 순서대로 진행
- assert 코드가 최초에 누락됐지만 매 단계마다
컴파일-테스트-커밋반복
1. 최초 프로그램
- 금액 계산 코드를 중첩 함수로 추출
- 매개변수, 변수명을 명확히
- 임시 변수를 질의 함수로 바꾸기
- 변수 인라인하기
- 함수 선언 바꾸기
- 변수 인라인하기
- 적립 포인트 계산 코드도 함수로 추출
- 매개변수, 변수명을 명확히
- 함수 임시 변수를 직접 선언해 사용하도록 변경
- 함수 선언 바꾸기
- 독립적인 작업을 수행하기 위해 반복문 쪼개기
- 문장 슬라이드하기
- 적립 포인트 총합 계산 코드를 함수로 추출
- 변수를 인라인하기
- 총 금액 계산 코드도 함수로 추출
- 변수 인라이하기, 함수 선언 바꾸기
- 변수명을 명확히
- 단계 쪼개기 시작, 렌더 함수 분리
- 매개변수로 전달할 중간 데이터 구조 생성
- 렌더 함수에서 중간 데이터 구조로 데이터를 옮김1
- 렌더 함수에서 중간 데이터 구조로 데이터를 옮김2
- 렌더 함수에서 중간 데이터 구조로 데이터를 옮김3
- 렌더 함수에서 중간 데이터 구조로 데이터를 옮김4
- 렌더 함수에서 중간 데이터 구조로 데이터를 옮김5
- 렌더 함수에서 중간 데이터 구조로 데이터를 옮김6
- 렌더 함수에서 중간 데이터 구조로 데이터를 옮김7
- 반복문을 파이프라인으로 바꾸기
- 데이터 처리에 해당하는 코드를 함수로 추출
- 데이터 처리 코드를 별도 파일로 분리