더북(TheBook)

예제 11-3 MinMax 내에 두 개의 지역 변수를 사용하지 않고 단일의 튜플을 사용 ▶ MinMax2.cs

static (int min, int max) MinMax(IEnumerable<int> source)
{
    using (var iterator = source.GetEnumerator())
    {
        if (!iterator.MoveNext())
        {
            throw new InvalidOperationException(
                "Cannot find min/max of an empty sequence");
        }
        var result = (min: iterator.Current,
                      max: iterator.Current);
        while (iterator.MoveNext())
        {
            result.min = Math.Min(result.min, iterator.Current);
            result.max = Math.Max(result.max, iterator.Current);
        }
        return result;  ----- 튜플을 직접 반환
    }
}

 


➊ 첫 번째 값을 이용하여 최솟값, 최댓값을 동시에 가지고 있는 튜플 생성
➋ 튜플의 요소를 각각 수정

예제 11-3은 예제 11-1과 동작 방식이 거의 동일하다. 그저 두 개의 지역 변수를 하나로 묶었을 뿐이다. source, iterator, min, max를 사용하는 대신 source, iteratormin, max를 모두 포함하는 result 변수를 사용했다. 메모리 사용량과 성능은 모두 동일하며, 그저 다른 방식으로 코드를 작성했을 뿐이다. 이렇게 작성하는 것이 더 나은 코딩 방식이라고 할 수 있을까? 이는 상당히 주관적이고 경우에 따라 다를 것이므로 세부적인 구현 방식에 달려 있다고 볼 수 있다.

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