728x90
- 구현과 API 분리하는 정보은닉 장점
- 시스템 개발 속도를 높인다
- 인터페이스 설계시 사용하는 쪽과 지원하는 쪽이 동시에 개발이 가능하다.
- 시스템 관리 비용을 낮춘다
- 컴포넌트를 더 빨리 파악할 수 있기 떄문에, 인터페이스 위주로 빠르게 파악이 가능하다
- 소스프퉤어 재사용성을 높인다
- 모듈화가 잘되어 있따면 병목지점을 빠르게 찾아서 처리할 수 있다.
- 시스템 개발 난이도를 낮춘다
- 큰 시스템을 개발할때 작은 단위로 나눠서 구현하다보면 전체를 구현할 수 있다.
- 시스템 개발 속도를 높인다
- 모든 클래스와 멤버의 정급성을 가능한 한 좁혀야 한다.
- 톱레벨 클래스와 인터페이스에 pakage-private(default) 또는 public 을 쓸 수 있다.
- public 으로 선언하면 API가 되므로 하위 호환성을 유지하려면 계속 관리해야 한다.
- 패키지 외부에서 쓰지 않을 클래스나 인터페이스라면 pakage-private 로 선언하자.
- 한 클래스에서만 사용하는 pakage-private 클래스나 인터페이스는 해당 클래스에 private static 으로 중첩 시키자
- 한 클래스에서만 사용하니깐 굳이 나눌필요가 없다는 뜻 같다, 하지만 왜 static 키워드로 중첩 시키자 했을까? 그냥 private class 도 있는데..?
- 내부 private class 는 외부 클래스 인스턴스를참조하는 필드가 자동으로 생성된다.
- 내부 private static class 로 선언된 클래스는 중첩클래스이긴 하나, 남남과 같은 상태의 클래스다.(별개의 클래스라 봐도 무방함)
- 한 클래스에서만 사용하니깐 굳이 나눌필요가 없다는 뜻 같다, 하지만 왜 static 키워드로 중첩 시키자 했을까? 그냥 private class 도 있는데..?
- package-private 에서 protected 로 변경하지말자.상속받은 클래스에서도 사용가능하기에 범위가 아주 넓어진다.
- public 클래스의 인스턴스 필드는 되도록 public이 아니여야 한다(아이템16 에서 계속..)
- 클래스에서 public static final 필드의 경우 배열같은 참조가능한 객체로 제공해 주지말자 내부를 변경할 수 있기 때문이다.
728x90
'공부 > 이펙티브자바' 카테고리의 다른 글
[이펙티브자바]item 17.변경 가능성을 최소화하라 (0) | 2023.01.31 |
---|---|
[이펙티브자바]item 16.public 클래스에서는 public 필드가 아닌 접근자 메서드를 사용하라 (0) | 2023.01.31 |
[이펙티브자바]item14.Comparable을 구현할지 고려하라. (0) | 2023.01.19 |
[이펙티브자바]item13.clone 재정의는 주의해서 진행하라. (0) | 2023.01.18 |
[이펙티브자바]item12.toString을 항상 재정의하라. (0) | 2023.01.17 |
댓글