[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
메서드를 사용하여 같은 결과를 얻을 수 있지만, 코드가 간결해지고 읽기 쉬워집니다.
결론
이터레이터 함수를 리팩터링하여 더 간결하고 유지보수하기 쉬운 코드를 작성할 수 있습니다. 이를 통해 코드의 가독성과 유연성을 향상시킬 수 있으며, 기능을 확장하거나 변경할 때 더 유연하고 안전한 방법으로 코드를 관리할 수 있습니다.
참고문헌:
- https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/yield
- https://docs.microsoft.com/en-us/dotnet/api/system.linq.enumerable.range
[C#][리팩터링] [이터레이터][yield] [LINQ][Enumerable.Range]