Home
Younghwani
Cancel

[Effective Java] Item55. 옵셔널 반환은 신중히 하라!

Item55. 옵셔널 반환은 신중히 하라! Intro 자바 8 전에는 메서드가 특정 조건에서 값을 반환할 수 없는 경우 두가지 행동을 취했다. 예외를 던진다. null을 반환한다. 두 방법 모두 허점이 있다. 예외는 진짜 예외적인 상황에서만 사용해야 하고, 예외 생성 시 드는...

[Effective Java] Item54. null이 아닌, 빈 컬렉션이나 배열을 반환하라!

Item54. null이 아닌, 빈 컬렉션이나 배열을 반환하라! null을 반환하는 경우 private final List<Cheese> cheesesInStock = ...; public List<Cheese> getCheeses() { return cheesesInStock.isEmpty() ? null : new A...

[Effective Java] Item53. 가변인수는 신중히 사용하라!

Item53. 가변인수는 신중히 사용하라! 가변인수 가변인수(varargs) 메서드는 명시한 타입의 인수를 0개 이상 받을 수 있다. 가변인수 메서드를 호출하면, 가장 먼저 인수의 개수와 길이가 같은 배열을 만들고, 인수들을 배열에 저장하여 가변인수 메서드에 전달한다. 간단한 활용 예시 public int sum(int... args...

[Effective Java] Item52. 다중정의는 신중히 사용하라!

Item52. 다중정의는 신중히 사용하라! 다중정의(overloading) 메서드 명은 같지만 매개변수의 개수, 타입, 순서를 다르게 하여 선언하는 것을 말한다. 메서드 실행 시점 오버로딩 public class CollectionClassifier { public static String classify(Set<?> s)...

[Effective Java] Item51. 메서드 시그니처를 신중히 설계하라!

Item51. 메서드 시그니처를 신중히 설계하라! Intro 이번 아이템에선 개별 아이템으로 두기 애매한 API 설계 요령들을 다룬다. 이 요령들을 잘 활용하면 배우기 쉽고, 쓰기 쉬우며, 오류 가능성이 적은 API를 만들 수 있을 것이다. 메서드 이름을 신중히 짓자 항상 표준 명명 규칙을 따라야 한다. 이해할 수 있고, 같...

[Effective Java] Item50. 적시에 방어적 복사본을 만들라!

Item50. 적시에 방어적 복사본을 만들라! Intro 자바는 안전한 언어다. 네이티브 메서드를 사용하지 않으니 C, C++ 처럼 메모리 충돌 오류가 나는 경우에 대해서 안전하다. 자바로 작성한 클래스는 시스템의 다른 부분에서 무슨 짓을 하든 그 불변식이 지켜진다. 방어적 프로그래밍 아무리 자바라 해도 다른 클래스로부터의 ...

[Effective Java] Item49. 매개변수가 유효한지 검사하라!

Item49. 매개변수가 유효한지 검사하라! Intro 메서드와 생성자 대부분은 입력 매개변수의 값이 특정 조건을 만족하기를 바란다. 이러한 제약은 반드시 문서화해야 하며 메서드 몸체가 시작되기 전에 검사해야 한다. 이는 “오류는 가능한 한 빨리 (발생한 곳에서) 잡아야 한다“는 일반 원칙의 한 사례이기도 하다. ...