책/Effective Java

책/Effective Java

[이펙티브 자바] 아이템 25: 톱레벨 클래스는 한 파일에 하나만 담으라

본문은 Effective Java를 읽고 간단하게 정리한 글입니다. 필요에 따라 생략/수정된 부분이 있을 수 있으며, 내용이 추후 변경될 수 있습니다. 요약 소스 파일 하나에 여러 톱레벨 클래스를 담으면 한 클래스를 여러 가지로 정의할 수 있으며, 컴파일 순서에 따라 결과가 달라질 수 있다 따라서 소스 파일 하나에는 반드시 톱레벨 클래스(혹은 톱레벨 인터페이스)를 하나만 담는다

책/Effective Java

[이펙티브 자바] 아이템 24: 멤버 클래스는 되도록 static으로 만들라

본문은 Effective Java를 읽고 간단하게 정리한 글입니다. 필요에 따라 생략/수정된 부분이 있을 수 있으며, 내용이 추후 변경될 수 있습니다. 선결론 중첩 클래스에는 네 가지가 있으며, 각각의 쓰임이 다르다 1)메서드 밖에서도 사용하거나 메서드 안에서 정의하기에 너무 길다면 멤버 클래스로 만든다 멤버 클래스의 1-1)인스턴스 각각이 바깥 인스턴스를 참조한다면 비정적으로, 1-2)그렇지 않다면(참조하지 않는다면) 정적으로 만든다 2)중첩 클래스가 한 메서드 안에서만 쓰이면서 그 인스턴스를 생성하는 지점이 단 한 곳이고, 2-1) 해당 타입으로 쓰기에 적합한 클래스나 인터페이스가 이미 있다면 익명 클래스로 만든다 2-2) 그렇지 않다면(없다면) 지역 클래스로 만든다 중첩 클래스 중첩 클래스(nest..

책/Effective Java

[이펙티브 자바] 아이템 23: 태그 달린 클래스보다는 클래스 계층구조를 활용하라

본문은 Effective Java를 읽고 간단하게 정리한 글입니다. 필요에 따라 생략/수정된 부분이 있을 수 있으며, 내용이 추후 변경될 수 있습니다. 선요약 새로운 클래스를 작성하는 데 태그 필드가 등장한다면 태그를 없애고 계층구조로 대체하는 방법을 생각해본다 기존 클래스가 태그 필드를 사용하고 있다면 계층구조로 리팩토링하는 것을 고민해본다 태그 달린 클래스 태그 달린 클래스는 두 가지 이상의 의미를 표현할 수 있으며, 그중 현재 표현하는 의미를 태그 값으로 알려주는 클래스를 의미한다. 태그 달린 클래스 Figure public class Figure { enum Shape { RECTANGLE, CIRCLE }; // 태그 필드 - 현재 모양을 나타낸다. final Shape shape; // 다음 ..

책/Effective Java

[이펙티브 자바] 아이템 22: 인터페이스는 타입을 정의하는 용도로만 사용하라

본문은 Effective Java를 읽고 간단하게 정리한 글입니다. 필요에 따라 생략/수정된 부분이 있을 수 있으며, 내용이 추후 변경될 수 있습니다. 선결론 인터페이스는 타입을 정의하는 용도로만 사용한다 따라서 상수를 공개하는 수단으로 인터페이스를 사용하면 안 된다 인터페이스의 목적 자신을 구현한 클래스의 인스턴스를 참조할 수 있는 타입 역할 즉, 자신의 인스턴스로 무엇을 할 수 있는지를 클라이언트에 얘기해주는 용도 상수 인터페이스 상수 인터페이스란 메서드 없이, 상수를 뜻하는 static final 필드로만 가득 찬 인터페이스 상수 인터페이스 안티패턴은 인터페이스를 잘못 사용한 예다 클래스 내부에서 사용하는 상수는 외부 인터페이스가 아니라 내부 구현에 해당하므로 상수 인터페이스를 구현하는 것은 내부 ..

책/Effective Java

[이펙티브 자바] 아이템 21: 인터페이스는 구현하는 쪽을 생각해 설계하라

본문은 Effective Java를 읽고 간단하게 정리한 글입니다. 필요에 따라 생략/수정된 부분이 있을 수 있으며, 내용이 추후 변경될 수 있습니다. 선결론 기존 인터페이스에 디폴트 메서드로 새 메서드를 추가하는 일은 꼭 필요한 경우가 아니면 피해야 한다 반면, 새로운 인터페이스를 만드는 경우엔 유용하다 인터페이스 설계 및 테스트의 중요성 자바 8부터 추가된 디폴트 메서드로 인해 기존 인터페이스에 메서드를 추가하는 것이 가능해졌다 디폴트 메서드는 컴파일에 성공하더라도 기존 구현체에 런타임 오류를 일으킬 수 있다 디폴트 메서드는 인터페이스로부터 메서드를 제거하거나 기존 메서드의 시그니처를 수정하는 용도가 아니다 이런 형태로 인터페이스를 변경하면 반드시 기존 클라이언트를 망가뜨리게 된다 따라서 필자는 설계..

코택
'책/Effective Java' 카테고리의 글 목록 (7 Page)