ITEM 2 : Prefer readonly to const
(const 보다 readonly를 선호해라)
■ const와 readonly의 차이점
1. const는 컴파일 타임 상수이며 속도가 빠르고 변경이 불가능하다. readonly는 런타임 상수이며 const에 비해 느리지만 유연성이 있다.
2. 컴파일 타임 상수는 메서드내에서 정의될 수 있지만 readonly는 그렇지 않다.
3. 컴파일 타임 상수는 내장자료형(primitive types)과enums,string으로만 사용할 수 있다.
■ readonly의 장점
1. 컴파일 타임 상수 (const) 는 제한된 숫자와 문자만 가능하지만, 런타임 상수(readonly)는 모든 타입이 가능하다.
2. readonly는 클래스 타입마다 다른 값을 가질수 있지만, 컴파일타임 상수는 static 상수이어서 하나의 값만 가질 수 있다.
3. 가장 중요한 차이점은 readonly는 런타임에 평가가 된다. 값을 가지지 않고 참조로 값을 가져온다.
4. 하나의 어셈블리에서 const에 값을 할당하고 다른 어셈블리에서 참조해서 빌드 하면, 참조하는 어셈블리에서는 해당 const의 값이 설정이
되어있기 때문에 원래의 어셈블리에서 const값을 변경(5->105)변경을 하면 반드시 참조하는 어셈블리도 리빌딩해 줘야 된다.
하지만 readonly를 쓰면 런타임에 값을 참조하기 때문에 참조되는 어셈블리만 리빌드만 되어있으면 이상이 없이 원하는 결과를 얻을 수 있다
즉, const를 사용하면 배포한 후에 업데이트 시에 참조되는 모든 어셈블리를 모두 리빌드해야하는 문제점이 발생한다.
■ Terms
■ 해석이 모호하거나 중요한 구문
1. The way in which compile-time and runtime constants are evaluated affects runtime compatibility
(컴파일 타임 상수와 런타임 상수가 평가가 되어지는 방식은 실행시간의 호환성에 영향을 미친다.)
2. Howerver, any gains are slight and should be weighed against the decreased flexibility.
(그러나, 약간의 이득은 경미하며 유연성 감소를 따져봐야 한다.)
3. Be sure to profile performance differences before giving up the flexibility.
(유연성을 포기하기 전에 성능차이점들의 개요를 작성하는 것을 명심하라)
■ 단어
1. performance : 실적,성과;공연;(과제등의)수행[실행]
2. follow from : 결과가 나오다, 결론적으로 ~ 이다. ; ~을 따르다.
3. primitive : 초기의,원시적인
4. place : 놓다,설치하다/(특정한 상황에)두다[처하게 하다]
5. implication : 영향[결과]
6. far-reaching : 지대한 영향을 가져올
7. compatitable : 호환이 되는
8. infrastructure : 사회 기반 시설
9. any +복수 명사 : 약간의, cf)any+단수명사 : 어떤~라도/얼마의~든지
10. be sure to + V원형 : ~해야 한다는 것을 명심하라.
11. weigh :무게를 달다 cf) weigh (up) sth(aginst sth)따져보다, 저울질 하다
12. profile : 개요를 알려주다[작성하다]
13. tradeoff : 거래,교환
■ 피드백
이번 ITEM도 한줄로 정리가 가능할 거 같다.
-절대 변하지 않는 값은 const로 처리하고 이외의 것들은 모두 readonly를 쓰는 것이 더 좋다.
'프로그래밍 > Effective C#' 카테고리의 다른 글
ITEM 5 : 항상 ToString()을 제공해라. (1) | 2013.07.11 |
---|---|
ITEM 4 : #if 대신에 Conditional Attributes를 사용해라 (0) | 2013.07.11 |
ITEM 3 : Cast 보다 is 나 as 연산자를 선호해라 (2) | 2013.05.28 |
ITEM 1 : 데이터 멤버 대신 프로퍼티를 사용하라. (0) | 2013.05.26 |
시작하면서.. (0) | 2013.05.21 |