본문 바로가기
자바로 배우는 리팩토링

클래스 추출

by 킹차니 2022. 1. 1.

클래스 추출

클래스는 각각의 역할이 있어서 그 일을 완수할 '책임'이 있다. 즉 클래스에 있는 필드나 메소드는 해당 클래스가 그 책임을 다하기 위해 선언한 것이다. "클래스에는 하나의 책임만 있는 것이 이상적"이지만 코드를 작성하다 보면 점점 클래스의 크기가 커질 때가 있다.

이때 기존 클래스가 지는 책임 중 누군가에게 넘길 수 잇는 것이 있는지 찾아본다. 그리고 책임을 넘길 새로운 클래스를 작성한다.

 

책 정보를 관리하는 클래스인 Book을 보자.

Client는 Book객체를 생성해서 toXml메소드를 호출하여 Book에 대한 xml을 얻는다.

실행결과:

 

위의 Book클래스에 이미 노란 네모박스를 칠해 둔 것같이 하나의 클래스에 Book과 책의 저자인 Author에 대한 정보가 존재한다.

이를 클래스 추출로 분리해보자.

 

Author정보를 분리한 Book클래스는 다음과 같다.

Author를 가지고 있는 것을 볼 수 있다.

 

분리된 Author클래스

이를 실행해보면 이전과 결과는 똑같다.

 

이렇게 수정하고나면

1. 객체의 역할이 뚜렷해져 책임이 역시 분명해짐

2. Author혹은 Book에 대한 기능 추가할 때, 클래스가 비대해지는 것을 최소화할 수 있다.

'자바로 배우는 리팩토링' 카테고리의 다른 글

메소드 추출  (0) 2021.12.31
널(null)객체 도입  (0) 2021.12.28
어서션(Assertion)  (0) 2021.12.25
MagicNumber를 치환하기  (0) 2021.12.22
리팩토링이란?  (0) 2021.12.22