2009-11-03 3 views
7

우리는 일반적으로 모든 C# 구문에 대해 코딩/명명 표준을 따릅니다. 예를 들어, 메소드 내에 string을 선언하면 Scope-datatype-FieldName 형식을 사용합니다. (lstrPersonName)LINQ 명명 표준 - 람다 식

List<Person> icolPerson; 
private LoadPersonName() 
{ 
    string lstrPersonaName; 
} 

나는 람다 식의 명명 표준을 어떻게 준수 할까? 특히 func 대리자에 대한 인수를 정의 할 때 x와 같은 단락 이름을 사용합니다. 예 :

var lobjPerson = icolPerson.Where(x => x.person_id = 100) 

위의 행을 보면 X는 표준을 따르지 않습니다. 나는 또한 lambda 표현의 목적 중 하나가 길이가 긴 코드를 줄이는 것이라고 읽었다.

나는 표준 명명에 대한 올바른 접근 방법을 얻는 데 도움을 얻으려고 여기에 있습니다.

var lobjPerson = icolPerson.Where(x => x.person_id = 100) 

또는

var lobjPerson = icolPerson.Where(lobjPerson => lobjPerson .person_id = 100) 

답변

7

저는 VBScript (ASP)에서 많은 프로그래밍 작업을 수행했으며 데이터 형식을 추적하기 위해 헝가리 표기법을 사용하여 정상적인 상태로 유지하는 것이 중요했습니다. C#과 같은 타입 안전 언어에서는 그런 식으로 헝가리 표기법을 사용하지 않습니다.

설명 변수 이름은 코드의 가독성을 위해 매우 많이 사용되지만 변수의 모든 측면을 설명 할 필요는 없습니다. persons과 같은 이름은 사람 개체 모음 인 것을 나타냅니다. List<Person> 또는 IEnumerable<Person>은 일반적으로 코드가하는 일을 이해하는 데 중요하지 않으며 컴파일러는 완전히 잘못된 작업을 시도하는 경우 즉시 알려줍니다.

변수의 범위가 매우 제한적인 단일 문자 변수 이름을 자주 사용합니다. 예를 들어 작은 루프 또는 람다 식의 i 색인 변수

1

에는 전혀 올바른 접근 방식이 없습니다. 다른 코딩 표준 (예 : 공백과 새 행/표현식)과 같은 이름 지정 표준은 그룹 내부의 규칙입니다. 따라서 원하는대로 코드를 작성하고 회사에서해야합니다. 하지만 일관되게해라!

개인 필드의 이름에 밑줄 접두사를 사용하는 것이 좋습니다. 그러나 당신의 스타일 (visibility + type + name)은 저에게 오래된 WInAPI code citation (헝가리 표기법) = 같은 것을 찾습니다. 이 말을이었다 경우

var lobjPerson = icolPerson.Where(p => p.person_id = 100); 

또 다른 예를 입력 Car 내가 할 것 :이 유형의 사람이기 때문에

3

나는 대개 내가 할 것 나는 당신의 경우에 너무 질의하고있는 유형의 첫 글자를 사용합니다 :

var lobjCar = icolCar.Where(c => c.car_id = 100); 

나는 그러나, 내가 경도로 car => car.car_id

0

즉, 쿼리에서 전체 이름을 사용하여 아무 잘못이 없다고 생각, 순발력이 작업을 수행 g 람다식이 하나의 문장 일 뿐이므로 가능한 한 변수 이름을 짧게 유지합니다. 네이밍의 전체적인 목적은 코드를 읽을 수있게 만드는 것이며,이 경우 메소드 이름과 일반 컨텍스트로 충분해야합니다.

항상 x을 사용할 필요는 없습니다. Person 개체의 경우 p 대신 사용하는 경향이 있습니다.

중괄호와 세미콜론을 포함하는 좀 더 복잡한 표현식을 작성해야하는 경우, 모든 일반 명명 규칙이 적용된다고 말하고 싶습니다.

2

