블로그 이미지
훅크선장

카테고리

분류 전체보기 (361)
사진이야기 (23)
펭귄컴퓨팅 (120)
컴퓨터보안 (84)
절름발이 프로그래머 (59)
하드웨어개조 (23)
멀알려줄까 (35)
홈베이킹&홈쿠킹 (2)
잡다한것들 (15)
Total
Today
Yesterday

달력

« » 2024.4
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30

공지사항

태그목록

최근에 올라온 글

강남의 S사 교육기관에서 C++ 교육을 받았다.
오랬만에 새로운 지식을 몇 가지 얻었다.

이전부터 알고 있던 사항이지만, 마음에 새겨볼려고? 블로그에 올리기로 하였다.

컴퓨터 프로그램의 오류(Error)는 크게 두 가지로 나뉘어진다.

구문오류 : 컴파일러가 잡아주는 프로그램 언어의 문법적 오류
논리오류 : 개발자의 잘못된 알고리즘에서 발생하는 오류 (찾아내기도 힘들고, 도구를 사용해도 불가능하다. 거의 죽음이다~.)

그러나, 신경쓰면 논리오류를 구문오류로 바꿀 수 있기도 하다.

if (NULL == 변수) {....}
매우 흔하게 나오는 실수이다. NULL과 같은 상수를 앞에 쓰면, 논리오류를 줄일 수 있다.
if (변수 = NULL) 로 써서, 한참 헤매는 상황을 피할 수 있다.

이런 것과 관련된 3가지 반드시 지켜야 할 사항이다. 이것만 잘 지켜도 중급개발자란 소리를 들을 수 있겠다.

1. const 키워드를 늘 사용한다.
바뀌지 말아야할 정보들에 대해서, 상수 선언을 한다.
void func( const int Count, char* const SzBuf){ ... }
함수를 사용할 때도, 항상 const를 사용함으로써, 버퍼의 주소위치가 바뀌는 것을 막아준다.
버퍼의 내용은 항상 변할 수 있더라도, 버퍼의 주소 위치를 고수하는 것이 좋다.
의외로 많이 하는 실수중의 하나이다. 

2. __try { } __except { } 구문을 항상 사용한다.
문제가 생기더라도, 프로그램이 불완전 종료되지 않기를 바란다면...
반드시 __try __except  와 __try __finally 구문을 사용하여야 한다.

__try {
...
}
__except( filter(GetExceptionCode() ) {
...
}

int filter( const int code ) {
switch (code) {
case 111 : 계속하기전에 수정작업; return -1;
case 222 : 또 다른 작업; return -2;
default :   ... return -100;
}
}
GetExceptionInformation() 함수도 사용해본다.


3. 예외 상황이 발생할 것을 대비하고, 예외상황을 로그로 남기는 기능을 넣는다.
프로그램이 아무리 완벽해 보여도, 무슨 상황이 발생할 지 모르는 법.
디버깅을 위해서는 항상 예외상황을 로그가 남도록 프로그램을 작성한다.

자세한 사용법은 모두 MSDN을 참고하시면 됩니다.


Posted by 훅크선장
, |