오류 코드보다 예외를 사용하라
- 오류 코드를 사용하면 호출자 코드가 복잡해진다.
- 반면 예외를 던지게 되면 논리와 오류 처리 코드가 뒤섞이지 않아 깔끔해진다.
Try-Catch-Finally 문부터 작성하라
- try 블록은 트랜잭션과 비슷하다.
- try 블록에서 무슨 일이 생기든 catch 블록은 프로그램 상태를 일관성 있게 유지해야 한다.
- try 블록에서 무슨 일이 생기든지 호출자가 기대하는 상태를 정의하기 쉬워진다.
미확인 예외를 사용하라
- 확인된 예외는 OCP를 위반한다. → 대규모 시스템의 경우 최하위 단계에서 최상위 단계까지 연쇄적인 수정 발생
- 확인된 예외는 모든 함수가 최하위 함수에서 던지는 예외를 알아야 하므로 캡슐화가 깨진다.
확인된 예외와 미확인된 예외의 차이는 아래 글에서 확인할 수 있다.
https://yooooooni.tistory.com/53
[Java] Checked Exception vs. UnChecked Exception
Checked Exception (확인 예외) 잘못된 코드가 아닌 잘못된 상황에서 발생하는 예외 파일 열기와 같이 정확한 코드를 구현했음에도, 외부 환경(파일이 없는 상황 등)에 따라 발생 가능 예외처리를 구
yooooooni.tistory.com
예외에 의미를 제공하라
- 오류 메시지에 정보를 담아 예외와 함께 던진다.
- 실패한 연산 이름과 실패한 유형도 언급한다.
null을 반환하지 마라
- null을 반환하는 코드는 일거리를 늘릴 뿐만 아니라 호출자에게 문제를 떠넘긴다.
- 한 번이라도 null 확인을 빼먹는다면 애플리케이션이 통제 불능에 빠질 수도 있다.
- 외부 API가 null을 반환한다면 특수 사례 객체를 반환한다. (ex. Collections.emptyList();)
null을 전달하지 마라
- assert문이나 throw문을 사용하면 문제가 발생하지는 않는다.
- 하지만 대다수 프로그래밍 언어는 호출자가 실수로 넘기는 null을 적절히 처리할 방법이 없다.
- 애초에 null을 넘기지 않는 것이 좋다.
'Book > 클린코드' 카테고리의 다른 글
[클린코드] 9장 단위 테스트 (0) | 2023.09.17 |
---|---|
[클린코드] 8장 경계 (0) | 2023.09.16 |
[클린코드] 6장 객체와 자료구조 (0) | 2023.09.14 |
[클린코드] 5장 형식 맞추기 (0) | 2023.09.11 |
[클린코드] 4장 주석 (0) | 2023.09.11 |