(Effective Java) 익명 클래스보다는 람다를 사용하라_람다와 스트림

람다를 왜
JDK 1.1에서는 함수객체를 만드는 주요 수단은 익명 클래스였다.


그러나 익명클래스 방식은 코드가 너무 길어 자바는 함수형 프로그래밍에 적합하지 않았다.
결국 이러한 문제로 이를 람다로 교체됨 (더욱 간결하게 표현할 수 있음)






람다는 이름이 없고 문서화도 못 한다. 따라서 코드 자체로 동작이 명확히 설명되지 않거나 코드 줄 수가 많아지면 람다를 쓰지 말아야 한다.
람다는 한 줄일때 가장 좋고 길어야 세 줄안에 끝내는게 가장 좋다. 세 줄을 넘어가면 가독성이 심하게 나빠진다.

람다의 시대가 열리며 익명클래스 -> 람다로 대체 되었지만, 람다는 함수형 인터페이스에서만 쓰인다.
예컨대 추상클래스의 인스턴스를 만들 때 람다를 쓸 수 없으니, 익명 클래스를 써여한다.

마지막으로 람다는 자신을 참조할 수 없다. this키워드는 바깥 인스턴스를 가르킨다.
람다를 직렬화하는 일은 극히 삼가야한다.


정리: 함수객체를 구현하기 위해 익명클래스를 도입, 그러나 코드가 길어지는 단점이 존재하여
이를 람다로 대체하기 시작함
그러나 람다를 사용하지 못하는 경우가 있는데
1. 자기 자신을 참조하는 this를 사용하는 경우
2. 코드길이가 너무 길어지는 경우 오히려 문서화를 할 수 없음
3. 직렬화를 하는 경우는 삼가야 한다.

댓글

이 블로그의 인기 게시물

(18장) WebSocekt과 STOMP를 사용하여 메시징하기

(네트워크)폴링방식 vs 롱 폴링방식

(ElasticSearch) 결과에서 순서 정렬