호바호바호바

hovamoon.egloos.com

포토로그



생성 - Replace Constructors with Creation Methods


C++ 이나 Java 같은 언어는 생성자의 이름이 class 의 이름과 동일 해야 하기 때문에

클래스의 역할에 따라 너무 많은 생성자들로 인해 몇가지 문제 점이 야기 될수 있다.

- 각 생성자 별 용도 파악의 어려움
- 사용자의 오용 가능성의 중가
- 동일한 시그내처를 가진 생성자 추가의 불가능
- 사용 되지 않는 생성자의 존재 가능성

그리 하여 이 문제를 해결 하기 위해 Creation Method 를 제작 해 볼수 있다.

장점과 단점에 대해 미리 정리 해보자면

장점

- 함수 명에 의한 용도 파악이 명확해 진다
- 동일 시그내처로도 좀 더 역할이 명확한 생성 함수를 만들수 있다.
- 사용 되지 않는 생성 함수들을 찾기 쉬워 진다.

단점

- 표준이 아닌 방식으로 객체를 생성 하게 되므로 전체 적인 클래스 사용에 대한 일관성이 깨질수 있다.


생성자가 너무 많은 경우 (보통 클래스가 너무 많은 역할을 하는 경우..)

이 방법을 적용 하기 전에 Extract Class 혹은 Extract Subclass 리팩터링을 고려해 볼수 있다.

Factory 패턴을 통해 객체 생성 전담 클래스를 두는 방법도 있다.


덧글

댓글 입력 영역