티스토리 뷰

* 이펙티브 자바 2/E를 읽고 공부하기 위해 기록한 게시글입니다.

38. 인자의 유효성을 검사하라

대부분의 메서드와 생성자는 인자로 사용할 수 있는 값을 제한한다. 값이 음수가 될 수 없다거나, null이 될 수 없다거나 등등등..

-> 이러한 제한들은 문서로 남겨야 할 뿐만 아니라 메서드 시작 부분에서 검사해야 한다. (오류(error)는 가급적 빨리 탐지해야 한다는 원칙에 의해)

 

 

이러한 검증을 생략하면 오류를 탐지하기 힘들어질 뿐만 아니라 문제 발생 지점을 파악하기도 곤란해진다.

-> 메서드 앞부분에서 인자의 유효성을 검사하도록 하면 적절한 예외를 통해 깔끔하고 신속하게 오류를 검출할 수 있다.

 

 

하지만 만약 인자 유효성을 검사하지 않는다면 다음과 같은 문제가 생길 수 있다.

1. 처리 도중에 이상한 예외를 내면서 죽어버릴 수 있다.

2. 실행은 되는데 예상과 다른 결과가 나올 수 있다. 

3. 메서드가 정상적으로 반환값을 내기는 하지만 어떤 객체의 상태가 비정상적으로 바뀔 수 있다. -> 나중에 해당 메서드와 아무 상관이 없는 부분에서 오류를 발생시킨다

 

 

이러한 문제를 겪고싶지 않다면 메서드 시작 부분에 인자를 검사하는 코드를 추가해라

- 인자 유효성이 위반되었을 경우에 발생하는 예외를 @throws 태그를 사용해서 문서화 해라. 굳이 이것까진 아니더라도 주석은 달아라

- 특히 생성자의 경우에는 나중을 위해 보관될 인자의 유효성은 반드시 검사해야 한다. (클래스 불변식을 위반하는 객체가 만들어지는 것을 막기 위해서 필요)

 

 

하지만 예외적으로 유효성 검사를 실행하는 오버헤드가 너무 크거나 비현실적이고, 계산과정에서 유효성 검사가 자연스럽게 이뤄지는 경우라면 검사과정을 생략해도 괜찮다.

 

(결론)

메서드나 생성자를 구현할 때는 받을 수 있는 인자에 제한이 있는지를 따져봐라

-> 제한이 있다면 그 사실을 문서에 남기고, 메서드 앞부분에서 미리 검사하는 습관을 들여라.

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함