I C#에서 다음과 같은 코드가 있습니다foreach 문을 제거하여 방법의 복잡성을 줄 루프
foreach (var c1 in object1.Collection1)
{
foreach (var c2 in c1.Collection2.Where(b => b.Settings?.Name != null))
{
foreach (var c3 in c2.Settings.Name.Where(s => !string.IsNullOrWhiteSpace(s)).Select(s => s.ToLowerInvariant().GetHashCode()).ToList())
{
//process c3
}
}
}
어떻게 배열에 내가 필요로하는 요소를 (c2.Settings.Name
) 결합 linq
을 사용하고 있기 때문에이 코드를 하나의 foreach
이 내 방법의 복잡도는 5이고 Sonar
은 이에 대해 불평하고 있습니다.
당신은 확실히 LINQ를 사용할 수 있지만 가능성이 더 이상 무언가와 끝까지하지 않습니다 효율적이며 덜 읽을 수도 있습니다. –
@MattBurland 및이 상황에서 무엇을 선택 하시겠습니까? –
LINQ를 사용하면 성능이나 복잡성을 고려하여 코드를 더 잘 만들 수 있다는 것이 일반적인 오류입니다. 사실 그것은 종종 좋은 점이 아닌 복잡성을 숨 깁니다. Linq는 또한 루프 기반 접근법으로이 작업을 수행하는 것과 정확히 같은 방식으로 컬렉션의 항목을 반복합니다. 코드를 그대로두면, 이해하기 쉽고 일을 끝내게됩니다. 그렇죠? – HimBromBeere