변경 가능한 데이터 구조를 가진 언어에서 불변성 유지하기
모든 동작을 불변형으로 만들 수 있는지
장바구니에 대한 동작
- 제품 개수 가져오기
- 제품 이름으로 제품 가져오기
- 제품 추가하기 ← 구현함
- 제품 이름으로 제품 빼기
- 제품 이름으로 제품 구매수량 바꾸기 ← 중첩된 데이터에 대한 동작
제품에 대한 동작
데이터 구조 안에 데이터가 있는 경우 데이터가 중첩되었다고 이야기한다
배열 안에 객체가 있거나, 객체 안에 객체가 있는 등
중첩된 데이터에 대한 불변 동작은 어떻게 구현할까?
동작을 읽기, 쓰기 또는 둘 다로 분류하기
- 읽기 동작
- 데이터를 바꾸지 않고 정보를 꺼내기만 하는 동작
- 쓰기 동작
값이 바뀌면 그 값이 어디서 사용될 지 모르기 때문에 값이 가급적 바뀌지 않도록 원칙을 세우는 것이 중요하다
장바구니 동작