본문 바로가기
리팩토링

[리팩토링] 클래스 추출

by NYO_O 2023. 11. 6.
반응형

클래스 추출이 필요할 때?

한 클래스가 너무 많은 책임을 지고 있을 때

 

 

해법은?

묶을 수 있는 필드와 메서드를 찾아 새로운 클래스로 추출한다.

 

 

결과는?

클래스가 작아진다.

클래스의 책임이 명확해진다.

클래스의 개수가 늘어난다.

 

 

방법은?

1. 클래스의 책임을 어떻게 추출할 지 결정한다.

2. 추출한 책임을 담당할 새로운 클래스를 작성한다. (기존 클래스의 책임이 이름과 일치하지 않게 되면 기존 클래스의 이름을 바꾼다.)

3. 기존 클래스에서 새로운 클래스로 링크를 작성한다. (반대 방향 링크는 가능한 한 만들지 않는다.)

4. 기존 클래스에서 새로운 클래스로 필요한 필드를 이동한다.

5. 기존 클래스에서 새로운 클래스로 필요한 메소드를 이동한다.

6. 추출한 클래스를 검토한다.

클래스 인터페이스(API)를 줄일 수 있나?

➞ 사용하지 않는 메소드가 있는지, 공개할 필요 없는 메소드가 있는지 확인한다.

새로운 클래스를 외부에 공개해야 하나?

공개한다면 외부에서 수정 가능하게 할 것인가?

 

 

 

 

반응형

 

반응형