문제

나는 Pascal 케이스(상단 Camel 케이스)와 Pascal 케이스(상단 Camel 케이스)에 대해 동료들과 논쟁을 벌였습니다.낮추다 카멜케이싱.SQL 데이터베이스의 테이블 이름부터 C# 코드의 속성 이름 지정에 이르기까지 모든 항목에 대해 낮은 카멜 케이스를 사용하는 데 사용되지만 저는 Pascal 케이스를 더 좋아하고 변수는 낮은 카멜 케이스, 속성은 Pascal 케이스를 선호합니다.

string firstName;
public string FirstName {
...
}

그러나 그들은 이것에 익숙합니다:

string _firstname;
public string firstName {
...
}

나는 그들의 "표준"을 따라가려고 노력하여 코드가 동일해 보이지만 마음에 들지 않습니다.

나는 적어도 .NET 프레임워크가 이 규칙을 사용한다는 것을 보았고 이것이 내 코드를 유지하려고 하는 방법입니다. 예를 들면 다음과 같습니다.

System.Console.WriteLine("string")

무엇을 사용/선호하며 그 이유는 무엇입니까?혹시 다른 분이 이런 질문을 했다면 죄송합니다. 검색해봐도 아무 것도 나오지 않았습니다.

업데이트:속성이 아닌 메소드 예제를 제공했지만 동일합니다.첫 번째 단락에서 언급했듯이 동료들은 모든 것(변수, 메서드, 테이블 이름 등)에 대해 파스칼 규칙을 사용합니다.

도움이 되었습니까?

해결책

프레임 워크가 사용하는 모범 사례이므로 프레임 워크가 사용하는 것을 사용합니다. 그러나 회사의 코드가 일관되게 그들의 스타일을 사용하면 익숙해지는 것이 훨씬 좋습니다. 모든 개발자가 자신의 표준을 가지고 있다면 표준이 전혀 없습니다.

다른 팁

공무원에 대한 링크 설계 지침 도움이 될 수 있습니다. 구체적으로, 섹션을 읽으십시오 대문자 스타일.

그랜드 사물의 계획에서, 파스칼 대 낙타는 그다지 중요하지 않으며, 이름의 경우를 변경하기 위해 기존 코드 기반을 돌아가도록 설득 할 가능성이 없습니다. 정말로 중요한 것은 주어진 코드 기반 내에서 일관성을 원한다는 것입니다.

당신이 헝가리어를 사용하지 않는 한 나는 행복합니다.

Microsoft의 새로운 도구를 살펴 봐야합니다. 스타일 콥 C# 소스 코드를 확인하려면 또한 주시하십시오 fxcop 컴파일 된 .NET 어셈블리를 확인합니다. FXCOP는 레이아웃이 아닌 코드가하는 일에 대한 세부 사항에 더 중점을 두지 만 공개적으로 보이는 이름과 관련된 이름 지정 규칙이 있습니다.

StyleCop은 코딩 표준을 정의하며, 현재 Microsoft에 의해 업계 표준으로 홍보되고 있습니다. 표준에 대한 C# 소스 코드를 확인합니다. Stylecop은 Pascalcase 스타일을 준수합니다.

사람들을 스타일 콥 (또는 그 문제에 대한 다른 표준)에 데려 오는 것은 어려울 수 있으며, 장애물이며 Stylecop은 매우 철저합니다. 그러나 코드는 통일 표준이어야하며 개인 표준은 아무것도 아닌 것보다 낫고 회사 표준은 개인보다 낫고 산업 표준이 가장 좋습니다.

AA 프로젝트가 시작될 때 사람들을 설득하는 것이 훨씬 쉽습니다. 팀이 형성되고 있으며 기존 코드가 없습니다. 또한 코드가 표준을 충족하지 않으면 도구 (FXCOP, StyleCop)를 제자리에두기 위해 빌드를 중단 할 수 있습니다.

언어 및 프레임 워크의 표준을 사용해야합니다. SQL 코드는 SQL 표준을 사용해야하며 C# 코드는 C# 표준을 사용해야합니다.

공개 인터페이스의 경우 MS .NET Framework 설계 지침을 사용해야합니다. "자본화 규칙".

노출되지 않은 회원의 경우 귀하와 귀하의 동료가 동의 할 수있는 것은 무엇이든.

저 (그리고 우리 팀)는 클래스 이름에 대한 초기 수도를 예약하는 것을 선호합니다.

왜요? Java 표준은 전파되고 있다고 생각합니다.

.NET Framework Developer 's Guide에서대문자 표기 규칙, 대소문자 구분:

자본화 가이드 라인은 식별자를보다 쉽게 ​​읽고 인식 할 수 있도록하기 위해서만 존재합니다.케이싱은 라이브러리 요소 간의 이름 충돌을 피하는 수단으로 사용할 수 없습니다.

