함수 합성 설계: 작고, 순수하며, 조합 가능한
저자는 견고하고 유지보수 가능한 소프트웨어를 만들기 위해 작고, 순수하며, 조합 가능한 코드 단위인 컴파운딩 함수를 설계할 것을 옹호합니다. 순수성은 근본적입니다. 순수 함수는 부작용 없이 동일한 입력에 대해 일관되게 동일한 출력을 반환하므로 신뢰할 수 있고 쉽게 테스트할 수 있습니다. 함수는 작고 단일 목적을 가져야 하며, 복잡한 작업을 관리 가능한 단위로 분해하여 명확성과 재사용성을 향상시킵니다. 이러한 작고 순수한 함수들을 연결할 때, 종종 파이프라인을 사용하여 명확한 작업 흐름을 만드는 방식으로 조합이 자연스럽게 이루어집니다.데이터 흐름을 염두에 두고 함수를 설계하면 필요한 것을 정확하게 받아들이도록 보장하여 조합성을 높입니다. 커링은 부분 적용을 허용하여 일반 함수에서 특화된 함수를 생성함으로써 재사용성을 향상시킵니다. 컴파운딩 함수의 중요한 이점은 테스트 간소화입니다. 순수하고 작은 함수는 최소한의 설정과 모킹이 필요하지 않기 때문입니다. 조합성을 추구하는 동안, 함수가 단순히 다른 호출을 래핑하는 것이 아니라 명확한 개념적 가치를 제공하도록 하여 과도한 추상화를 피하는 것이 중요합니다.컴파운딩으로의 리팩토링은 테스트에 의해 안내되어, 불순한 함수를 순수한 함수로 점진적으로 변환하고, 논리적 블록을 추출하고, 파이프라인으로 다시 조합하는 것을 포함합니다. 이러한 규율은 가독성, 유지보수성 및 디버깅 개선을 포함하여 개발 전반에 걸쳐 상당한 이점을 제공합니다. 함수가 신뢰할 수 있는 빌딩 블록으로 설계되면, 새로운 기능은 처음부터 시작하는 것이 아니라 조립하는 것처럼 느껴집니다. 하나의 복잡한 함수를 리팩토링하는 것으로 작게 시작하면 좋은 디자인의 놀랍고 성장하는 긍정적인 영향을 보여줍니다.