티스토리 뷰


#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. 메소드 내의 일부 문장에 대해서만 제약할 수 없다. (메소드 전체에만 지정 가능)

è 분리하여 관리하자

반응형
댓글