25일차
고차 함수는 다음과 같은 특징과 목적을 갖는다.
함수를 반환하는 함수.
반복적인 코드를 제거한다.
var saveUserDataWithLogging = warpLogging(saveUserData);
saveUserData => 원래 동작
↓ 고차 함수로 전달
warpLogging => 추가동작
↓ 새로운 함수 리턴
saveUserDataWithLogging => 두가지 일을 하는 새로운 함수
기본틀
function wrappingFunction(inputFunction){
return function(args){
_; //inputFunction 전 실행
inputFunction(args)
_; //inputFunction 후 실행
}
}
사용
const newFunc = wrappingFunction(funcA)
newFunc(args)
<287p>
고차 함수로 프로그램을 만들면 더 일반적으로 만들 수 있다.
마치 복잡한 퍼즐을 푸는것 같고 똑똑해지는 느낌을 받지만 좋은 엔지니어링은 퍼즐을 푸는 것이 아닙니다
집중해야 하는 것은 효과적으로 문제를 해결하고 있는가이다.
반복적인 처리를 고차함수로 처리하는 것은 일반화에 큰 도움이 되고 적극 활용해야 한다.
어떤 방법이 좋은가?
코드가 더 읽기 쉬운가?
많은 중복을 없앨 수 있는가?
코드가 하는 일이 무엇인지 쉽게 알 수 있나?
해당 내용을 놓치면 안된다.
능숙하게 쓸 줄 알아야 하지만 더 좋은 코드를 만드는데 사용해야 한다.
최근 Contract Event Handler를 작성하면서 고차함수를 적극 활용했다. 코드는 짧아졌지만 콜백함수에서 동일한 함수를 호출해야 하는 일이 있어 가독성은 좀 떨어진다.
eventListener를 통해 새로운 eventListener를 생성해야 하기 때문에 재귀형태로 구현이될 수 밖에 없었다.
콜백 형태로 코드를 작성해서 콜백지옥;이다.
빨리 읽고 빨리 개선하고 싶다.