우리는 바콜,이 코드를 가지고 : VS10 궁극의이벤트 핸들러 구독이 13 개인 메서드에서 순환 복잡도가 27 일 수 있습니까?
private void InitializeEvents()
{
this.Event1 += (s,e) => { };
this.Event2 += (s,e) => { };
this.Event3 += (s,e) => { };
this.Event4 += (s,e) => { };
this.Event5 += (s,e) => { };
this.Event6 += (s,e) => { };
this.Event7 += (s,e) => { };
this.Event8 += (s,e) => { };
this.Event9 += (s,e) => { };
this.Event10 += (s,e) => { };
this.Event11 += (s,e) => { };
this.Event12 += (s,e) => { };
this.Event13 += (s,e) => { };
}
코드 분석 "(27)의 복잡성을"을 말한다. 라인 중 하나를 제거하면 순환 복잡성이 25가됩니다.
어떻게 진행 되나요?
+1 "코드 분석이 소스 코드가 아니라 어셈블리에서 IL을보고 있습니다 .Lambda 식을 기본적으로 지원하는 IL은 없습니다" – Lijo
클로저가없는 경우 Lambda/대리자 만 캐시됩니다. 그들을 넘어서. 그렇지 않으면 그렇지 않습니다. 이것이 람다가 비싼 이유 중 하나입니다. JIT, 할당 및 GC도 관련되어 있습니다. 그러나 이것은 다른 논의를위한 것입니다. 내가 생각할 수있는 "뜨거운"방법으로 클로저를 사용하여 lambdas와 관련된 성능 문제를 해결했습니다. –