이펙티브 자바 #item16 public class에서는 public 필드가 아닌 접근자 메서드를 활용해라

임현규·2023년 1월 17일
0

이펙티브 자바

목록 보기
16/47

나쁜 예(필드를 public으로 줌)

public class Point {
	public double x;
    public double y;
}

위의 코드는 내부 구현을 외부 API로 그대로 사용하고 있다. 이것의 문제점은 내부 구현과 외부 API가 합쳐져 있기 때문에 나중에 코드 수정이 쉽지 않다는 점이다.

내부 구현은 언제든 수정 가능하고 외부로 노출되는 API는 좋은 방법이 아니다. 외부 API가 수정되면 외부 API를 참조하는 모든 컴포넌트가 수정되야 하기 때문이다.

좋은 방법은 접근자를 통해 분리하는 방법이다.

좋은 예(접근자 메서드를 이용해 분리)

public class Point {
	private int y;
    private int x;
    
    public double getY() {
    	return y;
    }
    
    public double getX() {
    	return x;
    }
    
    public void setY(double y) {
    	this.y = y;
    }
    
    public void setX(double x) {
    	this.x = x;
    }
}

이렇게 하면 좋은 점은 다음과 같다.

  • 객체의 수정을 원하는 경우 유효성 검증을 수행할 수 있다.
  • 내부 객체가 double 외에 다른 값으로 수정되더라도 내부 구현이기에 수정하는데 큰 문제가 없다.
profile
엘 프사이 콩그루

0개의 댓글