관리 코드에 대한 확장 디자인 지침 규칙 규칙 집합
Microsoft 확장 디자인 지침 규칙이라는 규칙 집합은 기본 디자인 지침 규칙을 확장하여 보고되는 유용성 및 유지 관리 문제의 수를 최대화하며,명명 지침에 주안점을 둡니다.프로젝트에 라이브러리 코드가 있거나 유지 관리하기 쉬운 코드를 작성하는 데 가장 높은 표준을 적용하려는 경우 이 규칙 집합을 포함하는 것이 좋습니다.
확장 디자인 지침 규칙에는 Microsoft 기본 디자인 지침 규칙이 모두 포함됩니다.또한 기본 디자인 지침 규칙에는 Microsoft 최소 권장 규칙이 모두 포함됩니다.자세한 내용은 관리 코드에 대한 기본 디자인 지침 규칙 규칙 집합 및 관리 코드에 대한 관리 권장 규칙 규칙 집합을 참조하십시오.
다음 표에서는 Microsoft 확장 디자인 지침 규칙 집합의 모든 규칙에 대해 설명합니다.
규칙 |
설명 |
---|---|
삭제 가능한 필드가 있는 형식은 삭제 가능 해야 합니다. |
|
이벤트 처리기를 제대로 선언 하십시오. |
|
AssemblyVersionAttribute 어셈블리 표시 |
|
인터페이스 메서드는 자식 형식에서 호출할 수 있어야 합니다. |
|
네이티브 리소스가 있는 형식은 삭제 가능 해야 합니다. |
|
P/Invoke를 NativeMethods 클래스로 이동 |
|
기본 클래스 메서드를 숨기지 마십시오 |
|
Idisposable을 올바르게 구현 |
|
예기치 않은 위치에서 예외를 발생 시 키 지 마십시오 |
|
중복 된 액셀러레이터를 방지 합니다. |
|
P/Invoke 진입점이 존재 해야 |
|
P/Invoke 볼 수 없습니다. |
|
자동 레이아웃 형식은 COM에서 볼 수 없습니다. |
|
바로 P/Invoke 후 Getlasterror를 호출 합니다. |
|
COM 노출 형식의 기본 형식은 COM 노출 이어야 합니다. |
|
COM 등록 메서드는 일치 해야 합니다. |
|
P/Invoke를 제대로 선언 하십시오. |
|
빈 종료자를 제거 합니다. |
|
값 형식 필드는 이식 가능 해야 합니다. |
|
P/Invoke 선언은 이식 가능 해야 합니다. |
|
약한 id 가진 개체를 잠그지 않음 |
|
SQL 쿼리 보안 문제에 대 한 검토 |
|
P/Invoke 문자열 인수에 대해 마샬링을 지정합니다 |
|
값 형식에서 선언적 보안을 검토 합니다. |
|
포인터가 볼 수 없습니다. |
|
보안된 형식은 필드를 노출 하면 |
|
메서드 보안은 형식의 상위 집합 이어야 합니다. |
|
APTCA 메서드는 APTCA 메서드를 호출 하면 |
|
APTCA 형식은 APTCA 기본 형식을 확장 합니다. |
|
링크 요청이 있는 메서드를 간접적으로 노출 하지 마십시오. |
|
재정의 링크 요청 기반으로 동일 해야 합니다. |
|
랩 공격에 취약 한 finally 절 외부에서 보십시오. |
|
형식 링크 요청 상속 요청이 필요합니다. |
|
중요 한 보안 형식을 형식 등가에 참가할 수 없습니다. |
|
기본 생성자가 기본 형식의 기본 생성자에는 적어도 중요 해야 |
|
대리자 메서드를 일관성 있게 투명 하 게 바인딩해야 합니다. |
|
메서드가 기본 메서드를 재정의 하는 경우 일관 된 투명도 유지 합니다. |
|
투명 한 방법을 확인할 수 있는 IL만 있어야 합니다. |
|
투명 한 방법을 SuppressUnmanagedCodeSecurity 특성을 갖는 메서드를 호출 해야 |
|
중요 한 항목을 보안 투명 코드를 참조 하지 않아야 |
|
Linkdemands가 투명 한 방법 만족 해야 하지 |
|
형식은 해당 기본 형식 및 인터페이스는 적어도 중요 해야 합니다. |
|
보안 투명 메서드 수 어설션 |
|
투명 메서드의 네이티브 코드를 호출 해서는 안 |
|
스택 정보를 유지 하도록 다시 throw 하십시오. |
|
개체는 여러 번 삭제 하지 마십시오. |
|
값 형식의 정적 필드를 인라인으로 초기화 |
|
서비스 되는 구성 요소를 WebMethod 표시 하지 않음 |
|
삭제 가능한 필드는 삭제 해야 합니다. |
|
생성자에 재정의 가능한 메서드를 호출 하지 마십시오. |
|
삭제 가능한 형식은 종료자를 선언 해야 합니다. |
|
종료자는 기본 클래스 종료자 호출 해야 |
|
Serialization 생성자를 구현 합니다. |
|
Valuetype.equals를 재정의에 같음 연산자를 오버 로드 합니다. |
|
표시 Windows Forms 진입점을 STAThread |
|
Serializable 이외의 모든 필드를 표시 합니다. |
|
ISerializable 형식에 기본 클래스 메서드를 호출 합니다. |
|
Serializableattribute로 ISerializable 표시 형식 |
|
Serialization 메서드를 올바르게 구현 |
|
Iserializable을 올바르게 구현 |
|
형식 메서드에 올바른 인수를 제공 합니다. |
|
Nan에 대해 정확 하 게 테스트 |
|
제네릭 형식에서 정적 멤버를 선언 하지 마십시오 |
|
제네릭 목록을 노출 하지 마십시오 |
|
제네릭 이벤트 처리기 인스턴스를 사용 합니다. |
|
제네릭 메서드의 형식 매개 변수를 제공 해야 |
|
과도 한 제네릭 형식 매개 변수를 방지 합니다. |
|
멤버 시그니처에 제네릭 형식을 중첩 하지 마십시오. |
|
Generics를 사용 하 여 해당 되는 경우 |
|
열거형 값이 0 이면 있어야 합니다. |
|
컬렉션은 제네릭 인터페이스를 구현 해야 |
|
기본 형식을 매개 변수로 전달 하는 것이 좋습니다. |
|
추상 형식 생성자를 사용 해야 합니다. |
|
더하기 및 빼기를 오버 로드할 때 오버 로드 연산자 같음 |
|
마크 어셈블리에 CLSCompliantAttribute |
|
ComVisibleAttribute 어셈블리 표시 |
|
AttributeUsageAttribute 사용 하 여 표시 특성 |
|
특성 인수의 접근자를 정의 합니다. |
|
인덱서에 다차원 이어야 합니다. |
|
해당 되는 경우 속성을 사용 합니다. |
|
반복 인수를 매개 변수 배열로 바꿉니다 |
|
기본 매개 변수를 사용할 수 없습니다. |
|
열거형을 Flagsattribute로 표시 |
|
열거형 저장소는 i n t 32 여야 합니다. |
|
이벤트를 사용 하 여 해당 되는 경우 |
|
일반 예외 형식을 catch 하지 마십시오. |
|
표준 예외 생성자를 구현 합니다. |
|
중첩된 형식은 노출 하지 마십시오. |
|
ICollection 구현 멤버를 강력 하 게 형식화 된 |
|
비교 가능한 형식에 메서드를 재정의 합니다. |
|
열거자는 강력한 형식 이어야 합니다. |
|
목록은 강력한 형식 |
|
ObsoleteAttribute 메시지를 제공 합니다. |
|
인덱서에 정수 또는 문자열 인수를 사용 합니다. |
|
쓰기 전용 속성 수 없습니다. |
|
참조 형식에 같음 연산자를 오버 로드 하지 않습니다 |
|
보호 된 멤버를 sealed 형식으로 선언 하지 마십시오. |
|
Sealed 형식에 가상 멤버를 선언 하지 마십시오. |
|
네임 스페이스에 형식을 선언 합니다. |
|
표시 되는 인스턴스 필드를 선언 하지 마십시오. |
|
정적 소유자 형식은 sealed 여야 합니다. |
|
정적 소유자 형식은 생성자를 사용 해야 합니다. |
|
URI 매개 변수는 문자열이 면 안 됩니다 없습니다. |
|
URI 반환 값은 문자열이 면 해야 합니다. |
|
URI 속성은 문자열이 면 해야 합니다. |
|
문자열 URI 오버 로드는 System.Uri 오버 로드 호출 |
|
형식은 특정 기본 형식을 확장 해서는 안 |
|
멤버는 구체적인 특정 형식을 노출 하면 안 |
|
예외는 공용 이어야 합니다. |
|
변수 이름은 필드 이름과 달라 야 합니다. |
|
지나치게 복잡 하 게를 하지 마십시오. |
|
식별자 대/소문자가 다를 해야 |
|
식별자는 키워드 달라 야 합니다. |
|
사용 되지 않는 매개 변수를 검토 합니다. |
|
사용 되지 않는 로컬 항목을 제거 |
|
불필요 한 로컬 항목을 방지 |
|
참조 형식 정적 필드를 인라인으로 초기화 |
|
호출 되지 않는 전용 코드를 방지 합니다. |
|
인스턴스화되지 않은 내부 클래스를 방지 합니다. |
|
봉인 되지 않은 특성을 방지 |
|
가변된 배열은 다차원 보다 선호 |
|
우선 적용과 같고 값 형식에 같음 연산자 |
|
속성은 배열을 반환 해야 합니다. |
|
문자열 길이 사용 하 여 문자열이 비었는지 테스트 |
|
정적 멤버로 표시 |
|
사용 되지 않는 전용 필드를 방지 합니다. |
|
예약 된 예외 형식을 발생 시 키 지 마십시오 |
|
Win32 API의 관리 되는 동등 항목을 사용 |
|
인수 예외를 올바르게 인스턴스화 하십시오. |
|
비상수 필드는 노출 되 면 안 |
|
열거형을 Flagsattribute로 표시 하지 않음 |
|
예외 절에서 예외를 발생 시 키 지 마십시오 |
|
종료자를 보호 합니다. |
|
상속 된 멤버 노출 수준을 낮추지 마십시오. |
|
두 개 이상 반환 형식 멤버가 달라 야 |
|
재정의 같음 연산자를 오버 로드할 때 equals |
|
연산자 오버 로드에 명명 된 대체 항목이 있습니다. |
|
연산자는 대칭 오버 로드가 있어야 합니다. |
|
컬렉션 속성 읽기 전용 |
|
가변 인수를 사용 하는 매개 변수 |
|
문자열 대신 System.Uri 개체를 전달 합니다. |
|
선택적 필드에 대 한 deserialization을 수행 하는 방법을 제공합니다 |
|
네임 스페이스를 몇 종류를 방지 |
|
Out 매개 변수를 방지 합니다. |
|
빈 인터페이스를 방지 합니다. |
|
참조로 형식을 전달 하지 않습니다 |
|
Public 메서드의 인수의 유효성을 검사합니다 |
|
과도 한 상속 사용 하지 않기 |
|
잘못 된 필드 이름을 검토 합니다. |
|
유지 관리할 수 없는 코드에서 피하기 |
|
과도 한 클래스 결합을 하지 마십시오. |
|
Enum 값 '예약' 이름을 지정 하지 않는 |
|
리소스 문자열 복합 단어를 정확 하 게 표기 해야 |
|
복합 단어를 정확 하 게 표기 해야 |
|
리소스 문자열에는 정확한 철자를 사용 해야 합니다. |
|
식별자에는 정확한 철자를 사용 해야 합니다. |
|
식별자 밑줄을 사용할 수 없습니다. |
|
식별자를 정확 하 게 표기 해야 |
|
식별자에 올바른 접미사가 사용 해야 합니다. |
|
식별자에 잘못 된 접미사가 사용 해야. |
|
열거형 값에 형식 이름 접두사로 |
|
이벤트 이전 또는 이후에 접두사 없어야 |
|
플래그 열거형은 복수형 이름을 사용 해야 합니다. |
|
식별자에 올바른 접두사를 사용 해야 합니다. |
|
FlagsAttribute 열거형만 복수형 이름을 사용 해야 합니다. |
|
매개 변수 이름은 멤버 이름과 달라 야 합니다. |
|
식별자에 형식 이름이 없어야 합니다. |
|
속성 이름은 get 메서드가 달라 야 합니다. |
|
잘못 된 접두사 식별자를 사용 합니다. |
|
형식 이름은 네임 스페이스와 일치 해야 |
|
매개 변수 이름은 기본 선언과 일치 해야 합니다. |
|
기본 설정된 용어를 사용 합니다. |
|
리터럴의 철자가 맞아야 합니다. |