effective java
-
[Effective Java] 10장 : 예외책/Effective Java 3판 2024. 2. 14. 01:08
아이템 69 - 예외는 진짜 예외 상황에만 사용하라 예외는 예외 상황에 쓸 목적이므로 JVM에서 그렇게 빠르게 처리해주지 않음 예외를 흐름 제어용으로 사용하지 말자 API는 클라이언트가 정상 제어 흐름에서 예외를 사용할 일이 없어야함 아이템 70 - 복구할 수 있는 상황에는 검사 예외를, 프로그래밍 오류에는 런타임 예외를 사용하라 문제 상황 : 검사 예외, 런타입 예외, 에러 검사 예외는 호출하는 쪽에서 복구하리라 여겨지는 상황에 사용 → 복구 가능 런타임 예외는 프로그래밍 오류를 나타낼 때 사용 → 복구 불가능 우리가 구현하는 비검사 throwable은 모두 RuntimeException의 하위 클래스여야함 Error 클래스를 상속해 하위 클래스를 만들지 말자 확실하지 않으면 그냥 비검사 예외라고 보자..
-
[Effective Java] 8장 : 메서드책/Effective Java 3판 2024. 2. 14. 00:55
아이템 49 - 매개변수가 유효한지 검사하라 함수의 맨 처음에 가급적 매개변수의 유효성을 검사하는 것이 좋다 → null 체크, index 음수 체크 등 중간 계산 과정에서 자연스럽게 나오는 것은 굳이 할 필요는 없다. public, protected 메서드는 매개변수가 잘못됐을 때 던지는 예외를 문서화해야함 → @throws 아이템 50 - 적시에 방어적 복사본을 만들라 final class Period { private final Date start; private final Date end; public Period(Date start, Date end) { if (start.compareTo(end) > 0) { throw new IllegalArgumentException(); } this.st..
-
[Effective Java] 4장 : 클래스와 인터페이스책/Effective Java 3판 2024. 2. 14. 00:19
아이템 15 - 클래스와 멤버의 접근 권한을 최소화해라 정보 은닉은 장점이 많다. 접근 제한자 (private, protected, public)를 제대로 활용하는 것이 정보 은닉의 핵심 기본 원칙 : 모든 클래스와 멤버의 접근성을 가능한 한 좁혀야 한다. 톱레벨 클래스와 인터페이스에 부여할 수 있는 접근 수준 - package-private, public public : 공개 API가 됨, package-private : 해당 패키지 안에서만 이용 패키지 외부에서 쓸 이유가 없다면 package-private으로 → public으로 두면 API가 되므로 하위 호환을 위해 영원히 관리해줘야함 한 클래스에서만 사용하는 package-private 톱레벨 클래스나 인터페이스 → 사용하는 클래스 안에 priv..
-
[Effective Java] 2장 : 객체 생성과 파괴책/Effective Java 3판 2024. 2. 13. 23:27
아이템 1 - 생성자 대신 정적 팩토리 메서드를 고려하라 장점 이름을 가질 수 있음 호출될 때마다 인스턴스를 생성하지 않아도 됨 반환 타입의 하위 타입 객체를 반환할 수 있음 입력 매개변수에 따라 다른 클래스를 반환할 수 있음 정적 팩토리 메서드를 작성하는 시점에 반환할 객체의 클래스가 존재하지 않아도 됨 단점 상속 불가능 프로그래머가 찾기 어려움 public static void main(String[] args) { MyClass myClass = MyClass.getInstance(); MyClass myClass1 = MyClass.getInstance(); myClass.print("hello world"); myClass1.print("sdfsdf"); System.out.println(myC..