급하게 코딩하다 보면 발로 코딩 하는 경우가 종종 생긴다. 다음은 얼마전에 디버깅 하다가 찾은 발코딩의 예이다.
//----------------------------------------------------------
// 값이 변경되었을 때 설정을 변경하는 메소드
function setChangedValue( int nOldValue, int nNewValue )
{
int nChanged = nOldValue, nNewValue;
if( nChanged != 0 )
{
// 설정 변경
}
}
//----------------------------------------------------------
이전값과 새로운 값을 비교해서 비교값이 0이 아닐 경우 그러니까 새로운 값이 변경되었을 때 설정을 변경하기 위한 메소드였는데 nOldValue - nNewValue 로 써야할 부분을 nOldValue, nNewValue 로 해놓은 것이다. 물론 nOldValue 와 nNewValue 는 특이한 상황이 아닐 경우 0이 들어오기 때문에 nChanged 는 대부분 0이라서 이 메소드는 설정을 변경하지 않고 통과되었다.
하지만, 오늘 테스트 도중에 0이 아닌 값이 넘어왔고 의도치 않는 동작을 해서 디버깅 해서 바로 잡아내긴 했다. 하지만 이런 발코딩은 예상치 못한 곳에 들어가 있을 때 찾아내기 참 애매한 경우이긴 한것 같다.
//----------------------------------------------------------
// 값이 변경되었을 때 설정을 변경하는 메소드
function setChangedValue( int nOldValue, int nNewValue )
{
int nChanged = nOldValue, nNewValue;
if( nChanged != 0 )
{
// 설정 변경
}
}
//----------------------------------------------------------
이전값과 새로운 값을 비교해서 비교값이 0이 아닐 경우 그러니까 새로운 값이 변경되었을 때 설정을 변경하기 위한 메소드였는데 nOldValue - nNewValue 로 써야할 부분을 nOldValue, nNewValue 로 해놓은 것이다. 물론 nOldValue 와 nNewValue 는 특이한 상황이 아닐 경우 0이 들어오기 때문에 nChanged 는 대부분 0이라서 이 메소드는 설정을 변경하지 않고 통과되었다.
하지만, 오늘 테스트 도중에 0이 아닌 값이 넘어왔고 의도치 않는 동작을 해서 디버깅 해서 바로 잡아내긴 했다. 하지만 이런 발코딩은 예상치 못한 곳에 들어가 있을 때 찾아내기 참 애매한 경우이긴 한것 같다.


덧글