당신이 사용하는 명명 표준 (헝가리 표기법)은 Visual Studio와 같은 높은 프로필 도구가없는 시간이 필요하다고 생각합니다. 오늘날 Intellisense와 같은 기술을 사용하면 int에 문자열을 할당하는 것과 같이 입력 할 때 변수를 잘못 처리하는 경우가 대부분 있습니다. 오늘날과 마찬가지로 좋은 코딩 규칙이나 표준의 독점적 인 부분이 아닙니다. 대부분의 사람들은 최근에 파스칼 케이스 또는 낙타 케이스를 따릅니다. 아무도 그것을 사용한다면, 나는 그것이 개인적 선호 때문에 더 있다고 생각합니다.

그렇다면 변수를 코딩하고 이름을 지정하는 방법에 따라 대신 두 번째 방법을 따라야합니다. 다시 말하지만, 이것은 당신의 개인적 취향에 달려 있습니다.

추신 :이 의견은 귀하가 헝가리 식 표기법을 사용하고 있음을 의미하지는 않습니다. :)

10

내 람다는 하나 개의 문자 인수, 매개 변수 이름이 어떻게 될지 대개 첫 글자 사용

  • buttons.Select(b => b.Text);

  • services.Select(s => s.Type);

하지만 가끔은 내가 추가를 사물을 더 분명하게하거나 두 매개 변수 사이를 모호하게하는 몇 글자.

그리고 내가 x의를 사용하여 사물과 y들에 연결된 많은 의미가없는 경우 :

  • values.Aggregate((x, y) => x + y); 모두, 내가 람다에 사용하는 기준은 첫째 곤란 말했다

는, 표현력은 상황을 이해하는 데 도움이되는 경향이 있으므로 (첫 번째 예에서는 b이 버튼을 의미 함이 분명합니다).

0

귀하의 컬렉션이 뭔가 - persons이라면, 당신이 할 때 persons.Where(p => p.Whatever)p이 사람이라는 것이 분명합니다. 람다가 너무 복잡하다면 사용하는 매개 변수가 무엇이든간에 즉각적으로 명확하지 않습니다. 그러면 람다를 전혀 사용하지 않아야합니다.

기타 협약에 대해서는 헝가리어를 사용하여 personName이라는 문자열을 사용하는 것이 무엇입니까? 이름이 문자열이라는 것은 명백합니다. 그리고 변수가 지역 변수라는 사실을 알기 위해 접두어가 필요한 이유는 무엇입니까? 그것의 선언은 필연적으로 같은 방법으로, 그렇게 오래 잊을 수는 없습니다. 가지고 있다면 방법이 너무 길거나 복잡합니다.

변수의 의미가 인 것을 적절히 설명하는 식별자 만 있으면 나머지는 분명합니다.

0

LINQ는 데이터베이스 쿼리뿐만 아니라 Functional Programmers를 작성하는 개발자를위한 것이 아닙니다.

SQL 쿼리에 익숙하지 않다면 걱정할 필요가 없습니다. "Lambda Expression"이라는 아주 좋은 옵션이 있습니다.

여기서 두 옵션에 대한 시나리오를 작은 예제로 설명 할 것입니다. 이 예제에는 정수 배열이 있으며 LINQ의 힘을 사용하여 짝수를 검색하고 있습니다. 당신이 언어에 대한 쿼리의 다른 접근 방법을 사용하지 않으려면

는 여기에서 우리는 다음 람다 식을 자유롭게 사용할 수 있습니다
using System; 
using System.Collections.Generic; 
using System.Text; 
using System.Query; 
using System.Xml.XLinq; 
using System.Data.DLinq; 

namespace LINQConsoleApplication1 
{ 

class Program 
{ 
    static void Main(string[] args) 
    { 
     int[] arrInt = {1,2,3,4,5,6,7,8,9,10}; 

     #region Place to change 

     //Language Integrated Query 

     var aa = from s in arrInt 

       where s % 2 == 0 
       select s; 

     #endregion 

     foreach (var item in aa) 
     { 
      Console.WriteLine("{0}", item); 
     } 

     Console.ReadKey(); 

    } 

} 

} 

이동합니다.

# region 영역을 다음 코드 블록으로 바꾸면 결과가 동일합니다.

 #region Place to change 

     //Lambda Expression 

     var aa = arrInt.Where(s => s % 2 == 0); 

     #endregion