생성자를 작성하다 보면 종종 동일한 작업을 되풀이할 때가 있어서 기존에 작성한 코드를 그대로
복사하곤 한다. 지금가지 이런 방식으로 생성자를 작성했다면 더 이상은 그렇게 하지 않기를 바란다.
노련한 C++ 개발자들은 여러 생성자 내에서 공통적으로 수행하는 코드 블록을 private 헬퍼 메서드
로 분리한 후 이 메서드를 호출하도록 설정하곤 한다. C#을 이용하여 개발하는 경우라면 이 또한
권장할 만한 방법이 아니다. 여러 생성자 내에서 동일한 코드를 반복적으로 사용해야 한다면 C++
에서와 같이 private 헬퍼 메서드를 작성하기보다는 공용으로 사용할 수 있는 생성자를 작성하는
편이 낫다. 이렇게 하면 코드가 중복되는 것을 피할 수 있을 뿐 아니라 더 효율적으로 수행되는
생성자를 작성할 수 있다. C# 컴파일러는 공용 생성자를 이용하는 초기화 방식을 매우 특별한
문법으로 인식한다. 변수에 대한 중복 초기화 코드를 제거해줄 뿐 아니라 베이스 클래스의 생성자가
반복적으로 호출되는 것도 막아준다. 즉 객체 초기화를 위해 수행해야 하는 코드를 최적화해준다.
개발자 입장에서는 초기화 과정 일부를 공용 생성자에 위임할 수 있으므로 작성하는 코드의 양을
최소화할 수 있다.
생성자를 이용하여 멤버 변수의 값을 초기화하는 경우라면 다른 생성자를 호출하여 초기화 과정의
일부를 위임할 수 있다. 다음에 간단한 예를 나타냈다.
public class MyClass
{
// 데이터 컬렉션
private List<ImportantData> coll;
// 인스턴스 변수
private string name;
public MyClass() :this(0, "")
{
}
public MyClass(int initialCount) : this(initialCount, string.Empty)
{
}
public MyClass(int initialCount, string name)
{
coll = (initialCount > 0) ?
new List<ImportantData>(initialCount) :
new List<ImportantData>();
this.name = name;
}
}
C# 4.0에 추가된 기본 매개변수 기능을 활용하면 생성자 내의 중복 코드를 더욱 줄일 수 있다.
MyClass 내에 있는 여러 개의 생성자를 기본값을 가진 매개변수를 취하는 생성자 하나로 대체할 수
있기 때문이다.