Home
Dohyun's Blog
Cancel

Item47 (반환 타입으로는 스트림보다 컬렉션이 낫다)

반환 타입으로는 스트림보다 컬렉션이 낫다 스트림 등장 이전 일련의 원소를 반환하는 메서드는 다양했다. Collection, Set, List, Array, Iterable 등등 기본은 Collection이고, 경우에 따라 Iterable 인터페이스를 사용했다. Iterable<String> it...

Item46 (스트림에서는 부작용 없는 함수를 사용하라)

스트림에서는 부작용 없는 함수를 사용하라 스트림은 단순하게 또 하나의 API가 아닌 함수형 프로그래밍에 기초한다. 스트림 패러다임의 핵심은 계산을 일련의 변환으로 재구성하는 것이다. 각 변환의 단계는 이전 단계의 결과를 받아 처리하는 순수 함수여야 한다. 순수 함수 오직 입력만이 결과에 영향을 주는 함수 다른 ...

Item45 (스트림은 주의해서 사용하라)

스트림과 Optional 정리 스트림은 주의해서 사용하라 스트림 API는 다량의 데이터 처리 작업을 돕고자 Java 8부터 도입되었다. 이 스트림 API는 두 가지 추상 개념을 제공한다. 스트림 데이터 원소의 유한 혹은 무한 시퀀스 개념 스트림 파이프라인 원소들로 수행하는 연산 단계...

Item44 (표준 함수형 인터페이스를 사용하라)

표준 함수형 인터페이스를 사용하라 자바가 람다를 지원함에 따라 API를 작성하는 모범 사례도 크게 바뀌었다. 예를 들면 상위 클래스의 기본 메서드를 재정의해 원하는 동작을 구현하는 템플릿 메서드 패턴의 매력은 크게 줄었다. // 템플릿 메서드 패턴 abstract class Test { public final void execute() { ...

Item43 (람다보다는 메서드 참조를 사용하라)

람다보다는 메서드 참조를 사용하라 람다는 익명 클래스와 비교했을 때 간결함이 가장 큰 특징이다. 그런데 이보다 더 간결하게 함수 객체를 만드는 메서드 참조라는 방법이 존재한다. 메서드 참조 메서드 참조는 메서드를 참조해 매개변수 리턴 타입을 알아내어 불필요한 매개 변수를 제거하는 방법이다. map.merge(key, 1, (existingVal...

Item42 (익명 클래스보다는 람다를 사용하라)

이번 아이템부터는 람다와 스트림에 대해 다룬다. 스트림이 for 반복문보다 느리고 박싱/언박싱 과정에서 조금 성능 하락이 있을 수 있다고 알고 있지만 코드 가독성 및 유지 보수성에 도움을 주기 때문에 나도 능숙하게 다뤄보고자 코딩 테스트 문제를 연습할 때 종종 쓰곤 했다. 이번 아이템들을 정리해보면서 다른 부분에 비해 비교적 미숙하게 사용만 해봤던 ...

Item41 (정의하려는 것이 타입이라면 마커 인터페이스를 사용하라)

정의하려는 것이 타입이라면 마커 인터페이스를 사용하라 마커 인터페이스란 무엇일까? 아무 메서드도 담고 있지 않고, 단지 자신을 구현하는 클래스가 특정 속성을 가짐을 표시해주는 인터페이스를 마커 인터페이스라고 한다. 마커 인터페이스의 대표적인 예시는 Cloneable과 Serializable이다. public interface Serializab...

Item40 (@Override 애노테이션을 일관되게 사용하라)

@Override 애노테이션을 일관되게 사용하라 이전 아이템에서 애노테이션은 해당 코드에 대한 추가적인 정보를 제공하는 역할이라고 했다. 자바에는 기본적으로 제공되는 애노테이션들이 존재한다. @Override 해당 메서드가 상위 클래스의 메서드를 오버라이드하고 있음을 컴파일러에게 알림. 메서드 선언에만 달 수 ...

Item39 (명명 패턴보다 애너테이션을 사용하라)

명명 패턴보다 애너테이션을 사용하라 명명 패턴이란 무엇일까? int studnetAge; String firstName; public static final int MAX_HEIGHT = 150; public void caculateScore() { ... } public class UserAccount { } package com.exam...

Item38 (확장할 수 있는 열거 타입이 필요하면 인터페이스를 사용하라)

확장할 수 있는 열거 타입이 필요하면 인터페이스를 사용하라 이전 아이템들부터 다루고 있는 열거 타입(Enum)은 타입 안전 열거 패턴보다 우수하다. 타입 안전 열거 패턴이 무엇인가? public class Color { private final String name; private Color(String name) { this.name ...