✏️3.22 데이터 클래스
데이터 클래스
데이터 필드와 게터/세터 메서드로만 구성된 클래스
📍 레코드 캡슐화하기: 데이터 저장 용도로만 쓰이다 보니 다른 클래스가 너무 깊이까지 함부로 다룰 때, 이런 클래스에 public 필드가 있는 경우 숨기자
📍 세터 제거하기: 변경하면 안되는 필드는 접근을 막는다.
📍 함수 옮기기: 다른 클래스에서 데이터 클래스의 게터나 세터를 사용하는 메서드를 찾아 그 메서드를 데이터 클래스로 옮길 수 있는지 살펴본다.
📍 함수 추출하기: 메서드를 통째로 옮기기 어려운 경우 옮길 수 있는 부분만 별도 메서드로 뽑아낸다.
데이터 클래스는 필요한 동작이 엉뚱한 곳에 정의돼 있다는 신호일 수 있다. 이런 경우라면 클라이언트 코드를 데이터 클래스로 옮기기만 해도 개선된다.
◽️ 예외
다른 함수를 호출해 얻은 결과 레코드(데이터 객체)로는 동작 코드를 넣을 이유가 없다. 단계 쪼개기의 겨로가로 나온 중간 데이터 구조가 있다. 이런 데이터 구조는 불변이다. 불변 필드는 굳이 캡슐화 할 필요가 없고, 불변 데이터로부터 나오는 정보는 게터를 통하지 않고 그냥 필드 자체를 공개해도 된다.
Last updated