class, constructor, method, private #field로 상태 불변식을 객체 안에 묶을 때 읽기 쉽습니다.
OOP와 FP 선택 기준
JavaScript는 class/prototype과 map/filter/reduce를 함께 씁니다. 상태를 객체에 캡슐화할지, 변환을 순수 함수로 조합할지 결정합니다.
01this
02#field
03pure
04reduce
map/filter/reduce처럼 입력을 새 값으로 바꾸고 side effect를 밖으로 밀 때 테스트가 쉽습니다.
여러 함수가 같은 객체를 mutate하면 변경 순서 버그가 나므로 spread나 Object.freeze를 검토합니다.
method를 콜백으로 넘겨 this가 사라지거나 reducer가 원본 배열을 바꾸면 설계를 다시 나눕니다.