Replies: 2 comments 2 replies
-
자바에서 다뤄지는 함수형 프로그래밍의 꽃인 Java SE 8 - 2014년 3월 18일 발표되고 부터 자바는 함수형 프로그래밍이 사용 가능 해졌습니다. JavaScript, Scala, Haskell등의 언어처럼 완벽하게 함수형 프로그래밍을 타깃으로한 언어와는 특성이 다르지만 이는 의구심을 가지기에 충분했습니다. 바로 해당 주제는 생각보다 깊이 생각해야하는 분야였고, 지금의 제가 가진 개발에 관련된 지식에서는 명확하게 정리하기가 쉽지 않다고 생각이 들었습니다. 좋은 레퍼런스를 글쓴이들의 관점에 따라 참조하며 알게된 결론은 시대의 흐름에 의해 프로그래밍의 생태계가 변화했고, 이 변화에 맞춰 자바도 발전했다 정도로 요약해 볼 수 있는것 같습니다. 마지막으로 바뀐 프로그래밍의 생태계 중 핵심 되는 내용은 보다 깊은 내용은 아래의 참조 내용을 참조해 보시면 좋을 것 같습니다.
|
Beta Was this translation helpful? Give feedback.
-
이펙티브자바 앞에 공부했던게 가물가물해서 개인적으로 다시 보고있는데, |
Beta Was this translation helpful? Give feedback.
-
아이템 42. 익명 클래스보다는 람다를 사용하라
자바의 함수 타입 표현의 문제점?
자바스크립트의 일급 함수?
일급 시민 (first class citizen)
일급 객체
: 객체를 일급 시민으로 취급한다는 것
일급 함수 (first class function)
: 함수를 일급 시민으로 취급한다는 것
자바스크립트의 함수를 인수로 전달하는 예시 (일급 함수)
자바에서의 일급 함수?
자바에서 함수를 일급 함수처럼 사용하기 위한 방법
1. 메서드를 하나 가진 객체를 이용한다.
위 방식의 문제점
해결책
2. 이전에 자바에서 함수 타입을 표현할 때 추상 메서드를 하나만 담은 인터페이스(드물게는 추상 클래스)를 사용했음
이전 멜론 예시를 추상클래스로 리팩토링 해보자
익명 클래스의 문제점
해결책
3. 익명 클래스보다는 람다를 사용
함수형 인터페이스 (Functional Interface)
타입을 명시해야 코드가 더 명확한 경우 혹은 직접 명시해야하는 경우를 제외하고는 람다의 모든 매개변수 타입은 생략하자
익명 클래스를 활용하여 리팩토링한 Melon 필터 코드를 람다를 이용하여 리팩토링 해보자
- intellJ IDE 에서도 익명 클래스를 람다로 변환하기를 추천하고 있다.
더 나아가서
주의 사항
따라서 코드 자체로 동작이 명확히 설명되지 않거나 코드 줄 수가 많아진다면 람다를 사용하지 말아야 함!!
람다 사용의 기준
람다 그 이후
아이템 43 람다보다는 메서드 참조를 사용하라
라는 주제를 참고하길 바람정리
Reference
코딩 개념 잡는 자바 코딩 문제집, 길벗, [앵겔 레너드]
Beta Was this translation helpful? Give feedback.
All reactions