방프리
21.09.06 Chapter4. LINQ 활용 (Item 40) 본문
Item 40 : 지연 수행과 즉시 수행을 구분하라
이전 37번 항목 (쿼리를 사용할 때는 즉시 평가보다 지연 평가가 낫다)에서 LINQ에서 지연 수행의 필요성을
배웠었다. 이번 항목도 이에 대한 연장선이라고 할 수 있다.
보통 다음의 코드를 본다면 다음과 같이 동작할거라 생각한다.
var answer = DoStuff( () => Method1(),
() => Method2(),
() => Method3());
// Method1() => Method2() => Method3()
하지만 그렇지 않다. DoStuff()가 수행되면서 필요할 때만 해당 함수를 수행하게 된다. 즉 Method2()가 실행 될 때
이미 Method1()이 실행된 상태가 아니라는 뜻이다.
특히 예제에서는 매개변수가 없지만, 매개변수가 있는 상태에서 동작하는 함수라면 상황은 크게 달라진다.
그렇기에 저자는 다음과 같은 코드를 짤 때 굉장한 주의와 여러 가지 제약이 필요하다고 서술하고 있다.
예로 매개변수가 필요하다면 해당 매개 변수는 변경 불가 타입으로 만들어야 할 것.
캐싱할 수 있는 데이터는 최대한 캐싱할 것, 위의 방식과 비슷한 코드로 만들어야 한다면 속도, 공간 측에서도
충분히 고려해야한다고 한다.
'C# > Effective C#' 카테고리의 다른 글
21.09.18 Chapter4. LINQ 활용 (Item 42) (0) | 2021.09.18 |
---|---|
21.09.18 Chapter4. LINQ 활용 (Item 41) (0) | 2021.09.18 |
21.09.04 Chapter4. LINQ 활용 (Item 39) (0) | 2021.09.04 |
21.09.01 Chapter4. LINQ 활용 (Item 38) (0) | 2021.09.03 |
21.08.31 Chapter4. LINQ 활용 (Item 37) (0) | 2021.08.31 |
Comments