C++ 멤버 설계

멤버 변수와 멤버 함수를 객체 책임 단위로 묶기

멤버는 클래스 안에 들어 있다는 이유만으로 책임이 선명해지지 않는다. 상태를 바꾸는 함수, 관찰만 하는 함수, 클래스 전체 규칙을 지키는 함수를 분리해 책임을 읽는다.

01

상태 정의

멤버 변수는 클래스 책임을 수행하는 데 필요한 최소 데이터만 둔다.

파생 캐시 점검
02

변경 함수

상태를 바꾸는 함수는 전제 조건, 실패 조건, 변경 후 불변식을 명확히 한다.

명령 성격
03

관찰 함수

읽기 전용 함수는 const를 붙여 호출자가 부작용 없음을 믿게 한다.

논리적 const
04

공유 멤버

static 멤버는 객체 상태가 아니라 타입 단위 상태인지 확인한다.

동시성 고려
getter
내부 표현 노출 위험 참조를 그대로 돌려주면 외부에서 불변식을 깰 수 있다.
값/뷰 선택
setter
무조건 대입은 약한 캡슐화 의미 있는 명령 이름과 검증 로직이 더 낫다.
setAge보다 grow
const
API 사용 가능 범위 확대 const 객체와 임시 객체에서도 호출 가능한 관찰 함수가 된다.
mutable 남용 금지
static
this 포인터 없음 객체별 상태에 접근할 수 없고 초기화 순서 문제도 따져야 한다.
전역 상태 냄새

책임 · const 누락 · static 상태 점검

책임 함수가 클래스의 상태와 무관하면 free function이 더 적합한지 본다.
const 누락 상태를 바꾸지 않는 함수에 const가 빠져 호출 제약이 생기지 않았는지 확인한다.
static 상태 공유 데이터가 테스트 간 오염이나 데이터 레이스를 만들지 않는지 확인한다.