부수효과
부수효과(Side Effect)
부수효과를 왜 분리해야할까?
부수효과를 최소화
// 1부터 100까지 수를 더하는 로직이 명령형(어떻게)방식으로 구체적으로 작성되어 복잡하고 이해하기 어렵다.
function sum_1_to_100() {
let sum = 0;
for (let i=1; i<= 100; i++){
sum += i;
}
return sum;
}
// 각각의 동작을 함수로 분리하고 추상화시킴으로써 코드를 더 이해하기 쉽고 예측 가능하도록 리팩토링됨
// loop와 range는 한 번만 만들어두면 재사용 가능
const loop = (fn,acc,list) => {
if(list.length === 0) return acc;
const [head, ...tail] = list;
return loop(fn, fn(acc,head), tail);
}
const range = (start, end) => Array.from(
{length: end - start + 1},
(_,index) => index + start
);
const plus = (a,b) => a + b;
// 함수 합성을 이용해서 선언형 방식으로 코드를 작성하게되면 코드가 무슨 동작을 하는지 파악하기 쉬워진다.
console.log(loop(plus, 0, range(1,100)) //5050효과를 안전하게 추상화하기
Last updated