이펙티브 자바 (3/E)
저자

조슈아블로크

저자:조슈아블로크
카네기멜론대학교교수다.그전에는구글에서최고자바아키텍트,선마이크로시스템즈에서디스팅귀시드엔지니어,Transarc에서선임시스템설계자로일했다.JDK5.0언어개선과자바컬렉션프레임워크를포함해수많은자바플랫폼기능의설계와구현을주도했다.컬럼비아대학교에서컴퓨터과학학사학위를,카네기멜론대학교에서컴퓨터과학박사학위를받았다.

역자:이복연
고려대학교컴퓨터학과를졸업하고삼성소프트웨어멤버십을거쳐,삼성전자소프트웨어센터와미디어솔루션센터에서자바가상머신,바다플랫폼,챗온메신저서비스등을개발했다.주업무외에분산빌드,지속적통합,앱수명주기관리도구,애자일도입등동료개발자들에게실질적인도움을주는일에적극적이었다.그후창업전선에뛰어들어소셜서비스,금융거래프레임워크등을개발하다가,무슨바람이불어서인지책을만들겠다며기획·편집자(자칭WisdomCompiler)로변신했다.

목차

1장들어가기

2장객체생성과파괴
아이템1.생성자대신정적팩터리메서드를고려하라
아이템2.생성자에매개변수가많다면빌더를고려하라
아이템3.private생성자나열거타입으로싱글턴임을보증하라
아이템4.인스턴스화를막으려거든private생성자를사용하라
아이템5.자원을직접명시하지말고의존객체주입을사용하라
아이템6.불필요한객체생성을피하라
아이템7.다쓴객체참조를해제하라
아이템8.finalizer와cleaner사용을피하라
아이템9.try-finally보다는try-with-resources를사용하라

3장모든객체의공통메서드
아이템10.equals는일반규약을지켜재정의하라
아이템11.equals를재정의하려거든hashCode도재정의하라
아이템12.toString을항상재정의하라
아이템13.clone재정의는주의해서진행하라
아이템14.Comparable을구현할지고려하라

4장클래스와인터페이스
아이템15.클래스와멤버의접근권한을최소화하라
아이템16.public클래스에서는public필드가아닌접근자메서드를사용하라
아이템17.변경가능성을최소화하라
아이템18.상속보다는컴포지션을사용하라
아이템19.상속을고려해설계하고문서화하라.그러지않았다면상속을금지하라
아이템20.추상클래스보다는인터페이스를우선하라
아이템21.인터페이스는구현하는쪽을생각해설계하라
아이템22.인터페이스는타입을정의하는용도로만사용하라
아이템23.태그달린클래스보다는클래스계층구조를활용하라
아이템24.멤버클래스는되도록static으로만들라
아이템25.톱레벨클래스는한파일에하나만담으라

5장제네릭
아이템26.로타입은사용하지말라
아이템27.비검사경고를제거하라
아이템28.배열보다는리스트를사용하라
아이템29.이왕이면제네릭타입으로만들라
아이템30.이왕이면제네릭메서드로만들라
아이템31.한정적와일드카드를사용해API유연성을높이라
아이템32.제네릭과가변인수를함께쓸때는신중하라
아이템33.타입안전이종컨테이너를고려하라

6장열거타입과애너테이션
아이템34.int상수대신열거타입을사용하라
아이템35.ordinal메서드대신인스턴스필드를사용하라
아이템36.비트필드대신EnumSet을사용하라
아이템37.ordinal인덱싱대신EnumMap을사용하라
아이템38.확장할수있는열거타입이필요하면인터페이스를사용하라
아이템39.명명패턴보다애너테이션을사용하라
아이템40.@Override애너테이션을일관되게사용하라
아이템41.정의하려는것이타입이라면마커인터페이스를사용하라

7장람다와스트림
아이템42.익명클래스보다는람다를사용하라
아이템43.람다보다는메서드참조를사용하라
아이템44.표준함수형인터페이스를사용하라
아이템45.스트림은주의해서사용하라
아이템46.스트림에서는부작용없는함수를사용하라
아이템47.반환타입으로는스트림보다컬렉션이낫다
아이템48.스트림병렬화는주의해서적용하라

8장메서드
아이템49.매개변수가유효한지검사하라
아이템50.적시에방어적복사본을만들라
아이템51.메서드시그니처를신중히설계하라
아이템52.다중정의는신중히사용하라
아이템53.가변인수는신중히사용하라
아이템54.null이아닌,빈컬렉션이나배열을반환하라
아이템55.옵셔널반환은신중히하라
아이템56.공개된API요소에는항상문서화주석을작성하라

9장일반적인프로그래밍원칙
아이템57.지역변수의범위를최소화하라
아이템58.전통적인for문보다는for-each문을사용하라
아이템59.라이브러리를익히고사용하라
아이템60.정확한답이필요하다면float와double은피하라
아이템61.박싱된기본타입보다는기본타입을사용하라
아이템62.다른타입이적절하다면문자열사용을피하라
아이템63.문자열연결은느리니주의하라
아이템64.객체는인터페이스를사용해참조하라
아이템65.리플렉션보다는인터페이스를사용하라
아이템66.네이티브메서드는신중히사용하라
아이템67.최적화는신중히하라
아이템68.일반적으로통용되는명명규칙을따르라

10장예외
아이템69.예외는진짜예외상황에만사용하라
아이템70.복구할수있는상황에는검사예외를,프로그래밍오류에는런타임예외를사용하라
아이템71.필요없는검사예외사용은피하라
아이템72.표준예외를사용하라
아이템73.추상화수준에맞는예외를던지라
아이템74.메서드가던지는모든예외를문서화하라
아이템75.예외의상세메시지에실패관련정보를담으라
아이템76.가능한한실패원자적으로만들라
아이템77.예외를무시하지말라

11장동시성
아이템78.공유중인가변데이터는동기화해사용하라
아이템79.과도한동기화는피하라
아이템80.스레드보다는실행자,태스크,스트림을애용하라
아이템81.wait와notify보다는동시성유틸리티를애용하라
아이템82.스레드안전성수준을문서화하라
아이템83.지연초기화는신중히사용하라
아이템84.프로그램의동작을스레드스케줄러에기대지말라

12장직렬화
아이템85.자바직렬화의대안을찾으라
아이템86.Serializable을구현할지는신중히결정하라
아이템87.커스텀직렬화형태를고려해보라
아이템88.readObject메서드는방어적으로작성하라
아이템89.인스턴스수를통제해야한다면readResolve보다는열거타입을사용하라
아이템90.직렬화된인스턴스대신직렬화프록시사용을검토하라