방프리
22.03.01 Chapter1. 데이터 타입 (Item 5) 본문
Item 5 : 값 타입에서는 0이 유효한 상태가 되도록 설계하라
이 항목에 해당하는건 기본적인 데이터 타입 (int, float, double 등...)이 아닌 사용자가 정의하는
enum에 초점이 맞춰져있다.
열거형은 코드의 가독성을 높히는데 가장 큰 공헌을 한다. 그만큼 자주 쓰이는데
자주 쓰이는만큼 이 타입을 어떻게 초기화할 것인지도 중요하다.
public enum Planet
{
Murcury = 1,
Venus = 2,
Earth = 3,
Mars = 4,
Jupiter = 5,
Saturn = 6,
Uranus = 7,
Neptune = 8,
}
Planet sphere = new Planet();
var anotherSphere = default(Planet);
sphere와 anotherSphere 두 변수 모두 0으로 초기화 되지만 Planet이라는 열거형에서는 0으로 선언된 값이 없기 때문에
유효하지 않다. 이는 초기화 시 혼동을 불러 일으킬 수 있기 때문에 기본값인 0은 무조건 포함시켜주는 것이 좋다.
public enum Planet
{
None = 0,
Murcury = 1,
Venus = 2,
Earth = 3,
Mars = 4,
Jupiter = 5,
Saturn = 6,
Uranus = 7,
Neptune = 8,
}
Planet sphere = new Planet();
var anotherSphere = default(Planet);
이는 열거형의 FlagAttribute를 선언할 때에도 마찬가지이다. 0이라는 타입을 추가함으로써 플래그가 아무것도 설정되지
않았음을 쉽게 표기할 수도 있다.
이외에 string 또한 초기화 하기 조금 애매한데(null 또는 빈 문자열을 가질 수 있으므로),
속성을 사용하여 왠만하면 null을 반환하는 것보단 빈 문자열을 반환하도록 유도한다.
public struct LogMessage
{
private int ErrLevel;
private string msg;
public string Message
{
get => msg ?? string.Empty;
set => msg = value;
}
}
'C# > More Effective C#' 카테고리의 다른 글
22.05.07 Chapter1. 데이터 타입 (Item 7) (0) | 2022.05.07 |
---|---|
22.03.13 Chapter1. 데이터 타입 (Item 6) (0) | 2022.03.14 |
22.03.01 Chapter1. 데이터 타입 (Item 4) (0) | 2022.03.01 |
21.10.26 Chapter1. 데이터 타입 (Item 3) (0) | 2021.10.27 |
21.10.09 Chapter1. 데이터 타입 (Item 2) (0) | 2021.10.09 |
Comments