Effective Java

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

앙두딘 2022. 7. 26. 01:32

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의 동시성 기능도 알아두면 큰 도움이 된다.