클래스 추출
클래스는 각각의 역할이 있어서 그 일을 완수할 '책임'이 있다. 즉 클래스에 있는 필드나 메소드는 해당 클래스가 그 책임을 다하기 위해 선언한 것이다. "클래스에는 하나의 책임만 있는 것이 이상적"이지만 코드를 작성하다 보면 점점 클래스의 크기가 커질 때가 있다.
이때 기존 클래스가 지는 책임 중 누군가에게 넘길 수 잇는 것이 있는지 찾아본다. 그리고 책임을 넘길 새로운 클래스를 작성한다.
책 정보를 관리하는 클래스인 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 |