반응형
- [Item6] nameof 연산자를 적극 확용하라.
- 항상 로컬이름을 문자열로 반환하는 역할을 한다.
- 심볼의 이름을 평가하며 타입, 변수, 인터페이스, 네임스페이스 에 대해 사용할 수 있다.
- 심볼의 이름을 바꾸거나 수정할 때도 손쉽게 반영 가능하다.
- 항상 로컬 이름을 문자열로 반환한다.
- Ex) 완전 정규화된 이름이 System.Int.MaxValue 이더라도 항상 로컬이름 MaxValue를 반환
- [Item7] delegate를 이용하여 콜백을 표현하라.
- delegate를 이용하면 타입 안정적인 콜백을 정의할 수 있다.
- .Net Framework 라이브러리는 Predicate<T>, Action<T>, Func<T>와 같은 형태로 자주 사용되는 delegate를 정의해두고 있다.
-
더보기Predicate<T> : 조건을 검사하여 bool값을 반환하는 델리게이트
Func<> : 여러 개의 매개변수를 받아 특정 타입의 단일 결과값을 반환하는 델리게이트
Func<T, bool> = Predicate<T>
Action<> : 여러 개의 매개변수를 받지만 결과값의 타입이 void인 델리게이트
-
- [Item8] 이벤트 호출시에는 null조건 연산자를 사용하라
- Ex) Action?.Invoke();
- [Item9] 박싱과 언박싱을 최소화 하라
- 둘다 성능에 좋지 않은 영향을 미친다.
- 수행하는 과정에서 임시객체가 생성되는데 이로 인해 버그가 발생 할 수 도 있다.
- 박싱 : 값(Value) 타입의 스택구조 객체를 타입이 정해져 있지 않은 임의의 참조(reference) 타입의 힙구조 내부에 포함시키는 방법
- 언박싱 : 박싱되어 있는 참조타입의 객체로부터 값타입 객체의 복사본을 가져오는 방법
- [Item10] 베이스 클래스가 업그레이드 된 경우에만 new 한정자를 사용하라.
- 베이스 클래스에서 이미 사용중인 메서드를 재정의하여 완전 새로운 메서드를 만들때 new 사용
참거 - Effective C# <강력한 C# 코드를 구현하는 50가지 전략과 기법, 이펙티브>, 빌 와그너, 김명신, 한빛미디어
반응형
'C# > Effective C#' 카테고리의 다른 글
[Effective C#] Item16 생성자 내에서는 절대로 가상함수를 호출하지 마라. (0) | 2022.08.30 |
---|---|
[Effective C#] Item15 불필요한 객체를 만들지 마라 (0) | 2022.07.13 |
[Effective C#] Item14 초기화 코드가 중복되는것을최소화 하라. (0) | 2022.07.08 |
[Effective c#] Item11 ~ Item13 (0) | 2022.07.08 |
[Effective C#] Item1 ~ Item5 (0) | 2022.07.08 |