본문 바로가기
클린 코드

7장. 오류 처리

by 아토로 2022. 3. 4.

오늘 읽은 범위

  • 7장. 오류 처리

기억하고 싶은 내용

  • 오류 코드보다 예외를 사용하라 (p.130)
    • 오류 코드를 사용하면 각 개념을 독립적으로 살펴보고 이해할 수 있다.
  • Try-Catch-Finally 문부터 작성하라 (p.132)
    • try 블록에서 무슨 일이 생기든지 호출자가 기대하는 상태를 정의하기 쉬워진다.
  • 미확인(unchecked) 예외를 사용하라 (p.133)
    • 확인된 예외는 OCP(Open Closed Principle)를 위반한다.
  • 예외에 의미를 제공하라 (p.135)
    • 예외를 던질 때는 전후 상황을 충분히 덧붙인다.
  • 호출자를 고려해 예외 클래스를 정의하라 (p.135)
    • 외부 API를 감싸면 외부 라이브러리와 프로그램 사이에서 의존성이 크게 줄어든다.
    • 감싸기 클래스에서 외부 API를 호출하는 대신 테스트 코드를 넣어주는 방법으로 프로그램을 테스트 하기도 쉬워진다.
    • 감싸기 기법을 사용하면 특정 업체가 API를 설계한 방식에 발목 잡히지 않는다.
    • 예외 클래스가 하나만 있어도 충분한 코드가 많지만, 한 예외는 잡아내고 다른 예외는 무시해도 괜찮은 경우라면 여러 예외 클래스를 사용한다.
  • 정상 흐름을 정의하라 (p.137)
    • 때로는 중단이 적합하지 않을 때도 있다.
    • 특수 사례 패턴(Special Case Pattern)을 사용하면 클라이언트 코드가 예외적인 상황을 처리할 필요가 없어진다.
  • null을 반환하지 마라 (p.138)
    • 메서드에서 null을 반환하고픈 유혹이 든다면 그 대신 예외를 던지거나 특수 사례 객체를 반환하다.
    • 사용하려는 외부 API가 null을 반환하다면 감싸기 메서드를 구현해 예외를 던지거나 특수 사례 객체를 반환하는 방식을 고려한다.
  • null을 전달하지 마라 (p.140)
    • 정상적인 인수로 null을 기대하는 API가 아니라면 메서드로 null을 전달하는 코드는 최대한 피한다.
  • 오류 처리를 프로그램 논리와 분리하면 독립적인 추론이 가능해지며 코드 유지보수성도 크게 높아진다. (p.142)

소감 및 생각

  • 수많은 레거시들에서 프로그램의 흐름을 파악하기 어려웠던 이유 중 한가지가 바로 오류 코드를 사용하는 것이라 생각된다. 하나의 흐름을 파악하기 위해서 의미없는 수많은 에러 코드를 알아야만 했다. 에러 코드를 예외를 사용하도록 변경을 하는 것 만으로도 코드의 가독성은 크게 향상될 것이라고 생각된다.
  • 예외 클래스를 몇개를 사용해야 될지에 대한 고민이 있었는데, 이번 장을 읽어보고 많은 도움이 되었다. 예외 클래스는 꼭 필요한 경우가 아니라면 많을 필요가 없는 것 같다.

새롭게 배운 개념

  • 특수 사례 패턴(Special Case Pattern): 클래스를 만들거나 객체를 조작해 특수 사례를 처리하는 방식. 클라이언트 코드가 예외적인 상황을 처리할 필요가 없어진다.

'클린 코드' 카테고리의 다른 글

10장. 클래스  (0) 2022.03.09
9장. 단위 테스트  (0) 2022.03.06
6장. 객체와 자료 구조  (0) 2022.03.01
5장. 형식 맞추기  (0) 2022.02.28
4장. 주석  (0) 2022.02.25

댓글