2008-10-14 3 views
6

나는 두 개의 코드를 가지고 있는데, 하나는 더 읽기 쉽다.읽을 수있는 것은 무엇입니까?

  1. foreach는

    decimal technicalPremium = 0; 
    foreach (Risk risk in risks) 
    { 
        technicalPremium = technicalPremium + risk.TechnicalPremium; 
    } 
    return technicalPremium; 
    
  2. LINQ

    return risks.Sum(risk => risk.TechnicalPremium); 
    
+2

왜 ForEach에서는 변수를 반복하지 않고 + =를 사용하지 않습니까? –

답변

16

코드에서 작동 팀이 Linq에 버전을 수행하고 그 내부 동작을 알고 무엇을 알고있는 경우는, 다음은 더 읽기 쉽습니다.

0

두 번째 옵션이 더 효율적이라고 생각합니다. 그러나, 어떤 일이 일어나는지는 덜 분명합니다 (적어도 저에게).

+0

사실, LINQ는 일반적으로 * 오버 헤드를 추가합니다 - 그러나 거의 중요하지는 않지만 (특히이 경우에는) 너무 적습니다. 이 경우 항목 당 대리자 호출 및 스택 홉 수를 추가합니다. 나는 잠을 자지 않을 것이다 - 나를 위해 # 2 ;-p –

4

LINQ를 읽을 수있는 사람, LINQ. IntelliSense를/문서 짧은 하나를 사용하여 (단계별로 코드 단계를 해석 할 수있는 사람을 위해

.

LINQ 코드는 모두 매우 읽고 그 자체로 문서입니다
12

어느. 첫 번째 두 번째는 더 간결하고 linq에 대한 지식이있는 사람이라도 누구나 쉽게 이해할 수 있습니다.

나는 당신이 현재있는 환경에 기반 할 수 있다고 말하고 싶습니다.

2

linq로 이동하십시오. 설명이 필요하다고 생각하면 한 줄 주석으로 처리 할 것입니다. 사람들이 linq에 익숙해 짐에 따라 코멘트에 대한 필요성은 사라질 것입니다.

0

나는 linq을 알지 못하므로 처음으로 말하고 싶습니다. 과도한 문서 작성의 위험에 처해있는 상황에 대한 간단한 설명과 함께이 문서를 사용합니다. 아니면 아무 생각이없는 사람들을 위해 linq이라고 말하십시오.

1

첫 번째 옵션은 더 많은 사람들이 읽을 수 있습니다. 두 번째 옵션은 독자가 LINQ를 알고 이해할 수있는 '진입 장벽'이 있습니다. 좀 더 간결하며 잠재 고객이 진입 장벽을 넘어 서면 더 좋습니다.

0

당신이 그 목적을 설명하는 코멘트를 주면, 나는 Linq 옵션을 사용하려고한다.

0

Linq에 대해 알지 못하면 처음입니다. 누구나 개발자가 첫 번째 것을 읽고 이해할 수 있습니다.

0

여기에는 가독성 문제가 없습니다. 합계를 클릭하고 F1 키를 누릅니다.

승리를위한 Linq.

+0

F1을 칠 필요가 없다. Sum 위에 마우스를 올리면 해당 기능을 설명하는 툴팁이 표시됩니다.) – OregonGhost

+0

누가 마우스를 사용합니까? 오, 내가 말했어. Click ... 너는 나를 잡았을거야, 롤. –

0

각 언어는 이러한 것들을 코딩하는 최선의 방법에 대한 규칙을 가지고 있으므로 정기적으로 해당 언어를 사용하는 사람들에게 가장 이해하기 쉬운 것은 보편적이지 않습니다. Java 또는 일반 C# 프로그래머의 경우 첫 번째 옵션이 더 읽기 쉽습니다. LINQ 또는 함수형 프로그래밍에 익숙한 사람에게는 두 번째가 더 읽기 쉽습니다.당신이 선호하지만 방법에 숨길 중

+0

"정상적인 C# 프로그래머"가 Linq를 이해하지 못하는 경우 문제가 있습니다. –

+0

글쎄, LINQ를 "이해"하고 누군가가 목록 클래스에 추가 한 확장 메서드에 대해 알고 있고 심지어 알지도 못하는 것은 아마도 차이 일 것입니다. .NET 2.0 개발자는 .Sum 메서드를 이해할 수 있지만 Sum 메서드가 어디에서 왔는지 궁금해 할 것입니다. – hangy

