[Item 59] 라이브러리를 익히고 사용하라
2022. 7. 30. 19:38ㆍJAVA/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(멀티스레드 프로그래밍 작업 단순화 해주는 고수준의 편의 기능) 를 알아두면 좋다
핵심정리
- 구현해야하는 기능에 라이브러리가 존재한다면 그걸 써라.
참고자료
이펙티브 자바 3/E - 교보문고
프로그래밍인사이트 | 자바 6 출시 직후 출간된 『이펙티브 자바 2판』 이후로 자바는 커다란 변화를 겪었다. 그래서 졸트상에 빛나는 이 책도 자바 언어와 라이브러리의 최신 기능을 십분 활용
www.kyobobook.co.kr
'JAVA > Effective Java' 카테고리의 다른 글
[Item 61] 박싱된 기본 타입보다는 기본 타입을 사용하라 (0) | 2022.08.14 |
---|---|
[Item 60] 정확한 답이 필요하다면 float과 double은 피하라 (0) | 2022.08.14 |
[Item 58] 전통적인 for 문보다는 for-each 문을 사용하라 (0) | 2022.07.30 |
[Item 57] 지역변수의 범위를 최소화하라 (0) | 2022.07.30 |
[Item 56] 공개된 API 요소에는 항상 문서화 주석을 작성하라. (0) | 2022.07.30 |