Post

[Book - Clean Code] 7. 오류 처리

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

오류가 발생하면 예외를 던지자.
그렇지 않으면 함수를 호출할 때 마다 오류를 확인해야 할 수 있으며, 휴먼 에러가 생길 수 있다.

null을 반환하지 마라

null을 반환하는 코드는 일거리를 늘릴 뿐만 아니라 호출자에게 문제를 떠넘긴다.

null을 반환한다면 감싸기 메서드를 구현해 예외를 던지거나 특수 사례 객체를 반환하는 방식을 고려해 보자.

특수 사례 객체

1
2
3
4
5
6
List<Employee> employees = getEmployees();
if (employees != null) {
    for (Employee e : employees) {
        totalPay += e.getPay();
    }
}

위 코드에서 getEmployees를 변경해 빈 리스트를 반환한다면 아래 코드처럼 훨씬 깔끔해진다.

1
2
3
4
5
6
7
8
9
10
11
12
List<Employee> employees = getEmployees();
for (Employee e : employees) {
    totalPay += e.getPay();
}

//

public List<Employee> getEmployees() {
    if ( ... 직원이 없다면 ... ) {
        return Collections.emptyList();
    }
}

이렇게 코드를 변경하면 NullPointerException이 발생할 가능성도 줄어든다.

null을 전달하지 마라

메서드에서 null을 반환하는 방식도 나쁘지만 메서드로 null을 전달하는 방식은 더 나쁘다.

null을 반환하여 NullPointerPointerException이 발생한다면 thorw ..Exception()을 통해 새로운 예외 유형을 만들어 던질 수도 있다.
또는 assert 문을 사용할 수도 있다.

결론

깨끗한 코드는 읽기도 좋아야 하지만 안정성도 높아야 한다.
따라서 오류 처리를 프로그램 논리와 분리하면 독립적인 추론이 가능해지며 코드 유지보수성도 크게 높아진다.

This post is licensed under CC BY 4.0 by the author.

© Yn3. Some rights reserved.