ITEM 14 :: EFFECTIVE C#
안녕하세요, 14번째 시간입니다. 네.
이번 챕터는 공용생성자에 관한 내용으로 시작할까 합니다. 공용생성자라는 건 이름만큼이나 간단한 개념입니다. 한 클래스의 여러 생성자 내에서 동일한 코드를 반복적으로 사용한다면 공용으로 사용할 수 있는 생성자를 작성하는 편이 낫기 때문에, 나온 개념이기 때문이죠. 개발자들은 코드의 양을 언제나 줄이고 싶어하거든요. 자세하게는 아래쪽에서 계속합니다!
설명
-
공용 생성자란 위에서 설명한대로, 여러 생성자 내에서 동일한 코드를 사용할 경우 비효율적이기 때문에, 하나의 생성자로 다 쓸 수 있게 만들어진 개념이다.
-
만약 공용 생성자를 사용하지 않고 중복되는 코드를 함수로 관리하게되면 비효율적이다. (readOnly의 초기화 문제 등)
-
공용 생성자는 클래스명() : this(매개변수1,매개변수2)와 같은 식으로 만들게 되며, 특별한 방법으로 만들어지는 만큼 내부적으로 좋은 점도 있다.
-
좋은 점 첫번째는 코드중복을 피할 수 있다는 것이다.
-
두번째는 이 공용 생성자 구문을 사용하게되면 내부적으로 최적화도 해준다는 것이다. (생성자의 반복 호출 방지 등)
-
new() 제약 조건을 명시한 제네릭 클래스와 함께 사용해야 할 경우에는 기본값을 가지는 매개변수를 취하는 생성자만으론 안되므로, 반드시 매개변수가 없는 기본생성자를 구현해야한다.
-
공용생성자를 사용했을 때 단점도 있다. 그것은 바로, 기본값을 갖는 매개변수를 취하는 생성자를 작성하게 되면 이 타입을 사용하는 코드와의 결합도가 높아진다는 단점이다.
그래서요?
그럼에도, 여러 생성자에서 사용하는 반복적인 코드를 하나의 생성자로 퉁칠 수 있다는 것은 매력적인 제안이다. 전체적인 코드의 흐름을 보고, 생성자에서 반복적인 코드가 들어가는 부분이 있다면, 하나의 생성자, 즉, 공용 생성자로 선언하는 것은 어떨지 생각해보자.