- Published on
2024.02.06
[함수형 코딩] - 10. 일급 함수 Ⅰ
코드의 냄새: 함수 이름에 있는 암묵적 인자
함수 본문에서 사용하는 값이 이름에 나타난다면 리팩터링으로 해결한다.
리팩터링: 암묵적 인자를 드러내기
함수 이름에 있는 암묵적 인자는 함수에 인자를 추가하여 드러낸다,
리팩터링: 함수 본문을 콜백으로 바꾸끼
함수 본문을 콜백으로 바꾸어 고차 함수로 만든다.
함수 이름에 있는 암묵적 인자
함수 이름에 있는 일부가 본문에 하드코딩되어 인자처럼 동작하고 있다.
비슷한 동작을 하는 비슷한 이름의 코드들이 많아짐.
암묵적 인자를 드러내기
암묵적 인자를 명시적인 인자로 바꾼다.
- 함수 이름의 암묵적 인자를 확인한다.
- 명시적인 인자를 추가한다.
- 본문의 하드 코딩된 값을 새 인자로 바꾼다.
- 함수를 호출하는 곳을 고친다.
🙄 필드라는 용어를 많이 쓰는데 검색해보니 대부분이 자바나 C# 글이 나왔다. 객체의 데이터와 관련해서 많이 사용하는 것 같은데, 정확한 용례를 알면 앞으로 변수명이나 함수명을 지을 때 요긴할 것 같다.
일급인 것와 일급이 아닌 것을 구별하기
- 함수에 인자로 넘길 수 있고, 함수의 리턴값으로 받을 수 있을 것
- 변수에 넣을 수 있고 배열이나 객체의 항목으로 넣을 수 있을 것
이것을 충족할 수 있는 값을 일급이라고 한다.
함수를 인자로 받거나 리턴값으로 함수를 리턴하는 것은 고차 함수
자바스크립트나 리액트 책을 읽으면 일급함수라는 말이 자주 나오는데 그럼 자바스크립트에 이급함수도 있나? 싶기도 하고,
수학에서의 일급함수와 관련이 있나 싶어서 뤼튼한테 수학의 일급함수와의 연관성과 어원에 대해 물었다.
아무튼 그렇대요
보다 실무적인 내용을 담고 있는 챕터였다. 최근 일하면서 리팩터링을 했던 코드들이 많이 생각났다. 이번 예제는 리팩터링이 필요한 코드에 대한 예시와 접근법을 많이 다루었고, 다음 챕터에서 보다 자세한 예제를 통해 실무에 적용하기 좋은 방법들을 소개해주지 않을까 싶다.