책/Effective Java

책/Effective Java

[이펙티브 자바] 아이템 55: 옵셔널 반환은 신중히 하라

본문은 Effective Java를 읽고 간단하게 정리한 글입니다. 필요에 따라 생략/수정된 부분이 있을 수 있으며, 내용이 추후 변경될 수 있습니다. 선결론 값을 반환하지 못할 가능성이 있거나 호출할 때마다 반환값이 없을 가능성을 염두해둬야 하는 메서드라면 옵셔널을 고려하라 옵셔널 반환에는 성능 저하가 뒤따르니, 성능에 민감한 메서드라면 nulld을 반환하거나 예외를 던지는 편이 낫다 옵셔널 옵셔널은 원소를 최대 1개 가질 수 있는 불변 컬렉션이다(실제로 Optional가 Collection를 구현한 것은 아니다!) 옵셔널을 반환하는 메서드는 예외를 던지는 메서드보다 유연하고 사용하기 쉬우며, null을 반환하는 메서드보다 오류 가능성이 적다 옵셔널 사용 시 주의점 옵셔널을 반환하는 메서드에서는 절대 ..

책/Effective Java

[이펙티브 자바] 아이템 54: null이 아닌 빈 컬렉션이나 배열을 반환하라

본문은 Effective Java를 읽고 간단하게 정리한 글입니다. 필요에 따라 생략/수정된 부분이 있을 수 있으며, 내용이 추후 변경될 수 있습니다. 선결론 null이 아닌 빈 배열이나 컬렉션을 반환하라 null을 반환하는 API는 사용하기 어렵고 오류 처리 코드도 늘어난다. 또한, 성능이 좋지도 않다 실제 예시 1. null을 반환하는 경우 컬렉션이 비었을 때 null을 반환하는 코드 - 따라 하지 말 것 private final List cheesesInStock = ... ; /** * @return 매장 안의 모든 치즈 목록을 반환한다. * 단, 재고가 하나도 없다면 null을 반환한다. */ public List getCheeses() { return cheesesInStock.isEmpty..

책/Effective Java

[이펙티브 자바] 아이템 53: 가변인수는 신중히 사용하라

본문은 Effective Java를 읽고 간단하게 정리한 글입니다. 필요에 따라 생략/수정된 부분이 있을 수 있으며, 내용이 추후 변경될 수 있습니다. 선결론 인수 개수가 일정하지 않은 메서드를 정의해야 하는 경우엔 가변인수를 사용한다 메서드를 정의할 때 필수 매개변수는 가변인수 앞에 둔다 가변인수를 사용할 때는 성능 문제까지 고려하자 가변인수 메서드 가변인수 메서드는 명시한 타입의 인수를 0개 이상 받을 수 있다 가변인수 메서드를 호출하면, 가장 먼저 인수의 개수와 길이가 같은 배열을 만들고 인수들을 이 배열에 저장하여 가변인수 메서드에 건네준다(아이템 32) 간단한 가변인수 활용 예 static int sum(int... args) { int sum = 0; for (int arg : args) //..

책/Effective Java

[이펙티브 자바] 아이템 51: 메서드 시그니처를 신중히 설계하라

본문은 Effective Java를 읽고 간단하게 정리한 글입니다. 필요에 따라 생략/수정된 부분이 있을 수 있으며, 내용이 추후 변경될 수 있습니다. API 설계요령 1. 메서드 이름을 신중히 짓자 항상 표준 명명 규칙을 따라야 한다(아이템 68) 이해할 수 있고, 같은 패키지에 속한 다른 이름들과 일관되게 지어야 한다 개발자 커뮤니티에서 널리 받아들여지는 이름을 사용한다 긴 이름은 피하고, 애매하면 자바 라이브러리의 API 가이드를 참조한다 2. 편의 메서드를 너무 많이 만들지 말자 메서드가 너무 많은 클래스/인터페이스는 익히고, 사용하고, 문서화하고, 테스트하고, 유지보수하기 어렵다 아주 자주 쓰일 경우에만 별도의 약칭 메서드를 두고, 확신이 서지 않으면 만들지 말라 3. 매개변수 목록은 짧게 유..

책/Effective Java

[이펙티브 자바] 아이템 50: 적시에 방어적 복사본을 만들라

본문은 Effective Java를 읽고 간단하게 정리한 글입니다. 필요에 따라 생략/수정된 부분이 있을 수 있으며, 내용이 추후 변경될 수 있습니다. 선결론 클래스가 클라이언트로 받거나 반환하는 구성요소가 가변이라면 그 요소는 반드시 방어적으로 복사해야 한다 방어적 복사본 만들기 1. 생성자에서 받은 가변 매개변수 각각을 방어적으로 복사한다 매개변수의 유효성을 검사하기 전에 방어적 복사본을 만들고, 이 복사본으로 유효성을 검사하라 매개변수가 제3자에 의해 확장될 수 있는 타입이라면 방어적 복사본을 만들 때 clone을 사용하면 안 된다 2. 접근자가 방어적 복사본을 반환하게 한다 인스턴스를 복사하는 데는 일반적으로 생성자나 정적 팩터리를 쓰는 게 좋다 3. 외부에서 제공한 객체의 참조를 클래스 내부에 ..

코택
'책/Effective Java' 카테고리의 글 목록 (4 Page)