본 내용은 마틴 파울러의 Refactoring 2판을 토대로 작성되었습니다.
캡슐화
- 클래스는 본래 정보를 숨기는 용도로 설계
- 내부 정보뿐 아니라 클래스 사이의 연결 관계를 숨기는 데도 유용
1. 클래스 추출하기
- 반대 리팩터링 : 클래스 인라인 하기
설명
- 클래스는 명확하게 추상화하고 소수의 주어진 역할만 처리
- 개발을 진행할 수록 클래스가 비대해져 복잡해 짐
- 한 클래스 안에 묶을 수 있는 데이터와 메서드가 있다면 분리하기
2. 클래스 인라인하기ㅋ르랫반대 리팩터링 : 클래스 추출하기
설명
- 제 역할을 못하는 클래스는 인라인 하기
- 별개의 클래스를 다르게 배분할 때도 하나의 클래스로 일단 인라인하기
- 합친 후 클래스를 추출하는 것이 더 용이
3. 위임 숨기기
- 반대 리팩터링 : 중개자 제거하기
설명
- 서버 객체의 메서드를 호출하려면 클라이언트에서는 객체의 인터페이스를 알아야 함
- 객체의 인터페이스가 바뀌면 해당 인터페이스를 사용하는 클라이언트의 모든 코드를 수정해야 함
- 서버 자체에 위임 메서드를 만들어, 의존성 제거
- 인터페이스가 바뀐다고 해도, 클라이언트에서 수정을 할 필요가 없음
4. 중개자 제거하기
- 반대 리팩터링 : 위임 숨기기
설명
- 위임 메서드가 많아질 수록 결합도가 높아지고 서버 클래스는 중개자 역할로 전락
- 클라이언트에서 직접 호출하는 것이 나을 수도 있음
- 위임 숨기긱 vs. 중개자 제거하기 사이에서 적절하게 판단
5. 알고리즘 교체하기
설명
- 기존 로직 보다 더 간결하고 효율적인 로직으로 바꾸는 것
- 라이브러리로 대체하는 것도 방법 중 하나
'programming study > Refactoring' 카테고리의 다른 글
Refactoring - 기능 이동(1) (0) | 2022.02.02 |
---|---|
Refactoring - 6장 기본적인 리팩터링(1) (0) | 2022.01.25 |
Refactoring - 4장 테스트 구축하기 (0) | 2022.01.15 |
Refactoring - 3장 코드에서 나는 악취 (0) | 2022.01.14 |
Refactoring - 2장 리팩터링 원칙 (0) | 2022.01.12 |