9장. 일반적인 프로그래밍 원칙
바퀴를 다시 발명하지 말자.
아주 특별한 나만의 기능이 아니라면,
누군가 이미 라이브러리 형태로 구현해놓았을 확률이 크다.
1. 표준 라이브러리를 활용하면 그 코드를 작성한 전문가의 지식과, 나보다 앞서 사용한 다른 프로그래머들의 경험을 활용할 수 있다.
무작위 정수를 생성하고 싶다고 했을 때, 다음과 같은 코드로 작성하면 3가지 문제점이 발생한다.
static Random rnd = new Random();
static int random(){
return Math.abs(rnd.nextInt()) % n ;
}
1) n이 그리 크지 않은 2의 제곱수라면 얼마 지나지 않아 같은 수열이 반복된다.
2) n이 2의 제곱수가 아니라면 몇몇 숫자가 평균적으로 더 자주 반환된다.
3) 지정한 범위 밖의 수가 종종 튀어나올 수 있다.
이와 같은 복잡한 결함을 해결하기는 힘들겠지만, 다행히 Random.nextInt가 이미 해결했다 !
따라서 자세한 동작 원리를 몰라도 깔끔한 코드를 구현할 수 있다!
Java7부터는 Random을 ThreadLocalRandom으로 대체하는 것이 더 좋다.
더 고품질의 무작위 수를 생성하고, 속도도 더 빠르다.
2. 핵심적인 일과 크게 관련 없는 문제를 해결하느라 시간을 허비하지 않아도 된다.
개발하고자 하는 기능 개발에 더 집중하자!
3. 따로 노력하지 않아도 성능이 지속해서 개선된다.
사용자가 많고, 표준 벤치마크를 사용해 성능을 확인하므로 더 나은 방법을 꾸준히 모색해 개발된다.
자바 플랫폼 라이브러리의 많은 부분이 수 년에 걸쳐 지속해서 다시 작성되며, 때론 성능이 극적으로 개선된다.
4. 기능이 점점 많아진다.
필요하거나 부족한 부분은 다음 릴리스에 추가되곤 한다.
5. 내가 작성한 코드가 많은 사람들에게 낯익은 코드가 된다.
자연스럽게 다른 개발자들이 더 읽기 좋고, 유지보수하기 좋은 코드가 된다.
java.lang, java.util, java.io와 그 하위 패키지들에는 익숙해지자.
컬렉션 프레임워크, 스트림라이브러리, java.util.concurrent의 동시성 기능도 알아두면 큰 도움이 된다.
'Effective Java' 카테고리의 다른 글
[9장] Item 61. 박싱된 기본 타입보다는 기본 타입을 사용하라 (0) | 2022.07.29 |
---|---|
[9장] Item 60. 정확한 답이 필요하다면 float와 double은 피하라 (0) | 2022.07.26 |
[9장] Item 58. 전통적인 for문보다는 for-each문을 사용하라. (0) | 2022.07.24 |
[9장] Item 57. 지역변수의 범위를 최소화하라 (0) | 2022.07.24 |
[2장] Item 1. 생성자 대신 정적 팩토리 메소드를 고려하라 (0) | 2022.07.23 |