- Published on
2024.02.14
[함수형 코딩] - 11. 일급 함수 Ⅱ
이것만 알면 나도 함수형 프로그래머 😎👨💻😵
- 콜백 함수로 분리한다.
- 카피를 만든다.
- 카피에 작업을 한다.
- 결과(카피)를 리턴한다!
궁금한 점 🙄🤔
카피 온 라이트 원칙을 지키기 위한 리팩터링은 어디까지 이뤄져야 할까?
리팩터링 전에 짧은 코드로 이루어진 하나의 함수가 리팩터링 후 길어진 코드와 두 개의 함수가 되었다. 이것으로 카피 온 라이트 원칙을 지킨 코드를 만들었다고 하는데, 이러한 카피 온 라이트 동작은 메모리도 더 잡아먹고 속도도 느려진다고 한다. 불변성을 지킨다는 장점이 있지만 생각보다 더 많은 시간과 작업이 들어가는데 모든 코드를 불변성 원칙을 지켜서 만들 수는 없을 것 같다는 생각이 들어 어느 정도 기준이 있어야 된다고 생각한다. 코드의 불변성을 지키는 것은 당연히 좋은 점이라고 생각하지만, 동적 언어와 정적 언어의 차이처럼 하나의 원칙을 지키기 위한 작업에는 장단점이 있고, 어느 하나가 무조건 좋다고 할 수 없다고 생각한다. 그런 점에서 카피 온 라이트 원칙을 지키기 위한 리팩터링 작업을 결정짓는 데에 어느 정도 기준이 필요하다고 생각한다.If문이나 try cath 같이 반복되는 함수를 고차함수로 만들어 관리하거나 마찬가지로 자주 쓰는 메서드 등을 따로 만들어 중복 코드를 없애는 것도 익숙해지면 편할 것 같다. 특히 catch는 정말...
그런데 이러한 부분에서 궁금한 것이 효율인데, 언어 기능의 직접 호출과, 이렇게 함수로 분리해서 사용할 경우 참조하는 곳에서 import를 하고 함수를 실행하는 등 과정이 필요한데 체감되는 점은 없을 것 같지만 이렇게 사용하는 점이 동작상 효율 혹은 비효율 적인 점은 없는지가 궁금해졌다.
함수 성능 측정하기index.ts
를 통한 관리처럼 조금의 효율 감소가 있다 하더라도 편리하다면 충분히 감수할만하다고 생각한다. (실제로 체감되는 효율 감소 같은 것은 없고, 압도적으로 편하고 보기 좋기 때문)