2021.12.20
함수형
으로 코드를 짜는 것은 설계 트레이드오프, 재사용할 수 있는 여러 빌딩블록, 그리고 다른 여러 가지의 통찰력과 연결된다.텍스트 파일을 읽고, 가장 많이 사용된 단어들을 찾고, 그 단어들과 빈도를 정렬된 목록으로 출력하라.
반복문 {const lowercaseWord = word.toLowercase();if (!NON_WORDS.contains(lowercaseWord)) {if (!wordMap.has(lowercaseWord)) {wordMap.set(lowercaseWord, 1)} else {wordMap.set(lowercaseWord, wordMap.get(lowercaseWord) + 1)}}}
배열.map((w) => w.toLowercase()).filter((w) => !NON_WORDS.contains(w)).forEach((w) => wordMap.set(lowercaseWord, (wordMap.get(lowercaseWord) || 0) + 1));
성능
을 명료함
과 맞바꾸었다.map
, filter
와 같은 고계함수를 통해 추상화의 단계를 높여 문제를 더욱 명료하게 볼 수 있다.레거시 코드 활용 전략
의 저자인 마이클 페더스는 함수형과 객체지향형 추상화의 차이에 대해 아래와 같이 말하였다.객체지향 프로그래밍은 움직이는 부분을 캡슐화하여 코드 이해를 돕고, 함수형 프로그래밍은 움직이는 부분을 최소화하여 코드 이해를 돕는다.
움직이는 부분
을 아예 제거하는 데 주력한다.