Refactoring
결과의 변경없이 코드의 구조를 조정하는 것
기능을 보존하며 설계, 구조를 개선하는 것
목표
- 가독성 올릴 수 있다.
- 유지 보수성 개선이 된다.
- 확장성을 높인다.
금지
- 기능 변경, 추가 금지 X
- 버그 수정 X
- 성능 개선을 위해서 X
- 버전 업데이트 X
왜 리팩토링을 할까?
- 개발하며 완벽한 코드, 설계가 어렵다.
- 프로그램의 요구사항이 변경된다.
- 정돈되지 않은 코드는 이해하기 어려워 진다.
- 에러의 발생 확률이 올라간다.
- 유지보수가 어려워 지기 떄문이다.
언제 리팩토링을 할까? (수시로 !!!!)
프로젝트 시작단계
- 기능 구현을 위한 코드
-> 테스트 코드
-> 리팩토링
-> 기능 구현을 위한 코드
- 3의 법칙: 비슷한 일을 3 번째 하게 되면 리팩토링
- 코드리뷰: 코드를 이해하기 쉽게 만들기 (문서화)
- 기능추가: 기능을 추가하기 쉽도록 만들기 (재사용성, 모듈성)
프로젝트 유지보수 단계
- 버그수정: 버그를 검증하는 테스트 코드
-> 코드를 이해하기 쉽게, 변경하기 쉽도록 수정
-> 리팩토링
-> 버그를 검증하는 테스트 코드
-> 버그수정
- 기능추가: 기존의 기능에 대한 테스트 체크
-> 코드를 이해하기 쉽게, 변경하기 쉽도록 수정
-> 리랙토링
-> 기능추가
오래된 프로젝트 (테스트코드가 없다면....)
- 버그수정, 기능추가시
-> 수정이 필요한 모듈/코드에 한정적으로 테스트 작성
-> 리팩토링
-> 코드수정 or 기능추가
-> 때로는 새로운 코드를 작성하는 것이 더 나을때도 있다.
리팩토링의 중요한 포인트 !!!!
야그니 (You Ain't Gonna Need It)(필요 없을 거야)
- 당장 필요하지 않은 기능
- 사용하지 않는 기능
- 지나친 미래지향적 기능