반면에 CreatedOn은 구조체이므로 컴파일러는 0으로 채우기만 하면 된다. 이로 인해 컴파일러 오류가 발생하지 않지만 여러분은 여전히 컴파일러 오류를 피하고 싶을 것이다.
컴파일러 오류를 수정할 때 개발자의 첫 번째 반응은 컴파일러가 제안하는 제안을 모두 적용하는 것이다. 앞의 예에서 컴파일러가 제안한 것이 nullable로 속성을 선언하는 것이지만, 이렇게 하면 이해가 달라진다. 갑자기 이름과 성에 대한 속성도 선택 사항으로 지정하는데 그래서는 안 된다. 선택 사항에 대해 어떤 방법을 사용할지 생각해 봐야 한다.
속성을 널로 만들지 않으려면 스스로 몇 가지 질문을 해야 한다. 먼저 “속성에 기본값이 있을까?”라고 질문해 보자.
이 경우 생성자에서 기본값을 할당할 수 있다. 그러면 코드를 검토할 때 클래스 동작에 대해 더 나은 생각을 얻을 수 있을 것이다. 캠페인 소스 필드에 기본값이 있다면 다음과 같이 쓸 수 있다.
public string CampaignSource { get; set; } = "organic"; public DateTimeOffset CreatedOn { get; set; } = DateTimeOffset.Now;
이렇게 컴파일러 경고를 제거할 수 있고, 자신의 코드를 읽는 다른 사람에게 의도를 전달할 수 있다.