람다가 좋다? 람다가 최고다? 이런 것은 아니지만 람다를 사용할때 코드의 가독성, 코드의 간결함 등은 많이 증가한다. 이를 증명하는 것은 기존의 코드와 람다 코드간의 변환 과정을 살펴 보면 알 수 있다. 이번 장에서는 람다 코드로 전환된 기존 코드가 얼마나 더 가독성이 높아지는지, 얼마나 더 간결해지는지 알아볼 것이다. 또한 람다를 이용할때 주의해야하는 것들도 알아볼 것이다.
1.
람다 표현식으로 코드 리팩터링하기
2.
람다 표현식이 객체지향 설계 패턴에 미치는 영향
3.
람다 표현식 테스팅
4.
람다 표현식과 스트림 API 사용 코드 디버깅, 테스팅, 로깅
람다 표현식으로 코드 리팩터링하기
가독성과 유연성을 개선하는 리팩터링
가독성과 유연성은 이미 람다표현식을 사용하며 익히 알고 있을 것이다. 익명 클래스보다 간소한 문법과 읽기 편한 구조로 람다는 가독성을 챙겼다. 또한 메서드 참조를 이용하여 더더더더더욱 읽기 편한 코드를 만들 수 있다는 사실을 알았다. 이장에서는 실제 활용을 통하여 익명객체가 람다를 통하여 간결하고 깔끔한 코드를 작성하는 방법을 알아 볼 것이다.
"코드 가독성이 좋다는 의미는 무엇일까? 정의 하긴 어렵지만 코드 가독성이 좋다는 것은 '어떤 코드를 다른 사람도 쉽게 이해할 수 있음' 이라고 정의할 수 있다." 필자의 경우에는 코드 가독성의 중요성을 사실 잘 인지 하지 못했다. 하지만 협업에서 많은 도움이 된다는 점을 알고 나도 읽기 좋은 코드를 만들어야 한다고 생각했다. 지금까지는 단순 짧은 코드가 (가독성이) 좋은 코드라고 생각했다. 하지만 이해를 더한 코드가 좋은 코드라는 점을 알 수 있었다. 이 장에서는 이해와 좋은 코드 가독성을 가진 코드로 기존 코드를 개선해 볼 것이다.
람다 표현식이 객체지향 설계 패턴에 미치는 영향
코드의 유연성을 개선해보자
람다를 이용하면 동작 파라미터화를 쉽게 구현 할 수 있음을 우린 알고 있다. 다양한 람드를 전달해서 다양한 동작을 표현하는 것이다. 이것을 변화하는 요구사항에 맞춰서 구현하는 방법을 알아보자
람다 표현식 테스팅, 디버깅, 로깅
람다의 테스팅
람다의 디버깅
람다의 로깅
결론
•
람다를 이용하면 기존의 여러 코드들을 활용도 높은 코드로 리팩토링할 수 있다.
•
익명 클래스는 람다로 바꾸는 것이 좋다. 하지만 this, 섀도 변수 등 미묘하게 다른 차이가 존재한다. 주의하자
•
메서드 참조는 가독성을 매우 높여준다.
•
반복 작업 즉, 순서가 정해진 작업의 경우 스트림 api의 사용을 고려해보는 것도 좋은 방법이다.
•
람다는 기존의 객체지향형 패턴을 더욱 간결하게 만들어준다.
•
람다를 테스트할 수 있다. 하지만 람다 표현식을 테스트하는 것이 아닌 표현식이 사용되는 메서드, 또는 동작 전체를 보고 테스트하는 것이 바람직하다.
•
복잡한 람다는 일반 메서드로 재구현 할 수 있다.
•
람다의 스택은 불지옥이다. ("왜 현업에서 안쓸까?"라는 의문과 "학습 곡선이 엄청나게 높다"라는 의문이 풀린다.)
•
peek을 이용하면 스트림을 소비하지 않는다.! 단연 최고의 기능