고계함수
일급함수
커링과부분적용
재귀와 꼬리 재귀 최적화
멱등성
순수함수와 참조 투명서
불변성과 영속적 자료구조, 메모제이션
1. 높은 표현력을 통해 불필요한 코드를 줄일수 있다.
2. 함수형 프로그래밍 언어군은 프로그래밍 언어론의 최신 연구 결과를 반영하고 있다.
1. Lambda
익명 함수 내부의 변수는 불변하거나 실직적으로 불변해야하는 제약이 있다 -> 배열을 쓰면 회피 가능
익명 함수는 Checked Exception을 던질 수 없어서 반드시 내부에 Try - Catch 문을 써줄 수밖에 없다
Exception을 던지는 FunctionallInterface를 직접 정의하여 회피 가능
2. Currying
커리 함수 만들면 어느 함수나 커링 가능
3.Stream
Sream은 실질적으로 List 와 동일하나, 지연 평가를 적용하여 무한의 개념을 이용할수 있다
4.CompletedFuture
퓨처 : 소비자 API
특정 시점에 값이 도달했는지 알 수있다
했다면 값을 얻을수 있다
프로미스 : 생산자 API
아직 완료되지 않을 계산을 임의로 중지 할수 있다
특정한 값을 임의로 반환할 수 있다
-> CompletdFuture는 프로미스 이다.
그러나 싱글 스레드여서 레이스 컨디션 자체가 존재하지 않은 자바스크립트에 프로미스가 굉장히 유용한 것과 달리,
자바에서는 공유 상태에 잘못 접근하면 위험 할 수 있는 모델이다.
5.Optional
Optional은 값이 존재하거나 존재하지 않음을 나타내는데, 이를 Exception 대신에 활용할 수 있다,
Exception의 종류를 알아야 할 경우 Either(Result) 타입을 쓸 수 있으나 자바에는 없음
일반적으로 생성자에서 Optional을 통해 null check 및 추가적인 validation을 하여 Exception을 발생 시킬수 있다.
하지만 대신 Exception을 발생시키지 않고 팩토리 메소드를 통해 Optional 타입으로 반환 할 수도 있다.
-> 반환 타입이 일정하므로 예외 처리 없이 일관성 있게 코드를 짤 수 있다.
단 모든 예외처리를 Optional로 대신 하는 것은 좋지 않다.
가령 0 으로 나눌때 ArithmenticException을 발생시키지 않기 위해 Optional<Number>를 반활 경우,
if 문으로 0을 확인하는 것 이상의 비용이 발생한다.
6. 삼항 연산자
삼항 연사자는 구문이 아니라 표현식 이기 때문에 특정한 명령을 싱행하는 것이 아니라 값을 반환하므로,
if문 대신에 쓰면 짧게 쓸수 있다.
www.youtube.com/watch?v=ii5hnSCE6No&list=PLgXGHBqgT2TvpJ_p9L_yZKPifgdBOzdVH&index=85
'Back-end > ETC' 카테고리의 다른 글
Github 관리 (0) | 2021.07.12 |
---|---|
API vs LIbrary vs Framework (0) | 2021.05.07 |
빌드 용어 (0) | 2021.05.04 |
Web Server VS WAS (0) | 2021.05.03 |
Git Bracnches (0) | 2021.04.26 |