강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

jeongbaebang_dev님의 프로필 이미지
jeongbaebang_dev

작성한 질문수

함수형 프로그래밍과 JavaScript ES6+ 응용편

DOM을 다루는 고차 함수

함수 추출에 대한 고민

작성

·

270

1

안녕하세요 선생님 질문이 있습니다.

재사용성이 낮은 함수도 함수화를 시킬 수 있다면 함수로 묶고,
합성을 해서 사용하는 게 더 나은 판단인가요
개발을 하다 보면 어느 정도 수준까지 계층을 만들어야 할지 고민이 됩니다.

예를 들어 두 개의 배열 인자를 받고 새로운 배열로 평가 후 값을 누적한다는 함수가 있다고 할 때,
const compare = (a, b, f) =>
_.go(_.range(a.length === b.length ? a.length : 0), _.map(f(a, b)), _.reduce(_.add));

-> 사용예: compare([1, 2, 3], [4, 5, 6], (a, b) => i => a[i] + b[i]); // 출력값: 21

재사용할 가능성이 낮다고 판단이 되는 함수에도 특정 부분을 함수로 추출하여 작업하는 방식으로 진행한다면
const accrue = (a, b, f) => _.pipe(_.map(f(a, b)), _.reduce(_.add));
const compare = (a, b, f) => _.go(_.range(a.length === b.length ? a.length : 0), accrue(a, b, f));

-> 사용예: let acc = accrue([1, 2, 3], [4, 5, 6], (a, b) => i => a[i] + b[i]); acc([0,1,2]); // 출력값: 21

(위의 함수는 충분히 재사용성이 높습니다 그냥 임시로 예를 들었습니다 ^^)

계속해서 함수로 추출하고 추출해서 작업하는 것이 장기적으로 봤을 때 좋은 결과를 가져갈까요?
물론 어느 정도 재사용이 가능한 부분은 함수로 추출하는 것이 맞는다고 판단이 되지만,
충분히 익명 함수를 사용하여 작업을 해도 되는 상황을
모든 경우를 함수로 추출하는 것이 과연 올바를까 고민이 되어 질문드립니다.

답변 1

2

MDU 유인동님의 프로필 이미지
MDU 유인동
지식공유자

익명 함수 자체가 해당하는 일을 잘 표현한다면 익명 함수를 사용하고,

자주 사용될거 같으면서 실수를 할 가능성이 있는 경우라면 재사용하도록 하시면 어떨까요?

jeongbaebang_dev님의 프로필 이미지
jeongbaebang_dev

작성한 질문수

질문하기