Effective Java 2

[이펙티브 자바] Item 54 null이 아닌, 빈 컬렉션이나 배열을 반환하라

핵심 정리 null이 아닌, 빈 배열이나 컬렉션을 반환하라. null을 반환하는 API는 사용하기 어렵고 오류 처리 코드도 늘어난다. 그렇다고 성능이 좋은 것도 아니다. private final List cheesesInStock = ...; public List getCheeses() { return cheesesInStock.isEmpty() ? null : new ArrayList(cheesesInStock); } // 호출 하는 곳에서 null 체크를 매번 해줘야 한다. List cheeses = shop.getCheeses(); if (cheeses != null && cheeses.contains(Cheese.STILTON)) System.out.println("좋았어, 바로 그거야."); 컬..

[이펙티브 자바] Item 48 스트림 병렬화는 주의해서 적용하라

핵심 정리 계산도 올바로 수행하고 성능도 빨라질 거라는 확신 없이는 스트림 파이프라인 병렬화는 시도조차 하지말라. 스트림을 잘못 병렬화하면 프로그램을 오동작하게 하거나 성능을 급격히 떨어뜨린다. 병렬화하는 편이 낫다고 믿더라도, 수정 후의 코드가 여전히 정확한지 확인하고 운영 환경과 유사한 조건에서 수행해보며 성능지표를 유심히 관찰하라. 그래서 계산도 정확하고 성능도 좋아졌음이 확실해졌을 때, 오직 그럴 때만 병렬화 버전 코드를 운영 코드에 반영해라. 자바 8부터는 parallel 메서드만 한 번 호출하면 파이프라인을 병렬 실행할 수 있는 스트림을 지원했다. 동시성 프로그래밍을 할 때는 안전성(safety)과 응답 기능(liveness) 상태를 유지하기 위해 애써야 하는데, 병렬 스트림 파이프라인 프로그..