java8 람다식
게시판을 따라 만들던 중 () -> ~~ 이런 문장이 나왔습니다 저는 java8 이전 문법을 쓰기에 익숙하지 않았습니다 여러가지 공부를 한 후 람다식 문장과 람다식 문장이 아닌 것을 비교해봤습니다.
람다식 ) 식별자 없이 실행 가능한 함수(= 함수긴한데 함수를 따로 만들지 않고 코드 한 줄에 함수를 써서 그것을 호출하는 방식)
장점
1. 코드를 간결하게 만들 수 있습니다.
2. 코드가 간결하고 식에 개발자의 의도가 명확히 드러나므로 가독성이 향상됩니다.
3. 함수를 만드는 과정없이 한번에 처리할 수 있기에 코딩하는 시간이 줄어듭니다.
4. 병렬프로그래밍이 용이합니다.
단점
1. 람다를 사용하면서 만드는 무명함수는 재사용이 불가능합니다.
2. 디버깅이 다소 까다롭습니다.
3. 람다를 남발하면 코드가 지저분해질 수 있습니다. (비슷한 함수를 계속 중복생성할 가능성이 높음)
4. 재귀로 만들경우에는 다소 부적합한면이 있습니다
// 이메일로
User user = userRepository.findByEmail(attributes.getEmail())
.map(entity
->
entity.update(attributes.getName(), attributes.getPicture())
)
.orElse(attributes.toEntity());
// 위 코드를 풀어쓰면 아래와 같음
Optional<User> user = userRepository.findByEmail(attributes.getEmail());
if (user.isEmpty() == true) {
user = Optional.of(attributes.toEntity());
}
String newName = attributes.getName();
String newPicture = attributes.getPicture();
user.get().update(newName, newPicture);