15

사용 :

return risks.SumTechnicalPremium(); 
0

나는 C#을하지만 두 번째 대안을 모르는 나에게 많은 청소기 외모와 나는 몇 가지 추측과 확인 (무엇을 이해할 수 첫 번째 버전과 교차 확인). 아마도 기능적 배경 때문일 수 있습니다. 그러나 처음에는 4 가지 (!) 장소에서 technicalPremium을 찾아야합니다. 두 번째 코드는 코드를 읽는 것보다 훨씬 짧고 이해하기 쉽습니다.

0

또는

진수 technicalPremium = 0;

foreach (위험 위험의 위험) technicalPremium = technicalPremium + risk.TechnicalPremium;

return technicalPremium;

0

나는 사람들이 "당신이 Linq에를 모르는 경우"그들이 처음처럼 말을 참조하십시오. 그래, 그리고 C#을 모른다면 첫 번째는 읽을 수 없다. 이것은 "어느 언어가 더 읽기 쉽다"는 질문이 아니지만 "어떤 언어 기능을 사용하면 편안합니까?"

모든 사람이 싫어하는 언어/프레임 워크/도구 세트의 부분에 대해 팀과 대화를 나누고 한계에서 벗어난 것으로 선언하십시오. 그 밖의 모든 것은 표준 어휘의 일부로 간주되며 모든 사람들은 유창합니다. 이 목록은 코딩 표준 문서의 'never make mutable value types'과 'don't bother with trivial properties for non-public members'옆에 위치해야합니다.

Linq가 "제외"목록에없는 한 두 번째 예는 까지 첫 번째보다 읽기 쉽습니다. 왜? 독자가 해독 할 수있는 메커니즘을 제시하는 대신 코드의 의도를 선언하기 때문입니다. 당신의 목표는 후 올 수도 "사람"에 대한 더 읽을 수 있도록하는 경우

0

, 다음 foreach 문을 사용합니다. 나는 언어의 기본 지식을 가진 사람이라면 누구나 이해할 수 있어야한다는 것을 "더 읽기 쉽도록"해석합니다. linq에 익숙하지 않고 VS2005 이전 버전을 사용하고있는 사용자라면 linq 구문이 혼란 스러울 것입니다.

0

코드의 첫 번째 부분은 분명히 읽기 쉽고 적어도 변수의 이름을 변경하여 클래스와 다른 이름을 사용하면 훨씬 쉽게 읽을 수 있습니다. 배열 위험을 변경하면 더 좋을 것입니다.

0

나는 Linq에 더 널리 채택대로 두 번째는 쉽게 이해할 수있을 것이다 말하는 사람들에 동의합니다. 확실히 더 간결합니다.

그러나, 나는 디버깅의 용이성을 통해 몇 가지 문제가 있습니다. foreach에서 코드를 단계별로 실행하여 각 패스에서 수행중인 작업을 정확히 파악하는 것이 훨씬 쉬워 보입니다.

0

나는 그것이 "읽을 수있는"의미에 달려 있다고 생각합니다. 첫 번째 예제는 프로그램 논리를 명확하게 나타내며 프로그래밍 지식이있는 사람은 누구나 이해할 수 있어야합니다.

나에게 두 번째 예제는 컨텍스트 (즉, 배열 (또는 다른 컬렉션 유형)을 취하고 해당 배열의 각 요소에서 Sum이라는 메서드를 실행하는 경우)에 따라보다 직관적입니다. 두 번째 예제가 덜 명확해질 수있는 유일한 곳은 실제 람다 표현 자체에 있으며 특히 람다 또는 앨 래디에 대한 경험이없는 사람에게는 함수 프로그래밍에 대한 배경 지식이 있습니다.

나는 람다가. NET 프로그래밍에서 더 널리 보급됨에 따라 문제가 줄어들 것이라고 생각합니다. 그 자체로, 나는 .NET에서 람다 식을 사용하는 방법의 기초를 이해하는 아주 작은 학습 곡선이 있다고 생각한다.

0

두 번째 것입니다. 합산만큼 단순한 작업을 수행하는 데 필요한 큰 코드 블록은 필요하지 않습니다. 나는 또한 LINQ가 무엇인지 모르지만 그것은 나에게 완벽하게 읽을 수있다.

관련 문제