관리 메뉴

흰둥씨의 개발장

[함수형 코딩#5] 더 좋은 액션 만들기 본문

함수형 프로그래밍/쏙쏙 들어오는 함수형 코딩

[함수형 코딩#5] 더 좋은 액션 만들기

돈워리비해삐 2023. 6. 29. 22:52

리팩토링 =>  재사용 유지보수,테스트를 쉽게 하기 위해 하는 것 

0. 중복된 코드가 없을수록 GOOD

1. 암묵적 입력과 암묵적 출력은 적을수록 GOOD(계산 뿐 아니라 액션에도 적용되는 내용)
ㄴ 암묵적 입력 : 인자가 아닌 모든 입력 => 인자로 바꾸자 
ㄴ 암묵적 출력 : 리턴값이 아닌 모든 출력  => 리턴값으로 바꾸자

2. 함수를 작은 단위로, 한개의 함수가 1개의 일을 하는 것이 좋음 
ㄴ 재사용, 유지보수, 테스트 면에서 쉬워짐
ㄴ 카피-온-라이트 패턴을 빼내기 (아래 예시 참고)

//카피온 라이트를 빼내기 전
function add_item(cart, name, price) {
    let new_cart = cart.slice();             // 1. 배열 복사
  	new_cart.push({                      // 2. 복사본에 item 추가
    			name: name,          // 3. item 객체 만들기
    			price: price,
  				  });
  	return new_cart;                     // 4. 복사본 리턴
}
//카피 온 라이트를 빼낸 후 
// 위 함수에서 1, 3, 4번값은 카피온 라이트를 구현한 부분으로 분리하는 것이 좋음

function cartItem(name, price) { //item 객체 만들어서 리턴 
  return {
    name : name,
    price : price,
  };
}

function add_item(cart, item) { //배열 복사해서 복사본을 리턴 
  let new_cart = cart.slice();
  new_cart.push(item);
  return new_cart;
}

add_item(shopping_cart, cartItem("shoes", 3.45)) // add_item함수 호출