더 좋은 액션 만들기

쏙쏙 들어오는 함수형 코딩 Ch05

액션은 필요하다. 모든 액션을 없앨 수는 없다.

액션에서 암묵적 입/출력을 줄여 설계를 개선하자

암묵적 입력과 출력은 적을수록 좋다

계산 뿐만 아니라, 액션에서도

암묵적 입/출력 줄이는 방법

계산 분류하기

의미 있는 계층별로 계산 분류

엉켜있는 코드 풀기

설계는 엉켜있는 코드를 푸는 것

addItem()을 분리해 더 좋은 설계 만들기

기존코드
function addItem(cart, name, price) {
  // 1. 배열 복사
  const newCart = cart.slice();
  // 2. item 객체 생성
  // 3. 복사본에 item 추가
  newCart.push({ name, price });
  // 4. 복사본 리턴
  return newCart;
}
item에 관한 코드를 별도 함수로 분리
function makeCartItem(name, price) {
  return { name, price };
}

function addItem(cart, item) {
  const newCart = cart.slice();
  newCart.push(item);
  return newCart;
}
copy-on-write 패턴 빼내기
// `copy-on-write` 분리
function addElementLast(array, elem) {
  const newArray = array.slice();
  newArray.push(elem);
  return newArray;
}

function makeCartItem(name, price) {
  return { name, price };
}

function addItem(cart, item) {
  return addElementLast(cart, item);
}
계산 분류 다시하기
#develop #fp