누군가 C #의 코딩 규칙을 설명 할 수 있습니까?


14

최근에 Unity3D로 작업하기 시작했고 주로 C #으로 스크립팅을 시작했습니다. 일반적으로 Java로 프로그래밍 할 때 차이점이 그리 크지는 않지만 여전히 올바른 길을 가고 있는지 확인하기 위해 충돌 과정을 참조 했습니다.

그러나 C #에 대한 가장 큰 호기심은 메소드 이름의 첫 글자를 대문자로한다는 것입니다 (예 : Java : getPrime()C # : GetPrime()aka : Pascal Case?). 이것에 대한 정당한 이유가 있습니까? 충돌 코스 페이지에서 분명히 .Net의 규칙이라는 것을 읽었으며 그것을 바꿀 방법이 없지만 정상적인 (상대적인) 낙타의 경우와는 달리 왜 이런 짓을했는지 궁금합니다. 즉, Java가 사용합니다.

참고 : 언어에는 자체 코딩 규칙이 있다는 것을 이해합니다 (Python 메서드는 모두이 질문에 적용되는 소문자입니다).하지만 왜 그것이 표준으로 공식화되지 않았는지 이해하지 못했습니다.


18
난 정말 당신이 볼 수 있다고 생각하지 않습니다 camelCasePascalCaseunderscore_case그 중 하나가 정상입니다 (심지어 상대적으로 일반)라고하고, 다른 사람 없습니다. @dasblinkenlight가 말했듯이 임의의 선택입니다. C #의 규칙이 비정상적이라고 생각하는 유일한 것은 "일반적으로 Java로 프로그래밍"하는 것이므로 Java에 대해 임의로 선택하는 것에 익숙합니다.
Carson63000

대신 JavaScript를 사용하십시오 .. for Unity3D :)
Lipis

@Lipis 개인 취향 이외의 이유는 무엇입니까? ;-)
ahodder

@AedonEtLIRA 완전히 개인 .. :) 마음 유니티에게 어떤 언어에 상관없이 즐길 수 있습니다 .. 당신이 사용하게 거 야 결코 ..
리 피스

@Lipis 지금까지는 훌륭합니다. 종소리와 휘파람 소리가 나는데 아직 돈을 버리지 않았습니다. 그러나 C # (c / c ++) 및 java의 구조적 스타일을 선호합니다.
ahodder

답변:


27

명명 규칙은 게시자의 임의 선택을 나타냅니다. 첫 번째 문자가 문자 / 밑줄이고 다른 모든 문자가 문자, 숫자 또는 밑줄 인 한 C #은 불평하다. 그러나 .NET과 함께 제공되는 클래스 라이브러리는 Microsoft가 내부적으로 채택한 규칙을 따릅니다. Microsoft는 또한 이러한 지침발표하여 다른 사람들이 자신의 클래스 라이브러리에도 적용 할 수 있습니다. Microsoft의 지침을 따르거나 무시하는 것이 선택이지만, 동일한 명명 지침을 따르면 다른 사람이 코드를 익히는 것이 더 빠를 수 있습니다.


그러나 일반적으로 컨벤션 뒤에는 몇 가지 근거가 있으며, "이에 대한 충분한 이유가 있습니까?"를 읽을 때 나는 그것을 왜 아닌지에 대한 질문으로 이해합니다.
greenoldman

공개 / 내부 / 정적 멤버 및 모든 방법에 대한 파스칼. 개인용 낙타. 스캔하는 동안 토큰의 범위를 구별하는 데 도움이됩니다. this키워드는 동일한 작업을 수행합니다. 스타일 선택은 외계인처럼 보일지라도 실용적입니다.
Gusdor

23

아마도 파스칼 / 델파이의 영향 때문일 것입니다. C #과 Delphi를 만든 사람은 결국 같은 사람이었습니다 (Anders Hejlsberg).

델파이 코딩 규약은이 측면에서 C #과 동일하다. http://www.econos.de/delphi/cs.html#ObjectPascal_Procedures 또는 http://wiki.delphi-jedi.org/index.php?title=Style_Guide#Method_Naming- 우연의 일치를 참조 하십시오 .


4
이 특정 +1이 C #에 대해 실제로 선택된 이유를 제공하기 때문에 +1입니다.
막시무스 미니 무스

4

다른 답변 외에도 메소드에 대한 낙타 사례는 이름을 지정하기 위해 낙타 케이스를 사용하는 개인 멤버, 매개 변수 및 메소드 변수의 이름과 충돌 할 수 있음을 의미합니다. Java (및 C # 1.0)에서는 델리게이트 사용이 어색하고 드물기 때문에 이것은 흔하지 않습니다. 현대 C #에서는 정확히 일반적 이지 않지만 전례가 없습니다.


1
밑줄은 C # 개인 필드 ( 예 : blogs.msdn.com/b/brada/archive/2005/01/26/361363.aspx 참조)에서 사용해서는 안되지만 논란의 여지가 있으며 종종 발견됩니다.
Jens

1
언어 구조를 구별하기 위해 케이스에 의존하는 것은 언어의 허용 여부에 관계없이 실제로 나쁜 생각입니다.
gbjbaanb

4
@Telastyn의 진술은 꽤 충격적입니다. 대부분의 .NET 클래스 라이브러리는 해당 규칙을 사용합니다.
MattDavey

1
@ 덩크 어떻게 갑자기 컨벤션입니까? 나는 단지 의견을 전달했다, 나는 :)이 문제 방법 중 하나에 대하여 의견이 없습니다
MattDavey

2
@MarjanVenema : 무슨 말을하는지 확실하지 않지만 C #은 대소 문자를 구분하며 비슷한 사례를 가진 멤버 사이에서 충돌이 발생할 수 있습니다. 라이브러리 수준에서 작업하는 VB.NET과 같은 대소 문자를 구분하지 않는 언어가 있으면 재미 있고 흥미로워집니다.
Wyatt Barnett
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.