728x90
Java
- java는 단일 상속 방식의 객체 지향 언어이다.
- java의 메서드 안의 코드는 명령형(문장 지향) 방식으로 동작한다.
효과적인 java 코딩법?
- 코드는 단순히 효과적으로 작동하고 다른 사람이 쉽게 이해할 수 있기만 하면 되는게 아니다.
- 프로그램은 계속 수정할 수 있기 때문에, 구조가 수정하기 쉬워야한다.
- 처음부터 기능 T가 어떻게 개선될지까지 고려해 구현 방식을 선택하는 것이 좋다.
잘 작동하고, 다른 이가 쉽게 이해할 수 있고 미래의 수정과 개선 작업도 수월한 코드를 작성하는 것이 좋다.
- 단순함이 쉬움을 뜻하지는 않는다.
- 리팩토링의 핵심 목표는 시스템 구조 개선과 중복 제거이고, 이는 잘 설계된 API를 건너뛰고는 도달할 수 없다.
1장. 들어가기
핵심 규칙 : 명료성과 단순성
- 컴포넌트는 사용자를 놀라게 하는 동작을 해서는 안된다.
- 예측 가능해야한다.
- 컴포넌트는 가능한 한 작되, 너무 작아서는 안된다.
- 코드는 복사되는 것이 아닌 재사용되어야한다.
- 컴포넌트 사이의 의존성은 최소로 유지해아한다.
- 오류는 만들어지자마자 가능한 빨리 잡아야한다.
규칙을 맹신하지 말되, 어길때는 합당한 이유가 있어야한다.
=> 규칙을 배운 후 깨기!
Java의 타입
- 인터페이스, 클래스, 배열, 기본 타입(primitive)
- 기본 타입을 제외한 인터페이스, 클래스, 배열은 참조 타입이다.
- 애너테이션(annotation)은 인터페이스이다.
- enum은 클래스이다.
- 배열은 객체이므로 기본타입에 속하지 않는다.
클래스
- 필드, 메서드, 멤버 클래스, 멤버 인터페이스로 구성된다.
- 상속 = subclassing
- 인터페이스 상속 = 클래스가 인터페이스를 구현한다, 확장한다.
- package-private : 기본 접근제어자
접근제어자
- private : 같은 클래스
- default : 같은 패키지 = package-private
- protected : 같은 패키지 + 다른 패키지의 자식 클래스
- public : 같은 패키지 + 다른 패키지
패키지의 공개 API
- 모든 public 클래스와 인터페이스의 public 혹은 protected 멤버와 생성자로 구성된다.
protected 멤버와 생성자가 포함되는 이유 : protected는 상속 관계일 경우 외부 패키지에서도 접근이 가능하므로 포함한다.
추상 클래스에서 사용되기도 한다. 인스턴스화를 막고 하위 클래스에서 생성자를 호출(super())할때 사용한다.
728x90
'Java > effective java' 카테고리의 다른 글
[Effective Java] Item 5. 자원을 직접 명시하지 말고 의존 객체 주입(DI)을 사용하라. (0) | 2025.01.05 |
---|---|
[Effective Java] Item 4. 인스턴스화를 막으려거든 private 생성자를 사용하라. (0) | 2025.01.05 |
[Effective Java] Item 3. private 생성자나 열거 타입으로 싱글턴임을 보장하라. (0) | 2025.01.05 |
[Effective Java] Item 2. 생성자에 매개변수가 많다면 빌더를 고려하라. (0) | 2025.01.05 |
[Effective Java] Item 1. 생성자 대신 정적 팩터리 메서드를 고려하라. (0) | 2025.01.05 |