코드의 냄새 : 함수 이름에 있는 암묵적 인자

<aside> 💡 함수 이름에 있는 암묵적 인자이다.

</aside>

암묵적인 인자를 드러내기 (리팩토링)


[
{},
{},
{},
]

// 객체를 필드명에 따라 최신화 시켜주는 함수
function setFieldByName(cart, name, field, value){
	const item = cart[name];
	// item = shoes: { name: 'shoes', price: 10 }
	// 객체에 기존 필드가 있으면 수정, 없으면 동적으로 필드 추가된다.
	const newItem = objectSet(item, field, value);
	// 객체가 최신화 된다.
	const newCart = objectSet(cart, name, newItem);
	return newCart;
}

cart = setFieldByName(cart, "shoe", 'price', 13)
cart = setFieldByName(cart, "shoe", 'quantity', 3)
cart = setFieldByName(cart, "shoe", 'shipping', 0)
cart = setFieldByName(cart, "shoe", 'tax', 2.34)

<aside> 💡 식으로 쓸 수 있는 값을 “일급”이라고 한다. 혹은 변수에 담을 수 있는 것은 “일급”이라고 할 수 있다.

</aside>

일급이 아닌 것을 일급으로 바꾸는 작업을 해보자 🤔