모던 자바 인 액션1
주요 포스팅 내용
이전 포스팅에서 위 3개의 내용을 중심으로 학습하였으며 이 내용들은 앞으로 책에서 알려주는 내용들을 함축한다 라고 우리는 알게 되었습니다.
이번 포스팅은 java8에서 함수형 프로그래밍을 방법
을 알아보겠습니다.
녹색 고블린의 요구
java8이전의 훼손 여부 검사
3월 1일 요구사항을 받고 훼손이 안 된 것만 선택하는 코드를 작성합니다.
훼손이 되었으며 우선 처리 요청 여부 검사
3월 5일 훼손이 되었어도 고객의 우선 처리 요청이 있는 것이면 보여줍니다.
훼손이 된 후 10일이 지났는지 여부 검사
3월 9일 훼손이 된 후 10일이 지났으면 보여줍니다.
이렇게 추가적인 요구사항마다 메서드가 추가를 하면 되지만 앞으로의 변화무쌍한 요구사항에 필터링 메서드는 늘었다가 줄었다가 바뀌었다가 유지 보수성이 굉장히 떨어집니다.
그렇다면 이번 챕터의 주제인 동작 파라미터화
를 사용하면 어떻게 코드폼이 변경되는지 알아보겠습니다.
💀 주제와는 벗어나지만 Eqauls는 Nullable한 객체에서 호출하지 맙시다.
해당 코드는 모두 Nullable할 수 있는 참조 값에서 메서드를 호출합니다.
Objects.equals() 사용하는 것을 권장합니다.
다시 녹색 고블린의 요구를 가져옵니다.
잘 살펴보니 2가지의 동작을 가진다는 것을 알았습니다.
이제 추상화된 동작 ???
에 공통점이 생깁니다.
Package
를 받아서 True/False
를 반환한다.
이 조건을 만족하는 일급시민(함수
)을 넘기는 방법에는 익명 클래스, 메서드 참조, 람다가 있습니다.
몇 가지 방식만 확인해보겠습니다.
람다를 사용하는 방식으로 풀었으며 이제 기존 java7
방식의 보일러 플레이트도 제거 되었으며 변칙적인 요구사항에도 유연한 구조가 되었습니다.
녹색 고블린의 요구를 보니 또 다시 공통점을 발견했습니다.
동작만이 아니라 제네릭을 사용해 정확한 정보도 추상화를 하겠습니다.
이제 필터링하는 함수에서 패키지라는 정확한 정보가 소멸되었습니다.
구현 코드
filter
함수는 streamAPI에서도 제공합니다.
java8
의 streamAPI는 map
, filter
, find
..같은 데이터 처리를 편하게 할 수 있는 함수를 지원합니다.
java8
부터는 데이터처리의 관점을 위한 템플릿 코드를 작성을 할 필요성이 많이 사라졌습니다.
부드러운 코드를 위해 위에서 구현한 filter
같은 템플릿 코드가 이미 제공됩니다.
사실 java8
은 굉장히 오래된 버전입니다.
현대적인 언어 kotlin
에서는 현재 학습중인 내용들을 더 간단하게 표현해줍니다.
모던 자바 인 액션
에서 다소 구닥다리 버전을 다루지만 학습을 하면 이후 현대적인 언어 혹은 함수형 패러다임 언어로 넘어갈 수 있는 좋은 양분이 생길 것 입니다.
급하게 마무리하는 느낌이 많지만 피로도가 많이 올라서 이정도만 하고
다음 포스팅에서 다시 좋은 자리 가져보겠습니다.
감사합니다.