| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
Tags
- java
- java8
- error
- 백준
- 엘라스틱서치
- Spring
- 리뷰
- javascript
- 이펙티브
- Web
- node
- Git
- 독후감
- 자바스크립트
- effective
- nodejs
- 인터페이스
- 맛집
- 자바
- 알고리즘
- Spring Boot
- boot
- 후기
- kibana
- RCP
- elasticsearch
- jface
- 스프링
- MySQL
- JPA
Archives
- Today
- Total
wedul
메서드- 규칙 38 인자의 유효성을 검사하라. 본문
반응형
만약 메서드에서 파라미터 값으로 전달되는 값을 제한해야 하는 경우 어떤 값이 들어오면 시스템이 죽거나, 잘못된 데이터가 나온다는 것을 기재해 놓아야 한다.
그렇지 않으면 심각한 문제가 발생될 수 있다.
그렇기 때문에 몇 가지 안전장치를 마련해야 한다.
방법
- 만약 인자 유효성을 위반하는 경우는 Javadoc의 @throw 태그를 사용하여 문서화 해야 한다.
1 2 3 4 5 6 7 | /** * * @throw ZeroDivisionException (0으로 나누었을 때) */ public int getData() { return 222/0; } | cs |
- assertion을 이용하여 인자 유효성 체크할 수 있다.
- assertion은 항상 참이 되어야 한다. 만족되지 못하면 AssertionError가 발생된다.
1 2 3 | private void sort(int a) { assert a == 0; } | cs |
- 생성자에 전달되는 인자값은 나중에 사용되는 경우가 많기 때문에 무조건 유효성 검사를 진행해야 한다.
- 메서드 실행 시 발생되는 예외가 문서와 다를 경우 문서에 명시된 예외로 예외 변환 숙어를 사용해서 메서드 문서에 명시된 예외로 변환해야 한다.
정리
메서드, 생성자 등 사용되는 인자에 대한 유효성 검사를 진행해야 한다. 문서에 유효성 검사에 대한 내용을 기재해야 하며, 유효성 검사 도중 발생하는 예외에 대해 @throw 영역에 잘 기재해야 한다. 하지만 무조건 적인 인자 검사는 오버헤드를 발생 시킬 수도 있기에, 애초에 매서드는 필요한 메서드만 적절하게 받을 수 있도록 설계되어야 한다.
출처 : 조슈아 블로크, 『 Effective Java 2/E』, 이병준 옮김, 인사이트(2014.9.1), 규칙38 인용.
반응형
'JAVA > Effective Java' 카테고리의 다른 글
| 메서드- 규칙 40 메서드 시그니처는 신중하게 설계하라. (0) | 2018.05.29 |
|---|---|
| 메서드- 규칙 39 필요하다면 방어적 복사본을 만들라. (0) | 2018.05.29 |
| 어노테이션 - 규칙 37 자료형을 정의할 때 표식 인터페이스를 사용하라. (0) | 2018.05.29 |
| 어노테이션 - 규칙 36 Override 어노테이션은 일관되게 사용하라. (0) | 2018.05.29 |
| Enum - 규칙 35 작명 패턴 대신 어노테이션을 사용하라. (0) | 2018.05.29 |
