- 함수형 프로그래밍의 목적
- 최대한 계산을 하는 함수를 많이 만들어내는 것
- (질문) 그럼 객체지향에서의 멤버 변수를 수정하는 것은?
- 객체 지향에서도 멤버 변수를 건드리는 것은 액션임
- 다만 여기에도 함수형 프로그래밍을 적용해서, 특정 로직을 설계할 때 계산을 많이 빼자
- 객체지향과 함수형 프로그래밍을 같이 쓸 수 있음. 독립적인 개념이 아님.
- 함수의 입력과 출력
- 함수에 명시적 입력과 출력만 있다면 -> 계산
- 함수에 하나 이상의 암묵적 입력/출력이 있다면 -> 액션
-
명시적 입력: 함수의 매개변수
명시적 출력: 되받아치기 값
암묵적 입력: 전역 변수, 객체 내부의 멤버 변수
암묵적 출력: 콘솔 출력, 전역/멤버 변수에 값 대입시
- 함수의 재사용성을 높이려면 계산 함수여야 함
- 재사용할 수 있는 함수는 메모리나, CPU 자원을 많이 사용하는 경우가 있음. 하지만 일반적인 상황에서는 크게 신경 쓰지 않아도 될 정도(예를 들어, 장바구니 리스트를 복사하는 경우가 있음. 장바구니가 수천, 수만 개가 일반적으로 되지는 않기 때문) 해당 문제를 인지만 하되, 크게 신경 쓰지는 않는 것이 좋아 보임
- 함수에 하나 이상의 암묵적 입/출력이 있다면 -> 액션
이때 액션에서도 최대한 암묵적 입/출력을 줄이는 것이 좋음 - 액션/계산함수는 최대한 한 가지 역할만 하도록 분리하는 것이 좋다. 그리고 그거 생각보다 어렵다.