Replies: 4 comments 3 replies
-
저도 사실 스트림 API 가 익숙하지 않고, 특히 자주 사용하는 메서드들만 있습니다. 그런데 '절충 지점'에서의 코드가 정말 깔끔하고 읽기도 좋아 Stream 의 장점을 극적으로 느끼게된 것 같습니다. |
Beta Was this translation helpful? Give feedback.
-
혹시라도 스트림 관련 자료가 보다 더 필요하시다면 간단하게 정리되어 있는 블로그가 있어서 남겨 놓습니다. 정리 감사합니다. |
Beta Was this translation helpful? Give feedback.
-
스트림 내에서 또 스트림을 수행하는 경우가 특히나 가독성이 떨어지기 때문에,, |
Beta Was this translation helpful? Give feedback.
-
발표중에 말씀하신 '함수 객체(람다 or 메서드 참조 등) 보단 코드 블록의 경우가 나은 경우' 에서 |
Beta Was this translation helpful? Give feedback.
-
아이템 45. 스트림은 주의해서 사용하라
스트림 API
스트림 API가 제공하는 추상 개념
스트림 파이프라인 (Stream Pipeline)
중간 연산 (intermediate operation)
종단 연산 (terminal operation)
지연 평가 (lazy evaluation)
플루언트 API (Fluent API)
다재다능한 스트림 API 하지만 주의해서 사용해야
스트림 API 사용 노하우
위 코드의 설명
위 코드의 스트림 사용
스트림을 과용하면 프로그램이 읽거나 유지보수하기 어려워짐
절충 지점
alphabetize 메서드를 스트림을 사용해 구현하기
why?
이름이 chars 인데 int 스트림을 반환하면 헷갈리는 문제
하지만 char 값들을 처리할 때는 스트림을 삼가하는 편이 나음
1. 스트림으로 바꾸는게 가능할지라도 코드 가독성과 유지보수 측면에는 손해를 볼 수 있기에 무조건 스트림으로 바꾸는 것을 서두르지 말자
2. 기존 코드는 스트림을 사용하도록 리팩터링하되, 새 코드가 더 나아 보일 때만 반영하자
함수 객체(람다 or 메서드 참조 등) 보단 코드 블록의 경우가 나은 경우
함수 객체(람다 or 메서드 참조 등) 으로는 할 수 없지만 코드 블록(반복) 으로 할 수 있는 일
코드 블록 (반복) 보단 함수 객체(람다 or 메서드 참조 등)의 경우가 나은 경우
스트림으로 처리하기 어려운 경우
EX)
코드 예시
여기서 각 메르센 소수의 앞에 지수(p)를 출력하길 원한다고 가정
스트림과 반복 중 어느 것을 써야 할지 알기 어려운 작업
EX) 카드 덱을 초기화 하는 작업
for-each 반복문을 중첩해 구현한 코드
스트림으로 구현한 코드
위 두 코드에서 누가 좋은가...
정리
Beta Was this translation helpful? Give feedback.
All reactions