<이펙티브 자바> 8. 메서드
by BFine반응형
www.yes24.com/Product/Goods/65551284
49. 매개변수가 유효한지 검사하라
-
오류는 가능한 빨리 발생한 곳에서 잡아야한다
-
문서화할때 예외도 함께 기술
-
자바 7에 추가된 Objects 메소드를 활용하자
-
assert를 통해 매개변수 유효성을 검증할 수 있다.
-
실패하면 AssertionError를 발생
-
성능 저하없음
-
50. 적시에 방어적 복사본을 만들라
-
다른 객체의 허락없는 수정을 방어해라
-
Date는 낡은 API이므로 새로운 코드 작성할때 쓰지말자
-
매개 변수가 3자에 의해 확장될 수 있는 타입이라면 방어적 복사본을 만들자(clone (X))
public Period(Date start, end){ this.start = new Date(start.getTime()) }
51. 메서드 시그니처를 신중히 설계하자
-
메서드 이름을 신중히 짓자
-
편의 메서드를 너무 많이 만들지 말자
-
매개변수 목록은 짧게 유지하자 - 같은 타입의 매개변수가 연달아 나오면 해롭다
-
매개변수를 여러개 묶는 도우미 클래스를 만들자
-
매개변수 타입으로는 클래스보다 인터페이스가 더 낫다
-
Boolean 보다는 원소 2개짜리 열거타입이 낫다
52. 다중정의(오버로딩)는 신중히 사용하자
- 안전하게 가려면 매개변수 수가 같은 오버로딩은 만들지말자
53. 가변인수는 신중히 사용하자
- varargs는 0개이상의 인수를 받음
- 가변인수 메서드는 호출될때마다 배열을 새로 하나 할당하고 초기화함
- 성능에 문제가 발생할 수 있음
54. null이 아닌 빈 컬렉션이나 배열을 반환하자
- 배열의 경우 길이가 0인 배열을 반환하자
55. Optional 반환은 신중히 하자
- Optional로 절대 null을 반환하지 말자
- 컬렉션, 스트림, 배열 같은 컨테이너 타입은 Optional로 감싸면 안된다
- 결과가 없을 수 있고 클라이언트가 이상황을 특별하게 처리해야 한다면 Optional를 반환한다
- Optional도 객체기 때문에 객체안에 메서드를 호출하는 성능이 추가된다
- OptinalInt/Long/Double 이 있으니 기본타입을 담은 옵셔널을 반환하지말자
56. 공개된 API요소는 문서화 주석을 작성하자
- @implSpec 은 해당 메서드와 하위 클래스 사이의 계약을 말한다(상속)
- 열거타입을 문서화 할때는 상수에도 주석을 달아야한다
- 스레드 안전 수준은 반드시 API설명에 포함해야 한다
반응형
'개발서적 > 이펙티브 자바' 카테고리의 다른 글
<이펙티브 자바> 11. 동기화 (0) | 2021.01.26 |
---|---|
<이펙티브 자바> 10. 예외 (0) | 2021.01.24 |
<이펙티브 자바> 7. 람다와 스트림 (0) | 2021.01.17 |
<이펙티브 자바> 6. 열거 타입과 애너테이션 (0) | 2021.01.15 |
<이펙티브 자바> 5. 제네릭 (0) | 2021.01.14 |
블로그의 정보
57개월 BackEnd
BFine