리팩터링의 첫단계
- 테스트코드를 작성할 것
- 리팩터링 하기 전에 제대로 된 테스트부터 마련한다. 테스트는 반드시 자가진단하도록 만든다.
- 긴 함수를 리팩터링할 때는 먼저 전체 동작을 각각의 부분으로 나눌 수 있는 지점을 찾는다.
- 조금씩 변경하고 매번 테스트 하는 것이 리팩터링 절차의 핵심.
- 리팩터링은 프로그램 수정을 작은 단계로 나눠서 진행한다. 그래야 중간에 실수하더라도 버그를 쉽게 찾을 수 있다.
- 리팩터링을 문제 없이 끝낼 때마다 커밋. 그래야 문제가 생겨도 이전 상태로 쉽게 돌아갈 수 있음.
- 매개변수의 역할이 뚜렷하지 않을 때는 부정 관사(a/an)를 붙인다. 변수명은 항상 명확하게 해야함.
- 컴퓨터가 이해하는 코드는 바보도 작성할 수 있다. 사람이 이해하도록 작성하는 프로그래머가 진정한 실력자이다.
- 임시 변수를 질의 함수로 바꾸기. 임시 변수는 자신이 속한 루틴에서만 의미가 있어서 루틴이 길고 복잡해지기 쉬움
- 유효범위를 신경 써야 할 대상을 줄일 수 있기 때문에, 추출 작업 전에 지역 변수를 제거하는 것이 좋음.
- 리팩터링은 대부분 코드가 하는 일을 파악하는 데서 시작한다.
- 좋은 코드를 가늠하는 확실한 방법은 “얼마나 수정하기 쉬운가”다.
- 코드는 명확해야 한다. 코드를 수정해야 할 상황이 되면 고쳐야 할 곳을 쉽게 찾을 수 있고 오류 없이 빠르게 수정할 수 있어야 한다.
- 리팩터링을 효과적으로 하는 핵심은 단계를 잘게 나눠야 더 빠르게 처리할 수 있고, 코드는 절대 깨지지 않으며, 이러한 작은 단계들이 모여서 상당히 큰 변화를 이룰 수 있다는 사실을 깨닫는 것이다.
리팩터링 단계
- 함수 추출하기
- 변수 인라인하기
- 함수 옮기기
- 조건부 로직을 다형성으로 바꾸기
⇒ 원본 함수를 중첩 함수 여러 개로 나눈 다음 단계 쪼개기를 적용해 계산코드와 출력 코드를 분리하고 마지막으로 계산 로직을 다형성으로 표현.