개발 서적/클린코드(Clean Code)

[클린코드] 7장. 오류 처리

눙엉 2022. 1. 5. 21:46

이 글은 클린 코드를 읽고 좋은 구절들을 기록하거나 느낀 점을 기록하는 글입니다.

 

"오류 처리는 프로그램에 반드시 필요한 요소 중 하나일 뿐이다. 입력이 이상하거나 디바이스가 실패할지도 모르기 때문이다." 

 

맞는 말이다...사용자들은 개발자가 원하는 입력 값만 입력하지 않기 때문이다.

그렇기 때문에 예외처리는 필수다.

 

오류 코드보다 예외를 사용하라

책에서는 if문을 사용하는 것보다 try catch문을 사용하라고 한다.

public void Person() {
	if (mycar != stop) {
    	// 자동차가 멈춰있으면 걸어간다.
       	walk();
        if (trafficLight !=green) {
        	// 보행자 신호등이 초록색이면 길을 건넌다. 
        	crossTheRoad();
        } else {
        	stop();
        }
    } else {
    	stop();
}

책에는 java로 예시를 들어서 생각나는 대로 한번 적어봤다.

 

위와 같은 방법으로 사용하게 되면 호출자 코드가 복잡해져서 차라리 예외를 던지는 것을 추천한다.

public void Person() {
	try {
       	walk();
    } catch ( 에러 ) {
    	stop();
    }
}

 

이런식으로 사용하게 되면 호출자 코드가 훨씬 깔끔하다. (좋은 예시가 있으면 댓글에 알려주시면 추가하겠습니다!)

 

null을 전달하지 마라

const add = (a, b) => {
	return a + b
}

add라는 2개의 인수를 받아 더하는 함수가 있다. 개발자의 의도는 숫자 2개를 더하기 위해서

add함수를 만든 것이다.

 

하지만 사용자가 null을 입력하면 어떻게 될까? 당연히 원하는 대로 동작하지 않을 것이다.

 

예외 유형을 추가해줘야 한다.

const add = (a, b) => {
	if(typeof a === 'number' && typeof b === 'number'){
    	return a + b
    } else {
    	console.error('에러입니다.');
    }
}

이번엔 javascript를 이용해서 만들어보았다. 위의 add함수처럼 인수 a, b가 숫자일 때만 더하기를 하도록 예외처리를 추가해주면 된다.

 

물론 javascript에서는 문자열도 더하기가 되지만 개발자가 원하는 것은 숫자를 더하는 것이기 때문에 저렇게 예외처리를 해주었다.

 

add함수 결과

 

이렇게 개발자가 원하는 대로 숫자인수만 전달해 준다면 문제 될 일이 전혀 없다.

하지만 위에서도 언급했듯이 절대로 사용자들은 호락호락하지 않다. 그렇기 때문에 예외처리는 무조건 필수다!

 

add함수 결과(에러)

 

여담으로 나는 프론트엔드 개발자로서 javascript로 개발을 한다.

html의 input 태그에서 type = number를 사용했을 때 숫자가 아닌 string값 (e, +, -)가 입력될 것이라고 생각지도 못했다. 여기에 대한 글은 첨부해두겠다.