250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- DDD
- 이펙티브 자바
- mysql
- CleanCode
- vue.js
- java
- 자료구조
- 자바예외
- 클린코드
- 인덱스
- aop
- 인프런김영한
- 이펙티브자바
- 인프런백기선
- 알고리즘분석
- jpa
- 이팩티브 자바
- 기술면접
- 도메인 주도 개발 시작하기
- 네트워크
- 스프링부트와AWS로혼자구현하는웹서비스
- 자바스터디
- react
- AWS
- SQL쿡북
- MariaDB
- 혼공SQL
- AWS RDS
- 자바
- 알고리즘
Archives
- Today
- Total
기록이 힘이다.
[이펙티브 자바] 16. public 클래스에서는 public 필드가 아닌 접근자 메서드를 사용하라 본문
728x90
이처럼 퇴보한 클래스는 public이어서는 안 된다!
class Point{
public double x;
public double y;
}
캡슐화의 이점을 제공하지 못한다. 모두 private으로 바꾸고 public 접근자(getter)를 추가한다.
package effectivejava.chapter4.item16;
// 코드 16-2 접근자와 변경자(mutator) 메서드를 활용해 데이터를 캡슐화한다. (102쪽)
class Point {
private double x;
private double y;
public Point(double x, double y) {
this.x = x;
this.y = y;
}
public double getX() { return x; }
public double getY() { return y; }
public void setX(double x) { this.x = x; }
public void setY(double y) { this.y = y; }
}
패키지 바깥에서 접근할 수 있는 클래스라면 접근자를 제공
package-private 클래스 혹은 private 중첩 클래스라면 데이터 필드를 노출한다 해도 하등의 문제가 없다.
불변 필드를 노출한 public 클래스 - 과연 좋은가?
package effectivejava.chapter4.item16;
// 코드 16-3 불변 필드를 노출한 public 클래스 - 과연 좋은가? (103-104쪽)
public final class Time {
private static final int HOURS_PER_DAY = 24;
private static final int MINUTES_PER_HOUR = 60;
public final int hour;
public final int minute;
public Time(int hour, int minute) {
if (hour < 0 || hour >= HOURS_PER_DAY)
throw new IllegalArgumentException("Hour: " + hour);
if (minute < 0 || minute >= MINUTES_PER_HOUR)
throw new IllegalArgumentException("Min: " + minute);
this.hour = hour;
this.minute = minute;
}
// 나머지 코드 생략
}
각 인스턴스가 유효한 시간을 표현함을 보장한다.
'JAVA' 카테고리의 다른 글
[이펙티브 자바] 6장 열거타입과 애너테이션 (0) | 2023.03.29 |
---|---|
과제) 자바의 Record를 공부하세요. (0) | 2023.03.26 |
[이펙티브 자바] 15. 클래스와 멤버의 접근 권한을 최소화하라. (0) | 2023.03.21 |
[이펙티브 자바] 14. Comparable을 구현할지 고려하라 (2) | 2023.03.20 |
[이펙티브 자바] 13. clone 재정의는 주의해서 진행하라 (0) | 2023.03.20 |