이펙티브자바2 Ch02 모든 객체의 공통 메서드 step10: equals는 일반 규약을 지켜 재정의하라 equals를 재정의 하지 않아도 되는 경우 1st 각 인스턴스가 본질적으로 고유한 경우 - 값이 아닌 동작을 표현하는 클래스의 경우 - Thread 2nd 인스턴스의 논리적 동치성을 검사할 일이 없는 경우 3rd 상위 클래스에서 재정의한 equlas가 하위 클래스에서도 적용 되는 경우 - Set, Map, List의 경우 4th 클래스가 private 이거나, package-private여서 equals를 호출할 일이 없는 경우 5th 싱글턴을 보장하는 클래스 (인스턴스 통제 클래스, Enum인 경우) - 객체간 동등성, 동일성이 보장 equals를 재정의 하는 경우 지켜야 할 규약 equals를 재정의 해야 하는 경우는 객체 동일성을 확인해야 .. 2023. 4. 25. Ch03 클래스와 인터페이스 step15: 클래스와 멤버의 접근 권한을 최소화하라 어설프게 셜계된 컴포넌트와 잘 설계된 컴포넌트의 가장 큰 차이는 바로 클래스 내부 데이터와 내부 구현 정보를 얼마나 외부 컴포넌트로부터 잘 숨겼느냐다. 잘 설계된 컴포넌트는 모든 내부 구현을 완벽히 숨겨, 구현과 API를 깔끔히 분리한다. 정보 은닉의 장점은 정말 많다. 그중 대부분은 시스템을 구성하는 컴포넌트들을 서로 독립시켜 개발, 테스트, 최적화, 적용, 분석, 수정을 개별적으로 할 수 있게 해주는 것과 연관되어 있다. 장점 1st 시스템 개발 속도를 높인다. 여러 컴포넌트를 병렬로 개발할 수 있기 때문이다. 2nd 시스템 관리 비용을 낮춘다. 각 컴포넌트를 더 빨리 파악하여 디버깅할 수 있고, 다른 컴포넌트로 교체하는 부담도 적기 때문이다. 3.. 2023. 4. 25. 이전 1 다음