Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- Intellij
- Effective Java
- CAS
- 이펙티브자바
- spring batch #스프링 배치 #스프링 배치 중복 실행
- JetBrains
- javascript
- java.util.LinkedHashMap cannot be cast
- effectivejava
- you don't know js
- nodeJS
- spring security
- Babel
- ES6
- webstorm
- javascript 기초
- 이펙티브 자바
- javascript value
- Spring
- 자바
- javascript native
- webpack
- javascript 값
- Redis
- java
- javascript type
- ECMA2015
- 자바스크립트
- Spring Session
- requestbody
Archives
- Today
- Total
귀찮지만 만들어보자
이펙티브 자바 - 메서드(1) 본문
매개변수가 유효한지 검사하라
메서드 몸체가 시작되기 전에 매개변수를 검사해야한다. 사실은 이게 핵심이다.
미리 확인한다면 즉각적이고 깔끔한 방식으로 예외를 던질 수 있다.
매개변수 검사를 제대로 하지 않았을때의 문제점
- 메서드가 수행되는 중간에 모호한 예외를 던지며 실패할 수 있다.
- 메서드는 잘 수행됐지만 잘못된 결과를 반환할 수 있다.
- 메서드에 포함된 객체를 이상한 상태로 만들어놔서 미래의 알수 없는 시점에 메서드와 관련없는 오류를 발생 시킬수있다.
간략하게 정리를 하자면 메서드가 외부의 잘못된 변수로 인해 영향을 받지 않게 해야한다.
가장 문제가 자주 발생하는건 null에 대한 처리인데..
이 때문에 불변성을 보장해주는 언어가 각광받는게 아닐까 싶다. ex) kotlin, scala
자바7에 추가된 requiredNonNull을 사용하면 상대적으로 쉽게 null을 처리할 수 있다.
이걸 사용하면 null이 들어있을때 npe를 발생시킨다.
this.strategy = Objects.requireNonNull(strategy);
자바9에서는 Objects에 범위 검사 기능도 더해졌다고 한다. 나는 아직 안써봤는데..
특히나 당장 사용하지는 않고 저장해둔 매개변수는 더욱 신경써서 검사해야한다.
대개 이런 경우에서 에러가 발생하면 원인을 찾기가 까다롭기 때문에
나중에 고생하지 않으려면 미리 대처해둘 필요가 있다.
'이펙티브 자바' 카테고리의 다른 글
이펙티브 자바 - 메서드(3) (0) | 2019.01.27 |
---|---|
이펙티브 자바 - 메서드(2) (0) | 2019.01.27 |
이펙티브 자바 - 람다와 스트림(7) (0) | 2019.01.19 |
이펙티브 자바 - 람다와 스트림(6) (0) | 2019.01.19 |
이펙티브 자바 - 람다와 스트림(5) (0) | 2019.01.19 |