개발로그

Item 55 - 옵셔널 반환은 신중히 하라

메서드가 특정 조건에서 값을 반환할 수 없을 때 자바 8 이전 (1) 예외 던지기, (2) null 반환 두 가지 선택지가 존재했다. 하지만 이 방법들에는 모두 단점이 존재한다. 1. 예외를 던지는 방법 진짜 예외적인 상황에서만 사용해야 한다. 예외 생성 시, 스택 추적 전체를 캡처하는 비용이 만만치 않다. 2. null을 반환하...

Item 46 - 스트림에서는 부작용 없는 함수를 사용하라

스트림 스트림 패러다임의 핵심은 계산을 일련의 변환(transformation)으로 재구성하는 것이다. 각 변환 단계는 가능한 이전 단계의 결과를 받아 처리하는 순수 함수 여야 한다. 순수함수란? 오직 입력만이 결과에 영향을 주는 함수 다른 가변상태를 참조 하지 않고, 함수 스스로도 다른 상태를 변경하지 않는다. 예를 들...

Item 44 - 표준 함수형 인터페이스를 사용하라

자바가 람다를 지원하면서 상위 클래스의 기본 메서드를 재정의해 원하는 동작을 구현하는 템플릿 메서드 패턴의 매력은 크게 줄었다. 모던 자바에서는 템플릿 메서드 패턴 대신 함수 객체를 받는 정적 팩터리나 생성자를 제공하는 방식으로 해법을 제시하고 있다. LinkedHashMap의 removeEldestEntry를 재정의하여 Cache를 구현해보자. ...