리팩토링 구성요소
스킬
- 어떤 코드가 잘못됐으며 리팩터링이 필요한지를 파악하는 스킬이 필요하다.
문화
- 리팩터링에 시간을 들이는 것을 권장하는 문화와 절차가 필요합니다.
도구
- 우리가 하는 작업이 안전하다는 것을 보장할 무언가가 필요합니다.
리팩토링이란 무엇인가?
리팩터링을 해야하는 이유
- 코드를 더 빠르게 만들기 위해
- 더 작은 코도를 만들기 위해
- 코드를 더 일반적이거나 재사용 가능하게 하기 위해
- 코드의 가독성을 높이고 유지보수를 용이하게 하기 위해
좋은 코드
사람이 읽기 쉽고, 유지보수가 용이하며, 의도한 대로 잘 동작하는 코드
리팩터링
기능을 변경하지 않고 코드의 가독성과 유지보수가 쉽도록 코드를 변경하는 것
스킬: 무엇을 리팩터링할 것인가?
문화: 리팩터링은 언제 할까?
- 탐색
- 명세화
- 구현
- 테스트
- 리팩터링
- 전달
레거시 시스템에서의 리팩터링
우선 변경하기 쉽게 만든 후 변경하라
리팩터링이 필요하지 않은 경우
- 한번 실행하고 삭제할 코드
- 폐기되기 전 유지보수 모드에 있는 코드
- 임베디드 시스템이나 게임의 고급 물리엔진과 같이 엄격한 성능 요구사항이 있는 코드
도구: 안전한 리팩터링 방법
- 레시피처럼 상세하고 단계별로 구조화된 리팩터링 패턴
- 버전 관리 (Git)
- 컴파일러
주의사항
- 규칙 이름 따르기
- 규칙 설명 따르기
- 코드 스멜 마스터하기