본문 바로가기

Effective Java

(2)
[item15] 클래스와 멤버의 접근 권한을 최소화하라 잘 설계된 컴포넌트란? 캡슐화가 얼마나 잘 되었는지. 노출되는 API와 실제 구현이 얼마나 잘 분리되었는지. 메시지를 주고 받는 두 컴포넌트가 서로의 내부 동작을 신경쓰지 않는지. 캡슐화를 잘 지켰을 때의 장점 서로의 구현을 몰라도 되기 때문에 병렬로 개발이 가능하며 개발 속도가 빨라진다. 잘 분리되어 있는 컴포넌트는 관리포인트가 작다. 디버깅도 빨리 할 수 있고 다른 컴포넌트로의 교체도 빠르게 할 수 있다. 잘 분리되어 있는 컴포넌트는 최적화도 그 컴포넌트만 하면 되기 때문에 좋다. (다른 컴포넌트에 영향을 주지 않고 해당 컴포넌트만 최적화할 수 있다.) 외부 컴포넌트에 종속되지 않기 때문에 재사용성이 높다. 전체 시스템이 완성되지 않아도 개별 컴포넌트를 검증할 수 있기 때문에 큰 시스템을 개발하는 난..
[item13] clone 재정의는 주의해서 진행하라 클래스에서 clone을 재정의 하기 위해서는 해당 클래스에 Cloneable 인터페이스를 상속받아 구현해야 한다. 그런데 clone 메소드는 Cloneable 인터페이스가 아닌 Object에 선언되어 있다. Cloneable 인터페이스에는 아무것도 선언되어 있지 않은 빈 인터페이스이다. 그렇다면 Cloneable 인터페이스의 역할은 무엇일까? Cloneable 인터페이스의 역할 Cloneable 인터페이스는 상속받은 클래스가 복제해도 되는 클래스임을 명시하는 믹스인 인터페이스이다. (단지, ‘clone에 의해 복사할 수 있다’ 라는 표시로서 사용되고 있다.) 믹스인이란 클래스가 본인의 기능 이외에 추가로 구현할 수 있는 자료형으로, 어떤 선택적 기능을 제공한다는 사실을 선언하기 위해 쓰인다. A라는 클래..