반응형
getter 없이 캡슐화하기
규칙 ) getter / setter 를 사용하지 말 것
getter 를 사용하면 캡슐화를 해제하고 불변속성을 전역적으로 만들게 된다.
따라서 예상치 못한 방식으로 객체를 수정할 수 있다.
또한 디미터 법칙 (.을 2번이상 사용하지 말아야 하는 법칙) 을 위배할 수 있고
코드를 절차지향적으로 설계할 가능성이 높아지므로 getter, setter 는 가급적 사용하지 말아야 한다.
간단한 데이터 캡슐화하기
규칙 ) 공통 접사를 사용하지 말 것
예를들어 유저의 나이 증가, 유저의 나이 조회, 유저의 이름 조회 기능을 만들어야 할 때 다음과 같이 만들 수 있다.
class Main {
public void increaseUserAge() {
}
public int getUserAge() {
}
public String getUserName() {
}
}
User 라는 접사가 계속 반복된다.
따라서 다음과 같이 User 클래스로 그룹화 할 수 있다.
class User {
public void increaseAge() {
}
public int getAge() {
}
public String getName() {
}
}
이렇게 클래스로 캡슐화하면 외부로 노출되지 않아도 될 데이터를 숨기면서 불변속성이 클래스 내에서 관리되게 할 수 있다는 장점이 있다.
유지보수도 쉬워진다.
변수와 메서드를 클래스로 옮기는 과정을 데이터 캡슐화
라고 한다.
순서에 존재하는 불변속성 제거
아래 순서도를 보자
1. 게임 세팅
2. 게임 실행
게임이 세팅이 된 뒤에 게임을 실행할 수 있다.
세팅이 되지 않은 상태에서 게임을 실행할 수 없다.
이처럼 무언가가 다른 것보다 먼저 호출되어야 할 때, 순서 불변속성
이라고 한다.
이런 순서 불변속성은 생성자에 코드를 옮겨넣어서 제거할 수 있다. (생성자는 객체가 생성될 때 맨 처음 실행되기 때문)
생성자를 통해 순서를 강제하는 이런 방법을 순서 강제화
라고 한다.
순서 강제화를 하면 개발자가 실수로 순서를 바꾸는 이슈를 방지할 수 있다.
정리
- getter, setter 사용 금지
- 공통 접사 사용 금지
- 순서 불변속성이 있다면, 클래스를 이용해 순서 강제화 하기
반응형
'개발 도서' 카테고리의 다른 글
Five Lines of Code - 4장. 타입 코드 처리하기 (0) | 2023.09.22 |
---|---|
Five Lines of Code - 3장. 긴 코드 조각내기 (0) | 2023.08.27 |
Five Lines of Code - 2장. 리팩터링 깊게 들여다보기 (0) | 2023.08.19 |
Five Lines of Code - 1장. 리팩터링 리팩터링하기 (0) | 2023.08.19 |
[이펙티브 자바] 아이템 2 - 생성자에 매개변수가 많다면 빌더를 고려하라 (0) | 2023.03.14 |
댓글