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


14

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

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

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


18
난 정말 당신이 볼 수 있다고 생각하지 않습니다 camelCase와 PascalCase및 underscore_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.