프로퍼티 - c# 필드 속성 차이




클래스의 항목 순서:필드, 속성, 생성자, 메서드 (10)

가시성 또는 항목 유형 (필드, 속성, 메서드 등)별로 그룹화하는 대신 기능별로 그룹화하는 방법은 무엇입니까?

클래스 구조 측면에서 항목 순서에 대한 공식적인 C # 가이드 라인이 있습니까?

그것은 가느냐?

  • Public Fields
  • 비공개 필드
  • 속성
  • 생성자
  • 행동 양식
    ?

항목 순서에 대해 쉽고 빠른 규칙이 있다면 궁금합니다. 나는 온통 일종의 사람이다. 나는 어디에서나 그것을 할 수 있도록 특정 표준을 고수하고 싶다.

진짜 문제는 좀 더 복잡한 속성이 메서드와 비슷한 것으로 끝나고 생성자 전에 맨 위에 위치하지 않는다는 것입니다.

어떤 팁 / 제안?


가장 가까운 곳은 Brad Abrams의 "설계 지침, 관리 코드 및 .NET Framework"( http://blogs.msdn.com/brada/articles/361363.aspx )입니다.

여기에는 많은 표준들이 설명되어 있습니다. 관련 섹션은 2.8입니다.


나는 그것을 가능한 한 간단하게 유지한다 (나를 위해 최소한)

열거 형
선언
생성자
재정의
행동 양식
속성
이벤트 핸들러


나는 이것이 오래되었음을 알지만 내 명령은 다음과 같다.

공개, 보호, 사적인, 내부의, 추상적 인 순서로

  • 상수
  • 정적 변수
  • 전지
  • 이벤트
  • 생성자
  • 행동 양식
  • 속성
  • 대표자들

나는 또한 이와 같은 속성들을 (속기 접근법 대신에) 작성하는 것을 좋아한다.

// Some where in the fields section
private int someVariable;

// I also refrain from
// declaring variables outside of the constructor

// and some where in the properties section I do
public int SomeVariable
{
    get { return someVariable; }
    set { someVariable = value; }
}

보통 다음 패턴을 따르려고합니다.

  • 정적 멤버 (일반적으로 다른 컨텍스트가 있어야하며 스레드로부터 안전해야 함 등)
  • 인스턴스 멤버

각 파트 (정적 및 인스턴스)는 다음과 같은 멤버 유형으로 구성됩니다.

  • 연산자 (항상 정적 임)
  • 필드 (생성자 전에 초기화 됨)
  • 생성자
  • 소멸자 ( 생성자를 따르는 전통 )
  • 속성들
  • 행동 양식
  • 사건

그런 다음 멤버를 표시 여부별로 정렬합니다 (덜 눈에 띄게 표시).

  • 은밀한
  • 내부의
  • 내부 보호 된
  • 보호 된
  • 공공의

순서는 교리가 아닙니다. 간단한 클래스는 읽기 쉽지만,보다 복잡한 클래스는 컨텍스트 별 그룹화가 필요합니다.


스타일 캅에서

개인 필드, 공용 필드, 생성자, 속성, 공용 메서드, 개인 메서드

StyleCop은 MS 빌드 프로세스의 일부이므로 사실상의 표준으로 볼 수 있습니다


어떤 식 으로든 그것을 강요하는 언어에는 아무것도 없다. 필자는 공개, 보호, 비공개로 항목을 그룹화하고 속성, 메서드 또는 기타 여부에 관계없이 #regions를 사용하여 관련 항목을 기능적으로 그룹화하는 경향이 있습니다. 구성 메소드 (실제 ctors 또는 정적 팩토리 함수)는 클라이언트가 알아야 할 첫 번째 것이므로 정상적으로 정상입니다.


언어 나 산업 표준에 대해서는 잘 모릅니다. 그러나 각 섹션을 #region으로 싸서이 순서대로 일을하는 경향이 있습니다.

문 사용

네임 스페이스

수업

사립 멤버

공공 재산

생성자

공용 메소드

비공개 방법


필자가 보았던 유일한 코딩 지침은 필드를 클래스 정의의 맨 위에 놓는 것입니다.

나는 다음에 생성자를 넣는 경향이있다.

내 일반적인 의견은 파일 당 하나의 클래스에 집중해야한다는 것이고 클래스가 속성 대 메서드의 구성이 큰 관심사 일만큼 크다면 클래스가 얼마나 클지 어쨌든 리팩토링해야할까요? 그것은 여러 우려를 나타 냅니까?


StyleCop Rules Documentation 에 따르면 주문은 다음과 같습니다.

클래스 내에서 구조체 또는 인터페이스 : (SA1201 및 SA1203)

  • 상수 필드
  • 전지
  • 생성자
  • 종결 자 (소멸자)
  • 대표자들
  • 이벤트
  • 열거 형
  • 인터페이스
  • 속성
  • 인덱서
  • 행동 양식
  • 구조물
  • 수업

각 그룹 내에서 액세스 순서 : (SA1202)

  • 공공의
  • 내부의
  • 보호 된 내부
  • 보호 된
  • 은밀한

각 액세스 그룹 내에서 정적, 비 정적 순서로 정렬하십시오 : (SA1204)

  • 공전
  • 비 정적

각 정적 / 비 정적 필드 그룹 내에서 읽기 전용으로 정렬 한 다음 비 읽기 전용으로 정렬합니다 (SA1214 및 SA1215)

  • 읽기 전용
  • 비 읽기 전용

비공개 목록은 130 줄이므로 여기에 게시하지 않겠습니다. 전개 된 메소드 부분은 다음과 같습니다.

  • public static methods
  • 공용 메소드
  • 내부 정적 메소드
  • 내부 방법
  • 내부 정적 메소드 보호
  • 보호 된 내부 메소드
  • 보호 된 정적 메서드
  • 보호 된 메서드
  • 개인 정적 메서드
  • 개인적인 방법

문서는 규정 된 순서가 적절하지 않은 경우, 즉 여러 인터페이스가 구현되고 인터페이스 메소드와 속성이 함께 그룹화되어야한다고 말한 다음 부분 클래스를 사용하여 관련 메소드와 속성을 함께 그룹화합니다.





coding-style