본문 바로가기
C#/Effective C#

[Effective C#] Item14 초기화 코드가 중복되는것을최소화 하라.

by 코모's 2022. 7. 8.
반응형

초기화 코드가 중복되는것을 최소화 하라.

  • 다른 생성자를 화출하여 초기화 과정의 일부를 위임
    • 공통으로사용하는 생성자를 다른 생성자에서 호출하여 변수에 대한 중복 초기화 코드를 제거
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가지 전략과 기법, 이펙티브>, 빌 와그너, 김명신, 한빛미디어

반응형