Junior Backend Developer

람다식

이번 포스팅에선 JAVA에서의 람다식에 대해 알아보고자 한다.


람다식이란(Lambda Expression) 무엇인가

  • 람다식이란 함수를 하나의 식(Expression)으로 표현한 것이다.
  • 함수를 람다식으로 표현하면 메서드의 이름이 필요 없기 때문에 람다식은 익명 함수(Anonymous Function)의 한 종류라고 볼 수 있다.
  • 익명함수란 함수의 이름이 없는 함수로, 익명함수들은 모두 일급 객체이다. 이는 변수처럼 사용가능하면 매개 변수로 전달이 가능하다는 등의 특징을 갖고 있다.


선언 및 사용

// 기존의 함수 선언 방식
public String hello(){
    return "Hello World";
}

// 람다 방식
() -> "Hello World";

이렇게 람다식을 사용하면 불필요한 코드를 줄이고 가독성을 높일 수 있다고들 하는데 나는 이게 과연 가독성이 좋은지는 잘 모르겠다.. 아무튼, 함수형 인터페이스의 인스턴스를 생성하여 함수를 변수처럼 선언하는 람다식에서는 메서드의 이름이 불필요하다고 여겨져서 이를 사용하지 않는다. 대신 컴파일러가 문맥을 살펴 타입을 추론한다.


람다식의 특징

  • 람다식 내에서 사용되는 지역변수는 final이 붙지 않아도 상수로 간주된다.
  • 람다식으로 선언된 변수명은 다른 변수명과는 중복될 수 없다.


람다식의 장/단점

  • 코드를 간결하게 한다.
  • 식에 개발자의 의도가 명확히 드러나 가독성이 높아진다. (?)
  • 함수를 만드는 과정없이 한번에 처리할 수 있어 생산성이 높아진다.
  • 병렬프로그래밍이 용이하다.

  • 람다를 사용하면서 만든 무명함수는 재사용이 불가능하다.
  • 디버깅이 어렵다.
  • 람다를 남발하면 비슷한 함수가 중복 생성되어 코드가 지저분해질 수 있다.
  • 재귀로 만드는 경우 부적합하다.

결국, 무조건 람다가 좋다는 보장은 없다. 상황에 따라 필요에 맞는 방법을 사용하는 것이 중요하다.

설명 출처2