개발로그

Item 83 - 지연 초기화는 신중히 사용하라

지연 초기화 (lazy initialization) 🐢 필드의 초기화 시점을 그 값이 처음 필요할 때까지 늦추는 기법 정적 필드와 인스턴스 필드에 모두 사용가능 주로 최적화 용도로 쓰이지만, 클래스와 인스턴스 초기화 때 발생하는 위험한 순환 문제를 해결하는 효과도 있다. 지연 초기화는 필요할 때까지는 하지 말라 🙅 클래스나 인...

Item 82 - 스레드 안전성 수준을 문서화하라

여러 스레드가 하나의 메서드를 동시에 호출할 때 그 메서드가 어떻게 동작하느냐는 클라이언트와 클래스 간의 중요한 계약과도 같다. 만약 API 문서에 아무런 언급이 없다면 사용자는 나름의 가정을 하고 사용해야 한다. 만약 이 가정이 틀린다면 프로그램은 심각한 오류로 이어질 수 있다. 😰 API 문서에 synchronized 한정자 synchro...

Item 76 - 가능한 한 실패 원자적으로 만들라

실패 원자성(Failure Atomicity) 호출된 메소드가 실패하더라도 해당 객체는 메서드 호출 전 상태를 유지해야 한다. 위와 같은 특성을 실패 원자성이라고 한다. 실패 원자성은 시스템의 안정성, 성능, 신뢰성을 향상시키는데 필수적이다. 메서드 실패 원자적으로 만드는 방법 방법 1 : 불변 객체로 설계하기 - item17...

Item 74 - 메서드가 던지는 모든 예외를 문서화하라

메서드가 던지는 예외는 그 메서드를 올바로 사용하는데 아주 중요한 정보다. 따라서 각 메서드가 던지는 예외 하나하나를 문서화하는데 충분한 시간을 쏟아야한다. - item 56 검사 예외는 따로따로 선언하고, 반드시 문서화하자. 검사 예외는 항상 따로따로 선언하고, 각 예외가 발생하는 상황을 자바독의 @throws 태그를 사용하여 정확히 문...

Item 72 - 표준 예외를 사용하라

코드를 재사용하면 이점이 많듯이 예외도 마찬가지다. 자바 라이브러리는 대부분 API에서 쓰기에 충분한 예외를 제공한다. 표준 예외의 장점 👍 표준이기 때문에 다른 개발자가 코드를 보고 예외의 의미를 이해하기 쉬워진다. 예외 클래스 수가 적을수록 메모리 사용량과 클래스를 적재하는 시간을 아낄 수 있다. 직렬화에도 용이하다. 가장 많...

Item 71 - 필요 없는 검사 예외 사용은 피하라

검사 예외를 제대로 활용하면 프로그램의 안정성과 질을 높일 수 있다. 검사 예외를 과하게 사용하면 🤔 검사 예외는 호출자가 처리해야 하는 강제성을 지니기 때문에 부담을 준다. try-catch로 처리하거나 throws를 던져 문제를 전파해야 한다. 검사 예외를 던지는 메서드는 스트림 안에서 직접 사용할 수...