ITEM 38 :: EFFECTIVE C#
안녕하세요, 38번째 시간입니다.
이번 챕터는 메서드보다 람다 표현식이 낫다, 입니다. 다만, 책에서 나오는 람다 표현식은 이를 단독으로만 사용했을 때의 부가효과를 말하는 것이 아닌 것 같네요.
설명
-
람다 표현식을 사용했을 때 코드 중복이 일어나는 부분이 있어도, 메서드를 사용한 것보다는 재사용성이 좋아 간단한 코드에 대해서는 메서드를 사용하는 것보다 람다 표현식을 사용하면 더 좋다.
-
또한 람다 표현식을 포함하는 간단한 메서드를 작성하여 쿼리의 일부분을 대체할 수 있다.
-
2번과 같은 메서드들은 반드시 입력 시퀀스를 취하도록 작성되어야하며, (입력받아야 된다는 것) yield return 키워드를 이용하여 시퀀스를 반환해야 한다.
-
이와 같은 패턴을 사용하면 원격지에서 수행할 새로운 표현식 트리를 생성하기 위해 IQueryable을 사용하는 Enumerator를 조합하여 사용할 수 있다. 이와 같이 사용하게되면 여러 단계에 걸쳐 쿼리를 수행하더라도 결과적으로 원격지에서 쿼리가 수행돼야 할 시점에 단일의 표현식 트리로 결합된다.
-
또한 앞서 잘게 쪼갠 코드를 재결합하여 응용프로그램 내에서 재사용할 수 있는 형태의 더 큰 쿼리를 만드는 것이다. 이러한 기법을 사용하면 첫 번째 예제에서 이야기한 코드 중복 문제를 피할 수 있을 뿐 아니라 쿼리가 실제로 수행되기 직전에 완성된 표현식 트리를 생성하도록 코드를 구조화할 수 있다.
-
복잡한 쿼리에서 람다 표현식을 재사용하는 가장 효율적인 방법 중 하나는 닫힌 제네릭 타입에 대하여 쿼리를 위한 확장 메서드를 작성하는 것이다. (물론 작성시에는 Ienumerable<타입>을 매개변수로 취하는 메서드를 함께 작성해야 한다. 이는 LINQ TO SQL 과 LINQ TO Objects 모두를 지원한다.)타입>
결론적으로
결론 : 쿼리를 작성할 때 람다 표현식을 본문으로 하는 조그만 빌딩 블록(작은 메서드)을 조합하여 완전한 쿼리를 작성할 수 있다. (마치 레고처럼. 이게 바로 객체지향 아닌가?) 또한 각각의 빌딩 블록은 IEnumerable