이번 포스팅은 이펙티브 자바 아이템 중 "public 클래스에서는 public 필드가 아닌 접근자 메서드를 사용하라"
에 대한 내용입니다.
아래 코드처럼, 필드에 public 접근지시자를 사용하면 어떤 점이 좋지 않을지 생각해볼 기회가 됐으면 좋겠습니다!
class Point{
public double x;
public double y;
//...
}
package-private 클래스 또는 private 중첩 클래스라면 데이터 필드를 노출해도 문제가 없습니다.
- 왜냐하면, 사용하는 곳이 한정돼 있고, 외부에 공개가 되지 않기 때문입니다.
- 그럼에도
public 필드를 사용하는 것은 지양해야한다고 생각합니다.
처음에 할당한 1과 2가 출력을 보장하려면 calculate에서 x, y를 카피하여 사용해야 합니다.
public class Test{
public static void main(String[] args){
Point point = new Point();
point.x = 1;
point.y = 2;
calculate(point);
System.out.println(point.x);
System.out.println(point.y);
}
public static void calculate(Point point){
Point localPoint = new Point();
localPoint.x = point.x;
localPoint.y = point.y;
// localPoint를 사용하는 어떤 로직...
}
}
reference
좋은 글 감사합니다.