2. Defensive Programming
에러를 검출하기 쉽도록 에러에 관한 가능한 많
은 정보들을 출력하도록 하는 것.
3.
4. 참이어야 하는 것.
거짓인 경우에 메시지 상자(등)이 뜸.
코드의 가정을 설명
주석을 대신함(주석보다 최신)
오류 발생 전 프로그램의 상태를 알 수 있음
5. 기본
무엇이
어떤 조건이 참이 아닌가
왜
왜 참이 아닌가
어디에서
어디에서 참이 아닌가
6. 매개변수
유효한가
범위가 맞는가
…
잘못된 매개변수가 들어왔을 때마다 관련 어썰트 추가
->중복문제 방지
API/COM의 결과
성공했는가.
에러는 없었는가.
있다면 잘 헨들링 하든가 어썰트를 띄어야.
가정
가정이 지켜졌는가.
8. 향상된 무시 기능
한 번 무시
지정된 횟수 만큼 무시
완전 무시
모든 어썰트 비활성화
* 주의
오류의 발견 가능성을 저하시킨다.
덤프 생성
콜스택 확인
지역변수 상태 확인
기타
어썰트 모든 내용 복사
소스 파일 소유자에게 메일
9.
10. 디버깅에 도움이 될 만한 정보를 남기어 놓는 것.
Printf, cout, DebugOutputString, …
적당한 양의 정보를 출력해야 함.
유용한 프로그램
DebugView
DebugOutputString의 call을 감시하여 해당 출력을
View에 보여줌.
디버거에 연결되어 있지 않아도 된다고 함.
네트워크도 지원돼서 다중 PC의 DebugOutput도 한 PC
에서 모니터링
11. Trace.Write/WriteLine/WriteIf/WriteLineIf
TraceSwitch
추적 레벨
Off(0)
< Error(1)
< Warnings(2)
< Info(3)
< Verbose(4-전부)
Config에서 설정 가능
12. 멀티 스레딩
Log를 남기기 위해 하나의 스레드가 Trace를 호출 할
때마다 다른 스레드들은 대기를 타야 함.
퍼포먼스 이슈
13. 직접 생성할 수 있는 Trace 객체
활용
주요 Subsystem당 1개 생성
SourceSwitch
Trace처럼 TraceSource에 지정해주는 추적 레벨
TraceFilter
추적된 로그들을 거를 수 있는 Filter를 설정할 수 있
음.
14.
15. X
코드가 무엇을 하는지 그대로 반복서술
O
코드 작성시 했던
가정
접근방법
접근 방법의 이유
…
240p
16. 메서드
루틴이 하는 일
메서드가 한 가정
입력 매개 변수 스펙
출력 매개 변수 스펙
반환 값 스펙
메서드에서 발생할 수 있는 예외
코드상에서 분명하지 않은 함수의 기능에 대해 설명
중요한 알고리즘은 완벽하게 설명
* 5년 후 코드를 유지 보수 할 수 있을까?라는 질문에
예로 답변할 수 있도록 하는 마인드로 관리
* 사용되지 않는 코드는 주석하지 않고 삭제
17. 문서화 할 때 편리
자동으로 XML 주석을 뽑아주는 add-in 존재
GhostDoc
MSDN 수준의 문서화 지원
Document! X
MS에서 도움말 파일 생성할 때 쓰는 도구
SandCastle