이야기박스
Effective java 3/E - item 15~25 본문
반응형
Item 15. 클래스 멤버의 접근 권한을 최소화하라
[캡슐화(정보 은닉)]
--> 소프트웨어 설계의 근간
* parnas72
==> "On the Criteria To Be Used in Decomposing Systems into Modules"
- 개발 속도 상승
- 관리 비용 낮춤
- 성능 최적화
- 재사용성
- 시스템 제작 난이도
* 돌고 돌아서 서로 관련됨...
기본 원칙 ==> 모든 클래스와 멤버의 접근성을 가능한 한 좁혀야 한다.
package-private을 쓰는 이유?
--> 내부 모듈이 되어 다음 릴리스에 쉽게 업데이트 가능
--> public으로 한다면, 하위 호환을 계속 신경써주어야 함
public class의 public 필드는 스레드 세이프 하지 못함
가변 배열의 경우
Item 16. public 클래스에서는 public 필드가 아닌 접근자 메서드를 사용하라.
- public class에서는 절대로 가변인자를 public으로 제공하지 말 것
- private-package 혹은 private 클래스라면 데이터 필드를 노출해도 상관 없음
--> package-priavte class를 참조하는 클래스 또한 내부 동작일 뿐이므로 설계만 잘하자
* effective java에서 소개하는 안좋은 사례
Item 17. 변경 가능성을 최소하하라
string --> permanent 영역 ==> heap 영역으로 넘어옴 (java 7부터)
Item 18. 상속보다는 컴포지션을 사용하라
포워딩 --> interface 함수를 구현하는 것
Item 19. 상속을 고려해 설계하고 문서화하라. 그러지 않았다면 상속을 금지하라
상속할때는 문서화를 잘 해 둬라..
Item 20. 추상 클래스보다는 인터페이스를 우선하라
공통부분 많을때 --> 추상클래스
각자 구현할때 --> 인터페이스
Item 21. 인터페이스는 구현하는 쪽을 생각해 설계하라
default method 추가 가능 ==> 다음 릴리즈에서 추가된 기능을 default로 제공해주는 것
Item 22. 인터페이스는 타입을 정의하는 용도로만 사용하라
interface
- 변수에는 final이 붙음 // method에는 public으로
Item 23. 태그 달린 클래스보다는 클래스 계층구조를 활용하라
abstract 클래스로 표현하고 코드레벨에서 명확하게 구현할 수 있도록 지원할 것
Item 24. 멤버 클래스는 되도록 static으로 만들라
익명 클래스 --> template callback pattern
Item 25. 톱레벨 클래스는 한 파일에 하나만 담으라
파일 하나에 하나의 클래스만 담아라
이렇게 하지 않으면 컴파일 시간에 따라서 결과가 달라질 수 있음
반응형
'Programming Language > JAVA' 카테고리의 다른 글
Effective java 3/E - 열거타입 & 어노테이션 (item 34~41) (0) | 2018.12.13 |
---|---|
Effective java 3/E - 제네릭 (item 26~33) (1) | 2018.12.05 |
Effective java 3/E - item 10~14 (0) | 2018.11.29 |
Effective java 3/E - item 1~9 (0) | 2018.11.16 |
Effective java 3/E - study 시작 (0) | 2018.11.16 |