본문 바로가기
기타

람다 함수 사용시 주의사항

by 코딩히어로 2023. 12. 2.
728x90

람다 함수는 많은 현대 프로그래밍 언어에서 강력한 기능을 제공합니다. 

그러나 올바르게 사용하지 않으면 여러 문제를 일으킬 수 있습니다. 

 

성능 고려사항
람다 함수는 간결하고 유연하지만, 때로는 성능 저하의 원인이 될 수 있습니다. 

특히 람다 함수가 자주 호출되거나 복잡한 연산을 수행하는 경우, 성능에 영향을 미칠 수 있습니다.

List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
numbers.stream()
       .map(n -> n * n) // 각 요소를 제곱하는 람다 함수
       .collect(Collectors.toList());

 

위 코드는 간단해 보이지만, 리스트의 크기가 매우 크거나, map 연산이 더 복잡한 경우 성능 저하를 일으킬 수 있습니다. 이러한 경우, 병렬 스트림(parallelStream())을 사용하거나, 람다 대신 전통적인 for-loop을 고려하는 것이 좋을 수 있습니다.

 

스코프와 클로저 이해
람다 함수는 주변 스코프의 변수를 캡쳐할 수 있습니다. 이러한 특성은 유용하지만, 변수의 상태 변경이나 생명주기를 주의 깊게 관리해야 합니다.

 

let factor = 2;
const multiply = x => x * factor;

factor = 3;
console.log(multiply(5));  // 출력: 15

 

이 예제에서 multiply 람다 함수는 외부 변수 factor를 참조합니다. factor 값이 변경되면 multiply 함수의 결과도 영향을 받습니다. 이는 때로 예기치 않은 결과를 초래할 수 있으므로 주의가 필요합니다.

너무 많은 람다 사용으로 인한 코드 복잡성
람다 함수의 과도한 사용은 코드의 가독성과 유지보수성을 해칠 수 있습니다. 

특히 람다 체인이 길어지거나 중첩되는 경우, 코드를 이해하고 디버깅하기 어려워질 수 있습니다.

 

# 데이터 필터링, 변환, 정렬 등을 한 줄에 처리
result = sorted(filter(lambda x: x % 2 == 0, map(lambda x: x * 2, numbers)))

 

이 코드는 단일 라인에 여러 람다 함수를 연결하여 복잡한 연산을 수행합니다. 이러한 형태는 간결하지만, 코드의 이해와 유지보수를 어렵게 만들 수 있습니다. 이 경우, 코드를 여러 줄로 나누거나, 람다 대신 명명된 함수를 사용하는 것이 좋습니다.

728x90
반응형

'기타' 카테고리의 다른 글

다양한 언어에서 람다 함수 사용  (1) 2023.11.29
람다 함수의 장점  (0) 2023.11.29
람다 함수란?  (0) 2023.11.26
[Bluetooth] Connection Interval과 데이터 전송 속도  (2) 2023.11.22
BLE MTU란?  (2) 2023.11.04

댓글