더북(TheBook)

또 다른 데이터 타입으로는 TimeSpan이 있다. 이름에서 알 수 있듯이 어떤 기간을 표현하기 위한 타입이다. 기간(duration)은 특히 캐싱이나 기한 만료가 필요한 거의 모든 소프트웨어 프로젝트에서 사용된다. 우리는 기간을 컴파일 시간 상수로 정의하려는 경향이 있다. 최악은 다음과 같이 정의하는 것이다.

const int cacheExpiration = 5; // 분

캐시 만료 시간의 단위가 분 단위인 것은 소스 코드를 보지 않고는 알 수 없다. 적어도 변수 이름에 시간 단위를 포함하는 것이 좋다. 이래야만 나중에 직장 동료나 본인이 소스 코드를 훑어 보지 않고도 해당 타입을 바로 알 수 있을 것이다.

public const int cacheExpirationMinutes = 5;

이 방법이 더 낫지만, 어떤 함수에서 다른 시간 단위를 입력으로 받는다면 동일한 기간이더라도 다음과 같이 변환해야 한다.

cache.Add(key, value, cacheExpirationMinutes * 60);

추가로 작업해야 하며, 추가로 변환해야 한다는 것을 기억해야 한다. 당연히 실수하기 쉽다. 60을 잘못 입력하여 이상한 값이 입력될 수 있으며, 이와 같은 단순한 계산 착오 때문에 이를 디버깅하거나 불필요하게 성능을 최적화하려고 몇 날 밤을 샐 수도 있다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.