입력 고정
함수 결과가 매개변수와 명시된 의존성만으로 결정되도록 만든다.
deterministic같은 입력은 같은 출력을 만들고 외부 상태를 바꾸지 않는다는 계약이 테스트와 리팩터링의 기준이 된다.
함수 결과가 매개변수와 명시된 의존성만으로 결정되도록 만든다.
deterministic배열과 객체를 직접 바꾸지 않고 spread, map, filter로 새 구조를 만든다.
immutable updateAPI 호출, 로그, 저장소 변경은 순수 계산 바깥 경계로 밀어낸다.
effect 경계입력과 출력만 비교하면 테스트가 내부 구현에 덜 묶인다.
easy testconst next = users.map((u) =>
u.id === id ? { ...u, active: true } : u
);