오늘 읽은 범위
- 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 |
댓글