ITEM 8 : Prefer Query Syntax to Loop
(Loop 구문보다 Query Syntax를 선호해라)
■ 요약 및 장점
1. Query Syntax를 이용하면 Imperative Syntax를 이용하는 것보다 가독성이 좋으며 유지보수에 좋다.
2. Query Syntax는 Filer(where clause)와 Sort(orderby clause), Projection(select clause)을 이용해서
원하는 결과를 한번에 추출할 수가 있다. 하지만 Imerpative Syntax는 새로 변수를 선언해서 데이터를 저장하고
조작을 다시 해줘야 원하는 결과를 얻을 수가 있다.
:위의 ProduceIndices3 함수와 QueryIndices3 함수는 동일한 결과를 리턴한다. 하지만 아래의 Query Syntax를 사용한
함수가 가독성면이나 효율면에서는 좋다. 당연히 향후에 내용이 변경이 후자가 용이하다.
3. Query Syntax로 구현이 가능한 것은 똑같이 Method Call로고 구현이 가능하다. 상황에 따라서 두가지 중에서 더 자연스러운 것이 있다.
(상황에 따라서 더 가독성이 좋은것으로 사용하면 될듯하다)
4. 몇몇의 Method들은 동일한 Query Syntax가 존재하지 않는다. ( Take,TakeWhile,Skip,SkipWhile,Min and Max) .
■ Terms
1. LINQ : Language Integrated Query, C# 3.0 부터 추가된 기능이다. (실제로 VS2010에서는 .NET 3.5부터 System.Data.Linq가 참조된다.)
DB나 배열의 값을 쿼리를 이용해서 원하는 값을 추출 할 수가 있다.
■ 해석이 모호하거나 중요한 구문
1. Throughout this item, where I refer to query syntax, you can get the same benefits through the method call syntax as you can from the query syntax.
■ 단어
1. imperatvice : 반드시 해야하는,긴요한
2. declarative : 서술문의
3. defer : 미루다/연기하다.
4. throughout : 도처에, ~동안에 죽, 내내
5. by extension : 더 나아가
6. spot : 발견하다,알아채다
7. justfification : 타당한 이유
8. composable : 구성할 수 있는, 작곡할 수 있는.
9. interim : 중간의,임시의,과도의
10. instance : 사례,경우 cf) for instance : 예를 들어서
11. outperform : 더 좋은 결과를 내다, 능가하다
■ 피드백
-우리가(?) Collections들을 순회할때 보통 For나 Foreach등을 많이 사용하게 되는데, 비교적 단순한 순회는 간단히 쓰일 수있지만
선택되는 대상이 여러가지 조건을 만족해야 할때 IF 표창을 여러군데 날리는 것 보다. Query Syntax를 사용해서 가독성 및 효율성을
확보하는게 좋다.
단, .NET 3.0 이상부터이다....(하지만 저는 .NET 2.0 이니...)
'프로그래밍 > Effective C#' 카테고리의 다른 글
ITEM 10 : 메소드 Overload를 최소화 하기 위해서 Optional Parameter를 사용하라 (0) | 2013.08.23 |
---|---|
ITEM 9 : Conversion Operator를 회피하라. (0) | 2013.08.23 |
ITEM 7 : GetHashCode의 함정을 이해하라. (0) | 2013.07.11 |
ITEM 6 : Equality의 다양한 다른 의미들의 관계를 이해하라. (0) | 2013.07.11 |
ITEM 5 : 항상 ToString()을 제공해라. (1) | 2013.07.11 |