Function (함수)
자바스크립트는 함수 지향형 프로그래밍이고 최근 들어서는 객체 지향의 장점들이 추가되는 중이다.
함수 지향이란?
프로그래밍 패러다임의 한 종류로써, 순수 함수를 조합하고 함수를 일급 객체로써 사용하여 프로그래밍하는 방식
프로그래밍 패러다임이란?
개발자에게 프로그래머로서의 관점을 갖게 하고 결정하는 역할 -> 개발 방법 중 하나
명령형 vs. 선언형
명령형
- 절차 지향: 순서를 중요시. 컴퓨터의 처리구조와 비슷하고 속도가 빠르다(C, Cobol 등)
- 객체 지향: 객체(집단)의 상호작용을 중요시. 유지 보수에 용이(Java, C++), 단일책임의 원칙(집단으로 나눠 관리하기 때문에 문제 발생한 집단만 유지보수하면 된다), 단, 절차지향보단 느리다는 단점이 있다
선언형
어떻게 할 것인가보다는 무엇을 할 것인가가 중요하다.
함수 지향: 순수 함수를 조합하고 프로그래밍하는 방식(Javascript)
함수 지향 프로그래밍 관련 용어
- 불변성 : 함수 밖에서 데이터의 변형을 일으켜서는 안된다.
- 클로저 : 부모 함수가 실행 종료 되어도 참조할 수 있는 내부 함수는 기억 된다.
- 순수 함수 : 입력 값에만 의존하고, 부수 효과는 연산에 영향을 미치지 않는다.
- 일급객체 함수 : 함수를 입력 값(파라미터, 매개변수, 인자)으로 사용할 수 있고, 반환값(출력)으로 사용할 수 있다.
- 유지 관리 가능성 : 외부 효과에 의존되지 않으면 해당 부분만 수정하면 되므로 유지보수가 쉽다
- 모듈화 : 함수를 분리하여 재사용 및 관리가 용이하도록 구성해야 한다.
- 부수 효과 : 함수 밖에서 함수의 연산에 영향을 끼치면 안된다. (외부 효과, side effect)
- 참조 투명성 : 동일한 값에는 항상 동일한 반환 값을 가진다.