본문 바로가기
✍️ 글쓰기/📕 읽고

#노마드북클럽 | 클린 코드 (Clean Code) 11일차

by ddubimoon 2022. 3. 4.

TIL (DAY 11)

🔖 오늘 읽은 범위: 7장, 오류 처리

* 10일차는 Quiz 진행 완료!


책에서 기억하고 싶은 내용
  • 오류 처리는 중요하다. 하지만 오류 처리 코드로 인해 프로그램 논리를 이해하기 어려워진다면 깨끗한 코드라 부르기 어렵다. (p130)
  • 오류 코드보다 예외를 사용하라. (p130)
  • Try-Catch-Finally 문부터 작성하라. (p132)
    • 어떤 면에서 try 블록은 트랜젝션과 비슷하다. try 블록에서 무슨 일이 생기든지 catch 블록은 프로그램 상태를 일관성 있게 유지해야 한다. (p132)
    • 먼저 강제로 예외를 일으키는 테스트 케이스를 작성한 후 테스트를 통과하게 코드를 작성하는 방법을 권장한다. 그러면 자연스럽게 try 블록의 트랜젝션 범위부터 구현하게 되므로 범위 내에서 트랜젝션 본질을 유지하기 쉬워진다. (p133)
  • 미확인(unchecked) 예외를 사용하라 (p133)
    • 확인된 예외는 OCP(Open Closed Principle)를 위반한다. 메서드에서 확인된 예외를 던졌는데 catch 블록이 세 단계 위에 있다면 그 사이 메서드 모두가 선언부에 대항 예외를 정의해야 한다. 즉 하위 단계에서 코드를 변경하면 상위 단계 메서드 선언부를 전부 고쳐야 한다는 말이다. (p134)
  • 예외에 의미를 제공하라 (p135) 
    • 그러면 오류가 발생한 원인과 위치를 찾기가 쉬워진다. (p135)
  • 호출자를 고려해 예외 클래스를 정의하라 (p135)
    • 실제로 외부 API를 사용할 때는 감싸기 기법이 최선이다. 외부 API를 감싸면 외부 라이브러리와 프로그램 사이에서 의존성이 크게 줄어든다. 나중에 다른 라이브러리로 갈아타도 비용이 적다. (p137)
  • 정상 흐름을 정의하라 (p137)
    • 특수 사례 패턴(Special Care Pattern) ... 클래스를 만들거나 객체를 조작해 특수 사례를 처리하는 방식이다. (p138)
  • null을 반환하지 마라 (p138)
    • 메서드에서 null을 반환하고픈 유혹이 든다면 그 대신 예외를 던지거나 특수 사례 객체를 반환한다. (p139)
  • null을 전달하지 마라 (p140)
    • 대다수 프로그래밍 언어는 호출자가 실수로 넘기는 null을 적절히 처리하는 방법이 없다. 그렇다면 애초에 null을 넘기지 못하도록 금지하는 정책이 합리적이다. (p142)
오늘 읽은 소감 및 생각
  • 코딩할 땐, 항상 내가 생각했던 것보다 더 작게, 더 디테일하게 세분화해서 생각하는 것이 중요한 것 같다. 이 코드가 야기할 이슈는 어떤 것이 있는지, 그 문제는 어떻게 해결할 수 있는지도 생각해봐야 하는데, 바로 그 해결 방법을 표시해주는 것이 오류 처리인 것이다. 지금까지 내가 짠 코드들은 try-catch-finally 구문 없이, 마땅한 오류 처리 없이 덕지덕지 붙인 코드였다는 것을 깨달았다. 이 부분을 읽으며 항상 코드를 짤 땐 두 발, 세 발 앞서서 생각하는 습관이 중요하다는 점을 다시 한번 배운다. 
궁금한 내용이나 새로 알게 된 개념
  • N/A

댓글