class · prototype · pure function 비교

OOP와 FP 선택 기준

JavaScript는 class/prototype과 map/filter/reduce를 함께 씁니다. 상태를 객체에 캡슐화할지, 변환을 순수 함수로 조합할지 결정합니다.

설계 축
01this 02#field 03pure 04reduce
OOP

class, constructor, method, private #field로 상태 불변식을 객체 안에 묶을 때 읽기 쉽습니다.

FP

map/filter/reduce처럼 입력을 새 값으로 바꾸고 side effect를 밖으로 밀 때 테스트가 쉽습니다.

State

여러 함수가 같은 객체를 mutate하면 변경 순서 버그가 나므로 spread나 Object.freeze를 검토합니다.

Failure

method를 콜백으로 넘겨 this가 사라지거나 reducer가 원본 배열을 바꾸면 설계를 다시 나눕니다.