Software Engineering Note

클래스는 언제 나눠야 할까? 본문

일하며 개발하며

클래스는 언제 나눠야 할까?

devmoons 2018. 2. 27. 13:10

클래스를 나누고 싶어질 때는 물론 하나의 클래스가 너무 커질 때입니다.

하지만 크다고 해서 무조건 나누지는 않죠. 그냥 나누는 건 의미가 없기 때문입니다. "잘" 나눠야죠.


커져버린 클래스를 나누는 것 외에 클래스를 나누고 싶어 질 때가 있습니다.

보통은 느낌상 코드가 예쁘지 않을 때인데, 최근에 경험한 것을 정리하자면 바로 "문맥"이 섞이는 때입니다.

예를 들어, 클래스 A에서는 "취소"가 맞아 보이는데 메서드를 정리하다 보니 어떤 부분에서는 "삭제"라는 문맥이 발생하는 것입니다.

이런 때는 문맥을 기준으로 클래스를 분리하면 역할이 명확해집니다.

보통 하나의 클래스를 여러 개의 메서드로 분리하고 중복을 제거하다 보면 발견될 것입니다.


그런데 클래스를 나누고 나서 어떻게 잘 나누어진 것인지 확신할 수 있을까요?

이런 고민이 생길 때는 분리한 클래스를 테스트하는 코드를 만들면 됩니다.

테스트 코드를 작성하다가 "뭐 이렇게 해줘야 할게 많아?"라는 생각이 들면 클래스가 너무 많은 책임을 가지고 있거나

불필요한 정보를 가지고 있을 확률이 높습니다.


연습을 많이 하다 보면 나중에는 느낌적인 느낌으로 잘 나누는 때가 오겠죠?