Member design

멤버는 데이터와 행동의 책임을 같은 곳에 묶는다

멤버 변수는 상태를 보관하고, 멤버 함수는 그 상태를 안전하게 읽고 바꾸는 유일한 통로가 됩니다.

state

멤버 변수

객체가 계속 기억해야 하는 값만 남기고 계산 가능한 값은 함수로 둡니다.

action

멤버 함수

상태 변경 전후의 조건을 한 함수 안에서 검증합니다.

const

읽기 전용

상태를 바꾸지 않는 함수는 const로 표시해 호출 가능 범위를 넓힙니다.

static

공유 책임

객체별 값이 아닌 클래스 전체의 규칙과 카운터에만 사용합니다.

배치 기준

값과 그 값을 바꾸는 함수가 멀리 떨어져 있으면 캡슐화가 약해집니다.

리팩터 기준

외부에서 멤버 변수를 직접 바꾸는 코드가 늘어나면 setter보다 행동 함수를 먼저 고려합니다.

클래스 설계는 데이터를 감추는 데서 끝나지 않고, 그 데이터를 바꾸는 이유와 순서까지 이름 붙입니다.