[c#] C# 이터레이터 리팩터링

C#에서 이터레이터는 yield 키워드를 사용하여 컬렉션을 나타내는데 유용한 기능입니다. 이터레이터를 통해 간결하고 효율적인 코드를 작성할 수 있지만, 때로는 이러한 이터레이터를 리팩터링하여 가독성을 높이거나 유지보수성을 높이는 작업이 필요합니다.

리팩터링의 필요성

이터레이터 함수는 복잡성이 증가하면서 유지보수가 어려워질 수 있습니다. 또한 기능이 추가되거나 변경될 때마다 기존의 이터레이터 함수를 수정해야 할 수 있습니다. 이로 인해 코드베이스가 점점 복잡해지고 유연성이 떨어질 수 있습니다. 이를 방지하고자 이터레이터를 리팩터링 하는 것이 좋습니다.

예시

다음은 기존의 이터레이터 함수인 GetNumbers가 있습니다.

public IEnumerable<int> GetNumbers()
{
    for (int i = 1; i <= 10; i++)
    {
        yield return i;
    }
}

이러한 이터레이터 함수를 리팩터링하여 GenerateNumbers로 변경할 수 있습니다.

public IEnumerable<int> GenerateNumbers()
{
    return Enumerable.Range(1, 10);
}

GenerateNumbers에서는 LINQ의 Enumerable.Range 메서드를 사용하여 같은 결과를 얻을 수 있지만, 코드가 간결해지고 읽기 쉬워집니다.

결론

이터레이터 함수를 리팩터링하여 더 간결하고 유지보수하기 쉬운 코드를 작성할 수 있습니다. 이를 통해 코드의 가독성과 유연성을 향상시킬 수 있으며, 기능을 확장하거나 변경할 때 더 유연하고 안전한 방법으로 코드를 관리할 수 있습니다.

참고문헌:

[C#][리팩터링] [이터레이터][yield] [LINQ][Enumerable.Range]