본문 바로가기

Book/Clean Code

[클린 코드] Assignment #10: TIL - 7장. 오류처리 + 공부법을 서로 공유해요

728x90

 

📢 DAY 12 ~ 13
🏷️ 오늘 읽은 범위: 7장. 오류처리

🖊️ 짧은 내용 요약

  • 프로그램의 안정성을 위해 오류 처리는 필수적이지만, 자칫 잘못하면 오류 처리로 인해 더러운 코드가 만들어질 수 있다. 오류 처리를 프로그램 논리와 분리하면 코드의 유지보수성도 높아지고, 프로그램의 로직을 이해하기가 훨씬 쉬워지면서 깨끗한 코드를 작성할 수 있다.

😊 깨끗한 코드를 만드는 오류 처리 방법!

  • try-catch문과 같은 예외를 사용해 오류 처리하기
    try-catch 구조를 사용해 예외처리를 하면, 코드도 깔끔해지고 필수적인 구현 기능의 범위를 잘 구분해 만들게 된다. 이 때, 테스트 케이스를 먼저 작성한 후, 테스트를 통과하도록 코드를 작성하면 try-catch 내부에 필수적인 기능을 구현하기 더욱 쉬워진다.
  • unchecked exception을 사용하기
    checked exception은 예외 처리를 강제로 해야 하는 예외이다. 그래서 함수가 연쇄적으로 호출된다고 가정했을 때 마지막으로 호출하는 함수에서 checked exception을 던지도록 수정하면, 이 함수부터 제일 처음에 호출한 함수까지 모두 수정해야하는 번거로움이 있다. 
  • 예외를 던지면서 다양한 추가 정보 알려주기
    예외는 잡아내기 쉽게 작성해야하기 때문에 오류가 발생한 원인과 위치를 찾기 쉽도록 한다. 호출 스택 정보 외에도 실패한 연산 이름이나 실패한 유형도 알려준다.
  • 예외 처리를 하는 내용을 클래스로 감싸기
    예외 처리를 하는 내용을 클래스로 감싸면 코드가 깔끔해지고, 비즈니스 로직을 이해하기 쉬워진다. 또한, 외부 라이브러리 API를 사용할 때 독립적으로 코드를 작성할 수 있고, 테스트 코드로 테스트하기도 쉬워진다.
  • 함수의 인수로 null을 전달하거나 null을 반환하지 않기
    함수의 인수로 null을 전달하지 않으면 null을 처리하지 않는 실수를 방지할 수 있다. 또한, 함수가 null을 반환해 함수 외부에서 반환값 null에 대한 처리를 하는 대신에 함수 안에서 null을 처리하는 코드를 작성하면 코드가 훨씬 깔끔해진다.

😀 책에서 기억하고 싶은 내용

깨끗한 코드는 읽기도 좋아야 하지만 안정성도 높아야 한다.
이 둘은 상충하는 목표가 아니다.
오류 처리를 프로그램 논리와 분리해 독자적인 사안으로 고려하면
튼튼하고 깨끗한 코드를 작성할 수 있다. (p. 142)
더보기
간단히 말해, 뭔가 잘못될 가능성은 늘 존재한다. 뭔가 잘못되면 바로 잡을 책임은 바로 우리 프로그래머에게 있다. (p. 130)
null을 반환하는 코드는 일거리를 늘릴 뿐만 아니라 호출자에게 문제를 떠넘긴다. 누구 하나라도 null 확인을 빼먹는다면 애플리케이션이 통제 불능에 빠질지도 모른다. (p. 139)
대다수 프로그래밍 언어는 호출자가 실수로 넘기는 null을 적절히 처리하는 방법이 없다. 그렇다면 애초에 null을 넘기지 못하도록 금지하는 정책이 합리적이다. (p. 142)
깨끗한 코드는 읽기도 좋아야 하지만 안정성도 높아야 한다. 이 둘은 상충하는 목표가 아니다. 오류 처리를 프로그램 논리와 분리해 독자적인 사안으로 고려하면 튼튼하고 깨끗한 코드를 작성할 수 있다. (p. 142)

🤔 오늘 읽은 소감 & 떠오르는 생각

오류 처리 코드를 많이 작성해본 경험이 없어서(부끄럽지만 제대로 공부를 안해서...) 그런지 예제 코드를 이해할 때 시간이 좀 걸렸다. 그래도 가장 공감이 많이 갔던 부분은 객체가 null인지 체크하느라 복잡해진 예제 코드였다. 객체가 null이지 않도록 하거나 함수가 null을 반환하지 않도록 짤 수 있다는 생각을 한 번도 해본 적이 없었는데, 책에서는 이를 해결하는 예제를 보면서 깨달음을 크게 얻은 느낌이었다.

🔍 새로 알았거나 잘 이해되지 않는 내용

  • 트랜잭션
    데이터베이스의 상태를 변화시키기 해서 수행하는 작업의 단위
  • Checked Exception
    java에 있는 예외의 종류로, 예외 처리를 강제하며 컴파일 단계에서 확인할 수 있는 예외
  • OCP(Open Closed Principle)
    기존 코드를 바꾸지 않고도 기능을 추가할 수 있도록 설계하는 것

📖 과제2: 공부법을 서로 공유해요

📚 참고

반응형