Programming

람다 식 대 메서드 참조

procodes 2020. 8. 13. 21:30
반응형

람다 식 대 메서드 참조


IntelliJ는 람다 식을 메서드 참조로 대체하도록 계속 제안합니다. 둘 다 객관적인 차이가 있습니까?


이 기능을 언어에 추가 한 이유에 대한 몇 가지 관점을 제공하겠습니다 (모든 메서드 참조는 람다로 표현 될 수 있음).

정답

없습니다 . "항상 람다 대신 메서드 참조 사용"또는 "항상 메서드 참조 대신 람다 사용"이라고 말하는 사람은 무시해야합니다.이 질문은 정신적으로 "명명 된 클래스와 익명의 클래스를 언제 사용해야합니까?"와 매우 유사합니까? 그리고 대답은 동일합니다.

더 읽기 쉽게 찾을 때

. 확실히 하나 또는 확실히 다른 경우가 있지만 중간에 회색의 호스트가 있으며 판단을 사용해야합니다.메서드 심판의 이론은 간단합니다 :

이름이 중요

합니다. 메서드에 이름이있는 경우 궁극적으로 돌아 서서 호출하는 명령형 코드 백이 아닌 이름으로 참조하는 것이 더 명확하고 읽기 쉽습니다.성능이나 문자 수에 대한 논쟁은 대부분 붉은 청어이므로 무시해야합니다. 목표는 그것이하는 일을 명확하게하는 코드를 작성하는 것입니다. 매우 자주 (항상 그런 것은 아님!) 메서드 참조가이 메트릭에서 승리하므로 이러한 경우에 사용할 수 있도록 옵션으로 포함했습니다.메소드 참조가 의도를 명확히하는지 또는 난독 화하는지에 대한 주요 고려 사항은 표현되는 함수의 모양이 컨텍스트에서 분명한지 여부입니다. 어떤 경우에는 (예를 들어,

map(Person::getLastName)

문맥 상 어떤 것을 다른 것으로 매핑하는 함수가 필요하다는 것이 매우 분명하며, 이와 같은 경우에는 메서드 참조가 빛을 발합니다. 다른 경우에는 메서드 참조를 사용하여 독자가 어떤 종류인지 궁금해해야합니다. 이것은 람다가 더 길더라도 더 읽기 쉬울 수 있다는 경고 신호입니다.마지막으로, 우리가 발견 한 것은 대부분의 사람들이 있다는 것입니다

처음에

멀리 방법의 심판에서 조종들이 람다보다 새롭고 별난 느낌, 그래서 처음에 "덜 읽을 수"를 찾을 수 있지만, 시간이 지남에 따라, 그들은 구문에 익숙해 질 때 때문에, 일반적으로 행동을 변경하고 가능한 경우 메서드 참조에 집중합니다. 따라서 자신의 주관적인 초기 "가독성이 떨어지는"반응은 거의 확실하게 가족 성 편견의 일부 측면을 수반하며 문체 적 의견을 렌더링하기 전에 두 가지 모두에 익숙해 질 수있는 기회를 제공해야합니다.


여러 문으로 구성된 긴 람다 식은 코드

가독성

떨어 뜨릴 수 있습니다. 이러한 경우 메서드에서 해당 문을 추출하고 참조하는 것이 더 나은 선택 일 수 있습니다.다른 이유는

재사용 가능성

일 수 있습니다 . 몇 개의 문에 대한 람다 식을 복사하여 붙여 넣는 대신 메서드를 구성하고 코드의 다른 위치에서 호출 할 수 있습니다.참고 URL :

https://stackoverflow.com/questions/24487805/lambda-expression-vs-method-reference

반응형