티스토리 뷰
#if, #endif 보다는 Conditional Attribute를 이용하라!
기존방법
예제 : #if, #endif 방법 |
private void Check() { #if DEBUG string name = new StackTrace().GetFrame(1).GetMethod().Name; Trace.WriteLine("Check for Person : "); Trace.WriteLine("called by " + name); #endif } |
좋지 않은 점 :
1. Release모드일 때에는 메소드 내용이 포함되지는 않지만 쓸데없는 메소드 호출을 피할 수 없다.
2. 코더의 실수를 유발하여 의도하지 않은 코드가 삽입될 수 있다.
개선시킨 방법
예제 : Conditional Attribute 사용 방법 |
[Conditional("DEBUG")] private void Check() { string name = new StackTrace().GetFrame(1).GetMethod().Name; Trace.WriteLine("Check for Person : "); Trace.WriteLine("called by " + name); } |
좋은 점 :
1. Release모드일 때에는 메소드 내용이 컴파일 되지만 호출되지는 않는다.
2. 메소드 전체에 대한 제어가 가능하다.
한계점 :
1. void 메소드에만 가능하다.
2. 메소드 내의 일부 문장에 대해서만 제약할 수 없다. (메소드 전체에만 지정 가능)
è 분리하여 관리하자