# 3.20 거대한 클래스

### 거대한 클래스

한 클래스가 너무 많은 일을 하려다 보면 필드 수가 늘어난다. 클래스에 필드가 너무 많으면 중복 코드가 생기기 쉽다.

📍 **클래스 추출하기**: 필드들 일부를 따로 묶는다.

→ 같은 컴포넌트에 모아두는 것이 합당해 보이는 필드들을 선택하면 된다.

`depositAmount`와 `depositCurrency` 필드는 같은 컴포넌트에 두는 것이 좋다. 일반적으로 한 클래스 안에서 접두어나 접미어가 같은 필드들이 함께 추출할 후보들이다.

📍 **슈퍼클래스 추출하기**: 분리할 컴포넌트를 원래 클래스와 상속 관계로 만드는 게 좋은 경우(**클래스 추출하기 보다**) 적용하기적용하기

📍 **타입 코드를 서브클래스로 바꾸기**: (실질적으로 **서브클래스 추출하기**에 해당하는)&#x20;

### 필드가 너무 많은 클래스와 마찬가지로 코드량이 너무 많은 클래스도 중복 코드와 혼동을 일으킬 여지가 있다.

가장 간단한 해법은 그 클래스 안에서 자체적으로 중복을 제거하는 것이다.

클라이언트들이 거대 클래스를 이용하는지 패턴을 파악하여 그 클래스를 어떻게 쪼갤지 단서를 얻을 수 있다. 클라이언트들이 거대 클래스의 특정 기능 그룹만 주로 사용하는지 살핀다. 이 때 각각의 기능 그룹이 개별 클래스로 추출될 후보다. 유용한 기능 그룹을 찾았다면 **클래스 추출하기, 슈퍼클래스 추출하기, 타입 코드를 서브클래스로 바꾸기** 등을 활용하여 여러 클래스로 분리한다.
