
108
이펙티브 러스트
●
루프 본문이 길거나 담고 있는 기능이 많다면, 클로저로 압축하기보다는 그냥 명시적 루프로 표현하는
것이 좋다.
●
루프 본문에 주변 함수를 조기에 종료시키는 오류 조건이 포함된 경우에는 대부분 명시적 루프로 표현하
는 것이 가장 좋다. 이럴 때
try_..()
메서드로 표현해서 좋은 점은 크지 않다.
Result
값들의 컬렉션
을 컬렉션의
Result
로 변환하는
collect()
의 기능을 활용하면 오류 조건을 여전히 물음표 연산자로
처리할 수 있는 경우가 많다.
●
성능이 중요하다면 클로저를 포함하는 반복자 변환이 명시적 코드로 작성한 것만큼이나 빠르도록 최적
화해야 한다. 하지만 코어 루프의 성능이 그 정도로 중요하다면 다양하게 표현해서 측정한 결과를 토대
로 적절히 튜닝한다.
– 측정값이 반드시 실제 성능을 반영해야 한다 (아이템
30
). 컴파일러의 최적화 도구는 테스트 데이터에
대해 지나치게 낙관적인 결과를 제공할 수 있다.
– 갓볼트 컴파일러 탐색기
Godbolt
compiler
explorer
40
는 컴파일러가 출력하는 내용을 탐색하는 데 굉장히 뛰어
난 도구다.
가장 중요한 것은 변환이 어색하거나 억지스럽다면 반복자 변환으로 바꾸지 않아야 한다. 기본
적으로 취향의 문제에 해당하지만, 함수형 언어 스타일에 익숙해지고 ...