Community

개발자 99% 커뮤니티에서 수다 떨어요!

← Go back
TIL 7장(오류 처리)
#clean_code
2년 전
580


TIL (Today I Learned)

2022.03.04

오늘 읽은 범위

7장. 오류처리

책에서 기억하고 싶은 내용을 써보세요.

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

    1. if문을 통해 오류 코드를 처리하는 방식을 사용하면 함수를 호출한 즉시 오류를 확인해야 하므로 코드가 복잡해진다. 즉 오류가 발생하면 예외로 던지는 편이 낫다. 논리가 오류 처리 코드와 섞이지 않으니까

  • Try-Catch_Finally문 부터 작성하라

    1. try 블록은 트랜잭션과 비슷하다. try 블록에서 무슨 일이 생기든지 catch 블록은 프로그램 상태를 일관성있게 유지한다.

    2. 먼저 강제로 예외를 일으키는 테스트 케이스를 작성한 후 테스트를 통과하는 코드를 작성하는 방법을 권장한다. 그러면 자연스럽게 try 블록의 트랜잭션 범위부터 구현하게 되므로 범위 내에서 트랜잭션 본질을 유지하기 쉬워진다.

  • 미확인 예외를 사용하라

    1. 확인된 예외는 OCP(Open Closed Principle)를 위반한다. 하위 단계에서 코드를 변경하면 상위 단계 메서드 선언부를 전부 고쳐야 한다는 말이다.

  • 예외에 의미를 제공하라

    1. 예외를 던질 때는 전후 상황을 충분히 덧붙인다. 그러면 오류가 발생한 원인과 위치를 찾기가 쉬워진다.

  • 호출자를 고려해 예외 클래스를 정의하라

    1. 오류를 분류하는 방법은 수없이 많다. 오류가 발생한 컴포넌트 위치로 분류한다. 아니면 디바이스 실패, 네트워크 실패, 프로그래밍 오류 등 유형으로 분류한다. 하지만 프로그래머에게 가장 중요한 관심사는 오류를 잡아내는 방법이다.

    2. 외부 API를 사용할 때는 감싸기 기법이 최선이다. 외부 API를 감싸면 외부 라이브러리와 프로그램 사이에서 의존성이 줄어든다. 나중에 다른 라이브러리로 갈아타도 비용이 적다. 또한 감싸기 클래스에서 외부 API를 호출하는 대신 테스트 코드를 넣어주는 방법으로 프로그램을 테스트 하기도 쉬워진다. 마지막으로 특정 업체가 API를 설계한 방식에 발목을 잡히지 않는다.

  • 정상 흐름을 정의하라

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

  • null을 반환하지 마라

  • null을 전달하지 마라

오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보세요

  • 이 책을 읽을 수록 나는 코드를 짜는 자신감을 잃어간다. 지금까지 내 코드들이 잘못되었다고 끊임없이 지적받는 기분이다. 지금 당장 코드를 짜는 것보다 이 책을 읽고 습관하며 지금까지 짠 코드들을 다듬는 시간을 가져야겠다.