모든 프로그래밍 언어가 사례에 민감하다고 가정하지 마십시오.그들은 아닙니다.이름은 경우에만 다를 수 없습니다.

방금 찾았습니다 .NET의 코딩 표준.

파스칼 케이싱은 특성에 사용해야합니다. 변형 이름이가는 한, 일부 사람들은 _를 사용하고 일부는 poeple을 사용하고 일부 사람들은 평범한 오래된 낙타 케이스를 사용합니다. 나는 당신이 여기서 일관되게하는 한 중요하지 않다고 생각합니다.

코딩 표준이 당신의 직장에 대해 말하는 것을 참아야한다고 생각하지만, 당신은 개인적으로 그것을 싫어합니다. 어쩌면 미래에 언젠가는 자신의 코딩 표준을 지시 할 수있을 것입니다.

개인적으로 나는 데이터베이스를 좋아합니다. "ish_name", "tank_id"등의 이름을 테이블 및 필드에 사용하는 반면, 데이터베이스 모델과 동등한 코드는 "FishName"및 "TankId"입니다. 나는 또한 "fooname"을 사용할 수있을 때 "_fooname"naming을 싫어합니다. 그러나 나는 이것이 주관적이라는 것을 반복해야하며, 다른 사람들은 이전의 경험과 교육으로 인해 선과 나쁜 점에 대한 다른 아이디어를 가질 것입니다.

실제로, 이것에 대한 "표준"협약은 없습니다. 어딘가에 Microsoft 편집 가이드 라인이 있으며 다른 이름 지정 컨벤션 가이드 라인과 마찬가지로 반드시 반박하는 또 다른 하나가 있지만 여기에 "표준 C# 케이싱 컨벤션"으로 이해하게되었습니다.

  1. 유형 이름 (클래스, 열거), 상수 및 속성의 perwordcaps.
  2. 정말 긴 로컬 변수 및 보호/개인 변수를위한 Camelcase
  3. ALL_CAPS 없음 항상 (음, 컴파일러에서만 정의하지만 코드에서는 그렇지 않습니다)
  4. 시스템 클래스 중 일부는 개인 변수에 밑줄 이름 (_name)을 사용하는 것 같습니다. 그러나 대부분의 사람들이 C ++에서 직접 나왔기 때문에 원래 작가의 배경에서 비롯된 것 같습니다. 또한 VB.NET은 CASE에 민감하지 않으므로 클래스를 연장 한 경우 보호 변수에 액세스 할 수 없습니다.

실제로, fxcop 해당 규칙 중 일부를 시행하지만 (AFAIK) 로컬 변수에 사용하는 철자가 무시됩니다.

나는 코딩 규칙을 좋아한다 Aardvark'd 프로젝트 사양

당신이 게시 한 .NET의 예제는 함수였습니다. 메소드/기능에 채택 된 "표준"은 캡핑 된 낙타 케이스 (또는 파스칼이라고 부르려면)입니다.

나는 내가 할 수있는 낙타 케이스를 고수한다. 변수와 메소드의 차이점을 쉽게 알 수 있습니다.

또한, 저는 로컬 클래스 변수 앞에서 밑줄을 밟는 팬입니다. 예 : _localVar.

프로그래밍을 종료하는 날 - Microsoft가 C#의 Camelcase를 표준으로 만들 때. 내 성장한 논리에는 파스칼 케이스에 대한 여러 가지 이유가 있기 때문에 이름 만 신경 쓰거나 글을 쉽게 쓸 수있는 Kid의 논리와 달리 많은 이유가 있습니다.

그리고 BTW : CAMELCASING은 주로 C ++ STD 라이브러리 스타일에서 나옵니다. 그러나 C# -는 완전히 새로운 언어입니다 - 깨끗하고 아름다움, 새로운 규칙이 있습니다. OldFags는 Java 또는 C ++에 대한 프로그래밍을해야하며, 신세대 사람들은 C#에 프로그래밍해야하며 절대 상호 작용해서는 안됩니다.

이 예를 고려하십시오. 1) Pascalcase : list.capacity.toString (); 2) Camelcase : list.capacity.tostring ();

(1)에서 우리는 장기적으로 낙타 사건이 있습니다 !!! ListCapacityToString을 의미합니다. (2)에서 우리는 헛소리 : ListCapacityToString을 가지고 있습니다.

그게 내가 읽은 방법입니다. 그리고 왜 Camelcase가 Itselt에게 비논리적인가. 나는 Pascalcase를 위해 죽일 수 있고, 절대로 만지지 않을 수 있습니다.

Microsoft- 영원히 또는 Pascalcase를 사용할 때까지.

당신이 선호하는 것이 중요하고, 팀의 표준을 주로 준수하는 것이 중요합니다. 개인 코드에서는 원하지만 원하는 대상이 되든간에 이름을 지정했는지 여부에 관계없이 완제품에 영향을 미치지 않습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top