⚒리팩토링의 정의⚒
- 기능은 똑같은데, 내부구조개선(코드를 보기 쉽게!)
- 프로그램의 동작이 변하지 않음을 증명하기 위해 유닛테스트가 중요함!!
테스트 -> 리팩토링 -> 테스트 ....
🎇즉! 디버깅과 기능추가는 리팩토링이 전혀 아니다!
리팩토링이 필요한 코드 : 코드에서 나는 악.취(smell)
- 너무 긴 메서드 : 메서드가 너무 길다.
- 방대한 클래스 : 클래스의 필드와 메서드가 너무 많다.
- 변경 발산(산탄총) : 기능의 변경시 많은 곳을 수정해야 한다.
- 속성, 조작 끼어들기 : 언제나 다른 클래스의 내용을 수정하게끔 할수 밖에 없는 클래스
- if, switch 문 : 반복적인 if, switch 문
- 과다한 매개변수 : 매서드가 받는 매개변수가 너무 많다.
- 기본 타입에 집착 : 객체화 하지 않고, 기본 타입만 사용
- 게으른 클래스 : 하는 일이 없는 클래스
- 의심스러운 일반화 : 언젠가~~ 상속하겠지 하면서 만든 상위 클래스
- 매세지 연쇄 : 메서드 호출시 연쇄가 너무 길다.
- 너무 많은 주석 : 프로그램의 부족함을 주석으로 설명 ㅋ.
리팩토링을 하는 이유
- 코드를 알기쉽게, 디버깅 쉽게, 유지보수 및 확장이 쉽게
-> 리팩토링 할때 디자인 패턴을 적용하는 경우가 있음!!
설계 시 확장성 있는 설계의 중요성