Cooper's devlog

[TIL] 2021.01.18 본문

TIL

[TIL] 2021.01.18

cooper_dev 2021. 1. 18. 21:46

[함수형 인터페이스 시작하기]

 원래 예전부터 문제를 접할 때, 설명이 짧고 내용이 없어보이는 것이 어려운 문제라고 했다. 오늘이 이 예를 들기 참 좋은 날인 것 같다. 처음 미션을 받았을 때는 stream과 공통된 부분을 클래스 분리해서 상속을 받아 처리하면 끝날 것 같다는 생각을 했다. 내가 예상한 내용을 모두 구현했다. 빨리 끝냈다는 기분과 함께 점심을 먹으려 가려고 하던 도중 각자 어떻게 코드를 구현했는지 이야기가 나왔다. 그런데 생각해보니 함수형 프로그래밍에 대한 정의가 함수를 매개인자로 받아서 로직을 처리하는 것이 아닌가에 대한 이야기가 나왔다. 그 내용을 듣고 함수형 인터페이스를 사용해서 구현을 해야겠다는 것을 다시 한번 깨달았다.

 

 이전에 함수형 인터페이스를 많이 사용한 경험이 없었다. 실제 사례들을 접한 일이 많이 없어 개념책에서 사용한 내용이 거의 전부다. 그리고 추가적인 개념이 들어왔다. '순수함수'이다. 순수함수는 간단히 말해서 계산 절차를 표현할 뿐인 함수를 일컫는 말이다. 그러므로 함수 외부의 값이나 객체 참조하지 않아 참조 투명성을 가지고 부작용이 없다고 한다.

 아직 함수형 인터페이스가 익숙하지 않은 상황에서 순수함수의 개념을 적용하기란 쉽지 않았다.

 

 처음 시도했던 방법은 현재 분리한 클래스와 함수형 인터페이스를 적용해 원하는 결과값을 도출하려고 했다. 그러나 우선적으로 완전수와 소수 판별 클래스는 분리되어 있어 함께 결과를 출력하는데 어려움이 있을 것 같았다. 그런데 결국 숫자를 통해 결과 값을 얻어내는 과정이기 때문에 굳이 클래스 분리한 객체를 이용하지 말자는 결론을 내렸다.

 현재도 아직까지 미션2를 진행하고 있다. 아직 갈길이 멀지만 함수형 인터페이스만을 사용해서 한번 미션2를 제출해봐야겠다. 오늘은 함수형 인터페이스를 원없이 쓰는 날이다.

 

 

[함수형 프로그래밍]

함수가 객체처럼 변수나 함수의 인자, 리터럴하게 다룰 수 있는 것.

 

[불변성]

  • 심볼의 값이 변경되지 않는다

[순수함수]

  • 순수 함수(pure function)
    • 부수효과없는 함수
    • 외부의 상태변경하지 않는 함수
    • 참조투명성을 가짐(외부의 값을 참조하거나 의존적으로 동작X)
  • 부수효과(side effect)
    • 외부상태변경하는 것
    • 또는 함수로 들어온 인자의 상태를 직접 변경하는 것.

 

'TIL' 카테고리의 다른 글

[TIL] 2021.01.20 - bitmask  (0) 2021.01.21
[TIL] 2021.01.19 - Closure, Pure Function, HOF  (1) 2021.01.19
[TIL] 2021.01.15  (0) 2021.01.17
[TIL]2021.01.14  (0) 2021.01.16
[TIL] 2021.01.13  (0) 2021.01.13
Comments