C# 프로그래밍 기법
이 포스팅은 Effective C# 을 읽고 내용을 정리하기 위한 스터디용 포스팅입니다. 실제 내용과 다를 수 있으니 본 책을 직접 구매하셔서 읽는 것을 추천합니다.
(update 20.04.15)
- 지역 변수 선언시 var을 사용할 것
- 길어진 타입명을 정확히 기술하는 것보다,
var
을 사용하고 변수와 메서드를 작명할 때 타입을 유추할 수 있도록 하는 것이 더욱 좋을 수 있다. - 올바르게 타입명을 지정하지 않아 형변환이 발생할 경우 기존에 있던 기능을 사용할 수 없게 된다. 이로인해 성능차가 발생할 수 있다.
- 단, 내장 숫자 타입(
int
,float
,double
등)을 사용하거나 타입을 유추하기 모호한 상황에서는 타입명을 그대로 쓰는 것이 좋다.
- 길어진 타입명을 정확히 기술하는 것보다,
- const 보다는 readonly를 사용할 것
- 성능상으로는 컴파일타임 상수
const
가 약간 더 빠르지만 런타임 상수readonly
가 유연성이 좋다. const
는 컴파일타임에 상수를 리터럴로 대체해야하기 때문에 내장 자료형(숫자,enum
, 문자열,null
)에 대해서만 사용할 수 있으나readonly
는 어디에나 사용할 수 있다.readonly
는 멤버 초기화 구문과 생성자에서 초기화 될 수 있으므로 동일 클래스의 인스턴스라고 해도 다른 값을 가질 수 있다.const
는 값을 수정할 때 응용프로그램 전체를 다시 빌드해야하지만readonly
는 해당되는 어셈블리만을 빌드하면 된다.- 단, 컴파일 때 사용되는 상숫값, 명명된/선택적 매개변수 사용 시에는
const
를 사용하게된다.
- 성능상으로는 컴파일타임 상수
- 캐스트보다는 is와 as를 사용할 것
as
는 런타임에 더 효율적으로 동작하고 읽기 편하다.- 캐스팅 불가능할 경우
null
을 반환하므로try/catch
구문이 필요없고 명확하게 타입변환이 가능하다. - 캐스트는 사용자 정의 형변환이 가능하지만 컴파일타임에 알 수 있는 타입에 관해서만 가능하므로 잠재적인 오류가 발생할 수 있다.