- 데이터 멤버 대신에 항상 프로퍼티를 사용하라
- const 보다는 readonly가 좋다
- cast 보다는 is나 as가 좋다
- #if 대신 Conditional Attribute를 사용하라
- 항상 ToString()을 작성하라
- value 타입과 reference 타입을 구분하라
- immutable atomic value 타입이 더 좋다
- value 타입을 사용할 때 0이라는 값이 의미를 가질 수 있도록 하라
- ReferenceEquals(), static Equals(), instance Equals(), operator==의 상호 연관성을 이해하라
- GetHashCode()의 함정에 유의하라
- foreach 루프가 더 좋다
- 할당문보다는 변수 초기화를 사용하는 편이 더 좋다
- static 클래스 멤버는 static 생성자를 사용하여 초기화하라
- 연쇄적인 생성자 호출을 이용하라
- 자원해제를 위해서 using과 try/finally를 이용하라
- Grabate를 최소화하라
- boxing과 unboxing을 최소화하라
- 표준 Dispose 패턴을 구현하라
- 상속보다는 interface를 정의하고 구현하는 것이 좋다
- interface의 구현과 virtual 메서드의 overriding을 구분하라
- delegate를 이용하여 콜백을 표현하라
- 이벤트를 이용하여 외부로 노출할 인터페이스를 정의하라
- 클래스 내부 객체에 대한 reference 반환을 피하라
- 명령적 프로그래밍보다 선언적 프로그래밍이 더 좋다
- serializable 타입이 더 좋다
- IComparable과 IComparer를 이용하여 순차관계를 구현하라
- ICloneable의 구현을 피하라
- 형변환 연산자의 구현을 피하라
- 가변 클래스의 변경이 영향을 줄 경우에만 new 한정자를 사용하라
- CLS를 준수하는 어셈블리가 더 좋다
- 작고 단순한 메서드가 더 좋다
- 작고 응집도가 높은 어셈블리가 더 좋다
- 타입의 가시성을 제한하라
- 웹 API는 큰 단위로 작성하라
- 이벤트 핸들러보다 override를 사용하는 편이 낫다
- 닷넷 런타임의 진단기능을 활용하라
- 표준 환경설정 메터니즘을 이용하라
- 데이터 바인딩을 사용하라
- 닷넷의 유효성 검증 기능을 사용하라
- 적정한 collection 개체를 이용하라
- 새로운 구조체보다는 DataSet이 좋다
- reflection을 단순화하기 위해서 attribute를 사용하라
- reflection을 과도하게 사용하지 말라
- 애플리케이션에 특화된 예외 클래스를 완벽하게 작성하라
- 견고한 예외 보증 기법이 더 좋다
- Interop를 최소화하라
- 안전한 코드가 더 좋다
- 활용할 수 있는 다양한 툴과 리소스에 대해서 알아두라
- C# 2.0의 주요 특징
- ECMA 표준을 익혀라