리펙토링
- 외부에서 보는 프로그램의 기능은 변하지 않고 프로그램 내부 구조를 개선하는 것
- 프로그램의 동작이 변하지 않음을 증명하기 위해 유닛테스트가 필요하다
- 테스트 -> 리펙토링 -> 테스트
- 디버깅과 기능 추가는 리펙토링이 아니다.
리펙토링의 여러 방법
- 메서드나 클래스가 겹치는 경우 -> 분리
- 메서드나 클래스의 기능이 너무 많고 긴 경우 -> 메서드와 클래스를 따로 추출한다.
- 변수, 메서드, 필드명, 패키지명등이 안맞는 경우 -> 이름을 이해하기 쉽게 변경
- public으로 선언된 것이 너무 많은 경우 -> 인스턴스 이름을 숨기고 싶을때는 팩토리 메서드 등의 방법 활용
- switch문이나 if-else if 문의 남용으로 여러 분류조건이 반복되는 경우 클래스화 검토 -> 전략패턴이나 상태 패턴으로 변경 가능
코드에서 나는 악취
- 너무 긴 메서드 : 메서드가 너무 길다
- 방대한 클래스 : 클래스의 필드와 메서드가 너무 많다
- 변경 발산 : 기능의 변경시 많은 곳을 수정해야 한다
- 속성, 조작 끼어들기 : 언제나 다른 클래스의 내용을 수정하게 하는 클래스가 있다.
- if, switch문 : 조건분기가 너무 반복적이고 많다.
- 과다한 매개 변수 : 메서드가 받는 매개 변수의 수가 너무 많다.
리팩토링 하는 이유
- 프로그램의 수정, 기능 추가를 쉽게 하기 위해
'java > java 리팩토링' 카테고리의 다른 글
03. null 객체 사용 (0) | 2023.02.07 |
---|---|
02. 제어를 위한 플래그 삭제 (0) | 2023.02.07 |
1. 매직넘버를 상수로 바꾸기 (0) | 2023.02.06 |
리팩토링 대상 발견하는 법, 조건 정리 (0) | 2023.02.03 |
1. 의미 있는 이름 짓기 (0) | 2022.04.01 |
댓글