반응형
초기화 코드가 중복되는것을 최소화 하라.
- 다른 생성자를 화출하여 초기화 과정의 일부를 위임
- 공통으로사용하는 생성자를 다른 생성자에서 호출하여 변수에 대한 중복 초기화 코드를 제거
public class Myclass
{
private List<ImportantData> coll;
//데이터 컬렉션
private string name
//인스턴스 변수
public Myclass() : this(0,""){}
public Myclass(int count) : this(count, string.Empty){}
public Myclass(int count, string name)
{
coll = (count > 0) ? new List<ImportantData>(count) : new List<ImportantData>();
this.name = name;
}
}
- 다른 생성자를 호출하여 초기화 과정을 일부 위임 + 기본 매개변수도 가능
- 매개변수가 없는 생성자를 반드시 필요로함.
- 임의의 생성자가 동일 클래스내에 정의된 다른 생성자를 호출하는 방식인 "생성자 체인 기법"을 사용하는 것이 좋다.
public MyClass() : this(0, string.Empty){}
//이 함수가 꼭 필요
public MyClass(int count =0, string name = "")
{
...
}
- 특정 타입의 이스턴스가 생성되는 전체 순서
- 정적 변수의 저장공간을 0으로 초기화
- 정적 변수에 대한 초기화 구문을 수행
- 베이스 클래스의 정적 생성자 수행
- 인스턴스 변수의 저장공간을 0 으로 초기화
- 인스턴스 변수에 초기화 구문을 수행
- 적적한 베이스 클래스의 인스턴스 생성자 수행
- 인스턴스 생성자 수행
참조 - Effective C# <강력한 C# 코드를 구현하는 50가지 전략과 기법, 이펙티브>, 빌 와그너, 김명신, 한빛미디어
반응형
'C# > Effective C#' 카테고리의 다른 글
[Effective C#] Item16 생성자 내에서는 절대로 가상함수를 호출하지 마라. (0) | 2022.08.30 |
---|---|
[Effective C#] Item15 불필요한 객체를 만들지 마라 (0) | 2022.07.13 |
[Effective c#] Item11 ~ Item13 (0) | 2022.07.08 |
[Effective C#] Item6 ~ Item 10 (0) | 2022.07.08 |
[Effective C#] Item1 ~ Item5 (0) | 2022.07.08 |