Chapter 21 코드 정리 시점
아예 안 한다면
- 이 경우는 코드 동작이 앞으로 바뀌지 않을 거라는 믿음이 있어야 한다.
나중에 정리하기
- 나중에 정리한다는 것은 지금 변경한 동작과 연결되지 않는 코드 정리를 나중에 한다는 것이다.
- 나중에 정리할 목적으로 엉망인 코드 목록을 만들 수 있는데 이를 ‘재미 목록’이라 부르기로 하자.
- 일할 시간이 어느정도 주어졌을 때 재미 목록을 훑어보며 시간에 맞은 알맞은 규모의 코드 정리를 수행할 수 있을 것이다.
- 정리를 나중에 하면 ‘지저분함 보유세’를 줄일 수 있다.
- API를 변경할 때 당장 영향 받는 API 코드를 변경해도 나중에 변경을 반영해야 할 곳이 100개 더 있다.
- 모든 변경을 완료한다면 이전 API는 제거해도 되지만 그 때까진 기존 API와 새 API를 함께 유지보수해야 한다.
- 정리를 나중에 할 근거로 또 다른 하나는 학습 도구로 활용하는 것이다.
- 코드 정리는 설계 세부 결과를 깨달을 수 있는 좋은 방법이다.
- 코드 정리를 나중에 자신이 원할 때 하면 더 의욕적이고 기분도 좋다.
동작 변경 후 코드 정리
- 다음 경우라면 동작 변경 후 코드를 정리하자
- 방금 고친 코드를 다시 변경할 예정일 때
- 지금 정리하는 것이 더 저렴할 때
- 코드 정리에 드는 시간이 동작 변경에 드는 시간과 거의 비슷할 때
코드 정리 후 동작 변경
- 코드 정리를 선행해야하나에 대한 대답은 상황에 따라 다르다.
- 스스로 이런 질문을 해봐야 한다.
- 지저분한 상태 그대로 코드를 변경하는게 얼마나 더 어려울까?
- 코드 정리 이점을 바로 얻을 수 있는가?
- 코드 정리에 드는 비용을 어떻게 보상받을 수 있는가?
- 코드 정리에 대해 얼마나 확신하고 있는가?
요약
- 다음 상황에선 코드를 정리하지 말자
- 앞으로 코드를 다시는 변경하지 않을 때
- 설계를 개선하더라도 배울 것이 없을 때
- 다음 상황에선 정리를 나중으로 미루자
- 정리할 코드 분량이 많은데 보상이 바로 보이지 않을 때
- 코드 정리에 대한 보상이 잠재적일 때
- 작은 묶음으로 여러 번에 나눠 코드를 정리할 수 있을 때
- 다음 상황에선 동작 변경 후 정리하자
- 다음 코드 정리까지 기다릴수록 비용이 더 불어날 때
- 코드 정리를 하지 않으면 일을 끝냈다는 느낌이 들지 않을 때
- 다음 상황에선 코드 정리 후 동작 변경을 하자
- 코드 정리 후에 코드 이해가 쉬워지거나 동작 변경이 쉬워지는 즉각적인 효과를 얻을 수 있을 때
- 코드 정리 방법을 알고 있을 때