이펙티브 자바

JAVA

[이펙티브자바] 열거 타입과 애너테이션

item34. int 상수 대신 열거 타입을 사용하라int 상수 패턴public static final int APPLE_FUJI = 0;public static final int APPLE_PIPPIN = 1;public static final int APPLE_GRANNY_SMITH = 2;public static final int ORANGE_NAVEL = 0;public static final int ORANGE_TEMPLE = 1;public static final int ORANGE_BLOOD = 2;특정 경우를 상수 값으로 치환하여 표현하는 방식이다.int 상수 패턴의 단점타입 안전을 보장할 방법 x, 표현력도 안 좋음네임스페이스가 없기에 동일한 접두어가 반복됨오렌지와 사과를 대체해도 == ..

JAVA

[이펙티브자바] 제네릭

item26.로 타입은 사용하지 말라클래스 혹은 인터페이스 선언에 타입 매개변수가 쓰이면 이를 제네릭 타입이라고 한다.제네릭 타입은 일련의 매개변수화 타입을 정의한다.제네릭 타입을 정의하면 그에 딸린 raw type을 정의한다.raw type은 제네릭 타입에서 타입 매개변수를 사용하지 않은 것 ex) List, Set// 제네릭을 지원하기 전엔 컬렉션을 아래와 같이 선언private final Collection stamps = ...;stamps.add(new Coin(...));for (Iterator it = stamps.iterator(); i.hasNext();) { Stamp stamp = (Stamp) i.next(); // ClassCastException stamp.cancel();}..

JAVA

[이펙티브 자바] 클래스와 인터페이스

item15. 클래스와 멤버의 접근 권한을 최소화하라내부 데이터와 내부 구현 정보를 외부로부터 얼마나 잘 숨겼는지가 중요하다정보은닉, 캡슐화라고 함시스템을 구성하는 컴포넌트를 독립시켜 개발, 테스트, 최적화, 적용, 분석, 수정이 개별적으로 가능해야 함장점컴포넌트 간 의존성 x → 독립적인 병렬 개발이 가능 → 개발 속도 증가컴포넌트별 디버깅이 가능 → 관리 비용이 절약컴포넌트별 최적화가 가능 → 성능 최적화 적용이 쉬움컴포넌트 간 의존성 x → 재사용 가능컴포넌트별 테스트 가능 → 제작 난이도 낮아짐컴포넌트 간 의존성을 없애는 것의 핵심이 접근 제한자임 → 가능하면 가장 낮은 접근 수준을 유지private: 멤버를 선언한 톱레벨 클래스에서만 접근 가능package-private: 멤버가 소속된 패키지 ..

JAVA

[이펙티브 자바] 모든 객체의 공통 메서드

item10. equals는 일반 규약을 지켜 재정의하라 equals() 메서드는 객체의 내용이 동일한지 논리적 동치성을 확인하는 메서드이다.equals를 구현하지 않아야 할 때각 인스턴스가 본질적으로 고유할 때인스턴스의 논리적 동치성을 검사할 일이 없을 때상위 클래스에서 재정의한 equals()가 하위 클래스에서도 문제없이 이용 가능할 때equals를 구현해요 할 때상위 클래스에 equals()를 재사용할 수 없고, 객체 간의 논리적 동치성을 구현해야 할 때주로 Integer, String과 같은 값 클래스의 경우.. 등등equals() 메서드의 일반 규약null-아님 : null 이 아닌 모든 참조 값 x에 대해 x.equals(null)은 false이다.반사성 : x.equals(x)는 true이다..

JAVA

[이펙티브 자바] 객체 생성과 파괴

오늘은 이펙티브 자바를 오랜만에 다시 복습하고 중요한 부분만 간단하게 정리할 예정이다. item1. 생성자 대신 정적 팩토리 메서드를 고려하라.객체 생성을 할 때 생성자가 아닌 정적 팩토리 메서드를 객체 생성 용도로 쓰는 것은 경우에 따라 좋다.장점 1: 생성자가 이름을 가질 수 있다.예를 들면 Integer.parseInt()는 정적 팩토리 메서드이다.이름에서 무엇을 의미하는지 파악하기 쉬움 → 의도가 명확함장점 2: 매 호출 시 인스턴스를 새로 생성할 필요가 없다.public final class Boolean implements java.io.Serializable, Comparable{ /** * The {@code B..

javajoha
'이펙티브 자바' 태그의 글 목록