ITEM 14 :: EFFECTIVE C#


안녕하세요, 14번째 시간입니다. 네.


이번 챕터는 공용생성자에 관한 내용으로 시작할까 합니다. 공용생성자라는 건 이름만큼이나 간단한 개념입니다. 한 클래스의 여러 생성자 내에서 동일한 코드를 반복적으로 사용한다면 공용으로 사용할 수 있는 생성자를 작성하는 편이 낫기 때문에, 나온 개념이기 때문이죠. 개발자들은 코드의 양을 언제나 줄이고 싶어하거든요. 자세하게는 아래쪽에서 계속합니다!

설명

  1. 공용 생성자란 위에서 설명한대로, 여러 생성자 내에서 동일한 코드를 사용할 경우 비효율적이기 때문에, 하나의 생성자로 다 쓸 수 있게 만들어진 개념이다.

  2. 만약 공용 생성자를 사용하지 않고 중복되는 코드를 함수로 관리하게되면 비효율적이다. (readOnly의 초기화 문제 등)

  3. 공용 생성자는 클래스명() : this(매개변수1,매개변수2)와 같은 식으로 만들게 되며, 특별한 방법으로 만들어지는 만큼 내부적으로 좋은 점도 있다.

  4. 좋은 점 첫번째는 코드중복을 피할 수 있다는 것이다.

  5. 두번째는 이 공용 생성자 구문을 사용하게되면 내부적으로 최적화도 해준다는 것이다. (생성자의 반복 호출 방지 등)

  6. new() 제약 조건을 명시한 제네릭 클래스와 함께 사용해야 할 경우에는 기본값을 가지는 매개변수를 취하는 생성자만으론 안되므로, 반드시 매개변수가 없는 기본생성자를 구현해야한다.

  7. 공용생성자를 사용했을 때 단점도 있다. 그것은 바로, 기본값을 갖는 매개변수를 취하는 생성자를 작성하게 되면 이 타입을 사용하는 코드와의 결합도가 높아진다는 단점이다.

그래서요?

그럼에도, 여러 생성자에서 사용하는 반복적인 코드를 하나의 생성자로 퉁칠 수 있다는 것은 매력적인 제안이다. 전체적인 코드의 흐름을 보고, 생성자에서 반복적인 코드가 들어가는 부분이 있다면, 하나의 생성자, 즉, 공용 생성자로 선언하는 것은 어떨지 생각해보자.