본문 바로가기
책/Effective C#

Effective C# - Item 30 루프보다 쿼리 구문이 낫다

by 코딩하는 돼징 2024. 3. 7.
반응형

for, while, do/while, foreach등의 다양한 반복 구문이 있는데 이는 일상적인 개발에는 부족함이 없다. 하지만 쿼리 구문을 사용하는 것이 반복문을 사용하는 것보다 더 나은 경우가 있다.

 

쿼리 구문을 사용할시 장점

LINQ의 지연 실행(Lazy Evaluation)

쿼리 구문을 이용하면 질의의 내용을 구성할 수 있을 뿐 아니라 개별 항목에 대해 수행하려는 작업의 수행 시키를 연기할 수 있다. 쿼리 구문이나 메서드 호출 구문 중 어떤 방식을 쓰더라도 이러한 장점은 동일하다. 그러므로 쿼리가 정의된 시점에서는 실제로 데이터가 계산되지 않고 필요한 시점에서만 연산이 수행된다. 이에 따라 메모리와 성능을 효율적으로 관리할 수 있게 해준다.

가독성 및 유지 보수성

쿼리 구문이나 메서드 호출 구문을 확장하여 사용하면 루프를 이용하는 것보다 사용자의 의도를 더 명확하게 드러낼 수 있다. 또한 LINQ를 사용하므로 다른 데이터 소스에서도 사용할 수 있게되므로 유지 보수성이 향상된다.


예시를 통해 알아보자

01 반복문을 사용하는 경우

var foo = new int[100];
for(var num = 0; num < foo.length; num++)
    foo[num] = num * num;
foreach(int i in foo)
    Console.WriteLine(i.ToString());

02 쿼리구문을 사용하는 경우

var foo = (from n in Enumerable.Range(0,100) select n*n).ToArray();
foo.ForAll((n) => Console.WriteLine(n.ToString()));

결론

쿼리 구문과 메서드 호출 구문 중 어떤 것이 더 가독성이 좋은가 하는 것은 사실 스타일의 문제이다.  본인의 기호에 따라 기존의 방식을 이용해도 되지만 반복 구문을 작성해야 한다면 쿼리 구문으로 변경할 수 있는지 다시 한 번 생각해보자. 거의 대부분의 경우에 반복 구문을 사용하는 것보다 더욱 깔끔하게 코드를 작성할 수 있다.

 

 

 

 

 

본 게시글은 Effective C#을 읽고 정리하였습니다.

 

 

 

 

반응형

댓글