동작을 바꾸지 않는 아주 작은 구조 변경. 켄트 벡은 리팩터링이라는 말이 "기능 개발 중간의 긴 공사"처럼 쓰이며 동작 보존 원칙이 흐려지자, 더 작고 겁나지 않는 단위를 정리라는 이름으로 따로 불렀다. 리팩터링의 부분집합이다.
구조 변경과 동작 변경을 나눈다
- 정리 커밋과 동작 변경 커밋, 가능하면 PR(Pull Request)까지 따로 낸다. 섞여 있으면 리뷰어가 주저하고 리뷰가 늦어진다
- 신뢰가 쌓인 팀이라면 정리 PR은 리뷰 없이 넣는 시도도 해 볼 만하다
- 이미 섞어 버렸다면, 버리고 정리부터 다시 하는 것도 방법이다. 같은 변경을 다시 하면서 더 많이 배운다
얼마나, 언제
- 배치 크기(Batch Size): 한 번에 정리를 많이 묶을수록 충돌·의도치 않은 동작 변경·추측 비용이 커지고, 적게 묶을수록 리뷰 횟수가 는다. 균형점은 팀의 신뢰와 리뷰 비용에 달렸다
- 연쇄(Chaining): 정리 하나가 다음 정리를 부른다. 정리하고 싶은 충동을 다스리는 것이 기술의 핵심이다
- 시점: 다음 변경이 바로 쉬워지고 무엇을 할지 알면 먼저, 지금 하기엔 비싸면 나중에(작은 목록에 적어 두고 짬이 날 때), 다시 볼 일이 없는 코드면 안 한다
- 정리에 한 시간 넘게 걸린다면 필요한 최소한을 넘었다는 신호다
- 변경은 일부 코드에 몰리는 경향이 있어서, 자주 고치는 곳은 자연스럽게 정리된 상태로 유지된다
왜 이렇게 판단하는지의 경제학은 구조와 동작, 옵션의 가치에, 개별 기법은 『켄트 벡의 Tidy First?』 개요에 있다. 커밋을 나누는 실무 요령은 커밋 메시지와 원자적 커밋와 인터랙티브 리베이스로 커밋 정리 참고.
출처: 『켄트 벡의 Tidy First?』 켄트 벡 (원서 Tidy First?)