-
아이템16. public 클래스에서는 public 필드가 아닌 접근 메서드를 사용하라.Java/이펙티브 자바 2023. 8. 13. 11:59
핵심 정리
- 클라이언트 코드가 필드를 직접 사용하면 캡슐화의 장점을 제공하지 못한다.
- 필드를 변경하려면 API를 변경해야 한다.
- 필드에 접근할 때 부수 작업은 할 수 없다.
- paackage-private 클래스 또는 private 중첩 클래스라면 데이터 필드를 노출해도 문제가 없다.
완벽 공략
- p103, 아이템 67에서 설명하듯, 내부를 노출한 Dimesion 클래스의 심각한 성능문제는 오늘날까지도 해결되지 못했다.
public class DimensionExample { public static void main(String[] args) { Button button = new Button("hello button"); button.setBounds(0, 0, 20, 10); Dimension size = button.getSize(); System.out.println(size.height); System.out.println(size.width); doSomething(size); } private static void doSomething(Dimension dimension) { Dimension dimension1 = new Dimension(); dimension1.height = dimension.height; dimension1.width = dimension.width; } }
ㆍDimension 필드가 public으로 되어 있기 때문에 카피해서 써야함으로 성능문제가 발생한다. - 불필요한 인스턴스 생성
'Java > 이펙티브 자바' 카테고리의 다른 글
아이템18. 상속보다는 컴포지션을 사용하라 (0) 2023.08.23 아이템17. 변경 가능성을 최소화 하라. (0) 2023.08.15 아이템15. 클래스와 멤버의 접근 권한을 최소화하라 (0) 2023.06.27 아이템 14. Comparable을 구현할지 고민하라 (0) 2023.06.23 아이템13. clone 재정의는 주의해서 진행하라 (0) 2023.06.18