[Item 59] 라이브러리를 익히고 사용하라

2022. 7. 30. 19:38JAVA/Effective Java

표준 라이브러리를 사용하지 않는다면?

  • 예시 :: 무작위 정수를 하나 생성하는 코드
static Random rnd = new Random();

static int random(int n) {
	return Math.abs(rnd.nextInt()) % n;
}

위 코드는 3가지 문제를 가지고 있다.

  • n이 그리 크지 않은 2의 제곱수라면 얼마 지나지 않아 같은 수열이 반복된다.
  • n의 2의 제곱수가 아니라면 몇몇 숫자가 평균적으로 더 자주 반환된다.
  • n값이 크면 이 현상은 더 두드러 진다.

 

이러한 이슈를 우리가 직접 해결해야 될까?

Random.nextInt(int) 인 표준 라이브러리를 사용하면 된다.

 

자바 7부터는 Random을 더 이상 사용하지 않고 ThreadLocalRandom으로 대체하면

대부분 잘 작동이 된다.

Random보다 더 고품질의 무작위 수를 생성할 뿐만 아니라 속도도 더 빠르다.

포크-조인 풀이나 병렬 스트림에서는 SplittableRandom을 사용하면 더 좋다.

 

표준 라이브러리의 이점 

  • 전문가의 지식과 앞서 사용한 다른 프로그래머들의 경험을 활용할 수 있다.
  • 핵심적인 일과 크게 관련 없는 문제를 해결하느라 시간을 허비하지 않아도 된다.
  • 따로 노력하지 않아도 성능이 지속해서 개선된다.
  • 기능이 점점 많아진다.
  • 작성한 코드가 많은 사람에게 낯익은 코드가 된다.

자바 프로그래머라면 적어도 java.lang, java.util.java.io와 그 하위 패키들에 익숙해져야 한다.

그외 컬렉션 프레임워크, 스트림 라이브러리,  java.util.concurrent(멀티스레드 프로그래밍 작업 단순화 해주는 고수준의 편의 기능) 를 알아두면 좋다

 


핵심정리

  • 구현해야하는 기능에 라이브러리가 존재한다면 그걸 써라.

참고자료

www.kyobobook.co.kr/product/detailViewKor.laf?ejkGb=KOR&mallGb=KOR&barcode=9788966262281&orderClick=LEa&Kc=

 

이펙티브 자바 3/E - 교보문고

프로그래밍인사이트 | 자바 6 출시 직후 출간된 『이펙티브 자바 2판』 이후로 자바는 커다란 변화를 겪었다. 그래서 졸트상에 빛나는 이 책도 자바 언어와 라이브러리의 최신 기능을 십분 활용

www.kyobobook.co.kr