앞서서, 추상화를 통해서 계층구조를 명확하게 하고, 함수형 코딩으로 한 발자국 나아간다고 얘기했다. 그렇다면 추상화라는 것은 무엇인가?
함수형 코딩에서의 추상화는, 공통된것을 묶어서 일반적인 형태로 나타내는 것을 의미한다.
공통된 것을 묶어서 일반적인 형태로 나타내는 것? 좀 더 자세히 설명하자면, 1+5, 2+5, 3+5를 해주는 함수가 각각 있을경우, 1,2,3과 같은 특정 인자를 변수로 받아줘서 x+5의 형태의 함수로 쓰는 것을 의미한다.
매우 간단한 형태같지만, 이것은 단순 변수에서 끝나는게 아니라, key-value, 배열, 반복문, 특정 함수 등등 조금이라도 반복되는 부분이 있을 경우, 그것을 변수화시키고, 일반화 시켜서, 어느 경우에서도 쓸 수 있게 만드는 것을 의미한다.
이러한 추상화를 하기위해서는 일단 2가지를 신경써야된다.
- 암묵적 인자 드러내기
- 함수 본문을 콜백으로 바꾸기
나는 이것을 실제 코드에 적용하는 과정에서 중요한 사실을 느끼게된다. 결국 공통된 부분을 변수화 시키고, 그것을 재사용하고, 그 재사용 된것들 사이에서도 다시 변수화시키고, 그렇게 일급함수는 고차함수가 된다. 마치 퍼즐을 푸는것 처럼, 공통된 부분들을 깔끔하게 하나로 통합해 버리는 것이다. 하지만, 그럴수록 코드는 복잡해지고, 의미를 파악하기 힘들어졌던거같다. 그렇기때문에 적절한 수준에서 멈추고, 유지보수의 측면의 고려해야된다.
그리고 이러한 함수의 추상화 관련한 도구로는 이미 여러가지가 알려져있으며, 그러한 형태를 참고해서 코드를 작성하는것도 도움이 될 것이다.
'프로그래밍 > golang' 카테고리의 다른 글
aws api signature 구현 (0) | 2022.11.07 |
---|---|
함수형 코딩4 - 타임라인 관리하기 (2) | 2022.09.23 |
함수형 코딩2 - 계층화, 추상화 (0) | 2022.09.22 |
함수형 코딩1 - 부수효과, 액션, 계산, 데이터 (0) | 2022.09.22 |
golang에서 inheritance structure (0) | 2022.08.24 |