관련된 코드끼리 가까이 모이도록 문장의 위치를 옮기는 리팩터링. 그 자체로도 읽기 쉬워지지만, 대개 함수 추출의 준비 단계로 쓴다.
- 변수는 처음 쓰는 곳 바로 앞에서 선언하고 초기화한다. 이름은 값이 대입될 때 의미가 강해지므로, 선언과 초기화가 멀리 떨어지면 읽기 어렵다
- 옮기기 전에 간섭을 확인한다. 참조하는 요소의 선언보다 앞으로, 자신을 참조하는 문장보다 뒤로는 갈 수 없고, 자신이 읽거나 바꾸는 값을 수정하는 문장을 건너뛸 수 없다
- 테스트가 깨지면 이동 거리나 한 번에 옮기는 조각을 줄인다
켄트 벡의 정리 기법 몇 가지가 같은 동작을 다른 이름으로 부른다(정리(Tidying)).
- Move Declaration and Initialization Together(한국어판 "선언과 초기화를 함께 옮기기"): 위의 선언·초기화 규칙
- Reading Order("읽는 순서"): 처음 읽는 사람이 이해하기 좋은 순서로 재배치
- Cohesion Order("응집도를 높이는 배치"): 함께 바뀌는 코드(또는 파일)를 붙여 놓는다. 디커플링이 당장 어렵다면 가까이 두는 것만으로도 다음 변경이 쉬워진다
결국 응집도를 코드 배치 수준에서 높이는 일이다.
출처: 『리팩터링 2판』 마틴 파울러 (원서 Refactoring, 2nd Edition) · refactoring.com: Slide Statements · 『켄트 벡의 Tidy First?』 켄트 벡 (원서 Tidy First?)