반응형
이 포스팅에서 작성하는 내용은 EFFECTIVE JAVA(이펙티브자바) 에서 발췌하였습니다.
아이템 59. 라이브러리를 익히고 사용하라
ex 1) 무작위 정수를 생성하는 좋지 않은 예
static Random rnd = new Random();
static int random(int n) {
return Math.abs(rnd.nextInt()) % n;
}
- 흔하지만, 문제가 있는 소스이다.
- 첫 번째, n이 그리 크지 않은 2의 제곱수라면 얼마 지나지 않아 같은 수열이 반복된다.
- 두 번째, n이 2의 제곱수가 아니라면 몇몇 숫자가 평균적으로 더 자주 반환된다. (n 값이 크면 이 현상은 더 두드러진다.)
- random 메서드는 지정한 범위를 벗어나는 수가 종종 튀어나올 수 있다.
- rnd.nextInt()가 반환한 값을 Math,abs를 이용해 음수가 아닌 정수로 매핑하기 때문이다.
- 자바 7부터는 Random을 사용하지 않고, ThreadLocalRandom을 사용하도록 하자, (성능이 더 좋음)
- 이러한 경우에는, 표준라이브러리를 사용하도록 하자.
표준 라이브러리의 이점
- 표준 라이브러리를 사용하면 그 코드를 작성한 전문가의 지식과 여러분보다 앞서 사용한 다른 프로그래머들의 경험을 활용할 수 있다.
- 핵심적인 일과 크게 관련없는 문제를 해결하느라 시간을 허비하지 않아도 된다.
- 성능이 지속해서 개선된다.
- 기능이 점점 많아진다.
- 표준 라이브러리를 이용해 작성한 코드는 다른 사람들에게 익숙한 코드가 된다.
정리
- 특별한 나만의 기능이 아니라면, 그 기능이 구현된 라이브러리를 사용하도록 하자.
- 일반적으로 라이브러리는 직접 작성한 것보다 품질이 좋고, 유지보수가 계속 된다.
반응형
'BE > Java' 카테고리의 다른 글
[Effective Java] 아이템 61. 박싱된 기본 타입보다는 기본 타입을 사용하라 (0) | 2022.11.28 |
---|---|
[Effective Java] 아이템 60. 정확한 답이 필요하다면 float와 double은 피하라 (0) | 2022.11.25 |
[Effective Java] 아이템 58. 전통적인 for 문보다는 for-each 문을 사용하라 (0) | 2022.11.23 |
[Effective Java] 아이템 57. 지역변수의 범위를 최소화하라 (0) | 2022.11.22 |
[Effective Java] 아이템 56. 공개된 API 요소에는 항상 문서화 주석을 작성하라 (0) | 2022.11.21 |