반응형
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#을 읽고 정리하였습니다.
반응형
'책 > Effective C#' 카테고리의 다른 글
Effective C# - Item31 시퀀스에 사용할 수 있는 조합 가능한 API를 작성하라 (0) | 2024.03.08 |
---|---|
Effective C# - Item 29 컬렉션을 반환하기보다 이터레이터를 반환하는 것이 낫다 (0) | 2024.02.02 |
Effective C# - Item 28 확장 메서드를 이용하여 구체화된 제네릭 타입을 개선하라 (0) | 2024.01.20 |
Effective C# - Item 27 인터페이스는 간략히 정의하고 기능의 확장은 확장메서드를 사용하라 (1) | 2024.01.19 |
Effective C# - Item 26 제네릭 인터페이스와 논제네릭 인터페이스를 함께 구현하라 (0) | 2023.12.20 |
댓글