개요
이번 아이템은 라이브러리를 무작정 사용하지 말고, 사용법을 익힌 후에 사용하라는 것인 줄 알았는데, 알고보니 어떤 기능을 구현함에 있어 대체 가능한 라이브러리가 있다면 직접 구현하지 말고 이를 익히고 사용하라는 것이었다.
라이브러리를 사용했을 때의 이점
1. 코드를 작성한 전문가의 지식과 선배 프로그래머들의 경험을 활용할 수 있다.
- 라이브러리 자체가 지식과 경험의 집약체인 것이다.
2. 비지니스 로직, 핵심 로직에 시간을 집중할 수 있다.
- 핵심적인 일과 크게 관련없는 문제들은 라이브러리가 대체할 수 있기 때문이다.
3. 노력하지 않아도 성능이 개선된다.
- 라이브러리 사용자가 많다면, 이를 만든 제작자들은 성능 개선을 위해 노력할 수 밖에 없다. 때론 성능이 극적으로 개선되기도 한다.
4. 기능이 점점 많아진다.
- 실제로 커뮤니티에서 얘기가 나오고 논의된 후 다음 릴리스에 기능이 추가되기도 한단다.
5. 낯익은 코드가 된다.
- 범용적으로 사용하는 라이브러리가 우리의 코드에 있다면, 다른 개발자도 읽기 쉽고, 유지보수하기 쉽다.
하지만 실상은 직접구현이 많다
대체할 수 있는 표준 라이브러리가 있음에도 직접 구현하는 개발자들이 많다고 한다. 이유는 대체할 수 있는 라이브러리가 있다는 사실을 모르기 때문이다.
메이저 릴리즈마다 주요 기능이 라이브러리에 추가되고 공시된다. 때문에 홈페이지에 직접 들어가 한번씩 읽어보는 것이 좋다.
지정한 URL 파싱
예를들어 지정한 URL의 내용을 가져오는 기능을 직접 구현하면 복잡하지만, 자바 9버전에 추가된 InputStream.transferTo 메서드를 사용하면 쉽게 구현할 수 있다.
public static void main(String[] args) throws IOException {
try(InputStream in = new URL("https://www.naver.com/").openStream()){
in.transferTo(System.out); // 콘솔에 파싱데이터가 출력됨.
}
}
자바 프로그래머라면 적어도...
라이브러리가 너무 방대하여 모든 API 문서를 공부하기는 벅차겠지만, 이 책의 저자는 자바 프로그래머라면 적어도 java.lang, java.util. java.io 패키지들에는 익숙해져야 한다고 말하고 있다.
추가로 컬렉션 프레임워크나 스트림 라이브러리의 경우 유용하게 사용되고 동시성과 관련있는 부분도 있어 알아두는 것을 추천하고 있다.
정리
어떤 기능을 개발하기 전 라이브러리가 존재하는지 먼저 살펴보는 습관을 기르자. 그게 프로젝트만의 기능이 아니라면, 누군가는 똑같은 고민을 했을거고, 이를 구현했을 확률이 높다. 누군가 구현했다면 감사히 쓰면된다.
'공부 > Effective Java' 카테고리의 다른 글
[Effective Java] Item 66. 네이티브 메서드는 신중히 사용하라 (2) | 2024.06.19 |
---|---|
[Effective Java] Item 61. 박싱된 기본 타입보다는 기본 타입을 사용하라 (0) | 2024.06.05 |
[Effective Java] Item 57. 지역변수의 범위를 최소화하라 (0) | 2024.05.07 |
[Effective Java] Item 55. 옵셔널 반환은 신중히 하라 (0) | 2024.04.18 |
[Effective Java] Item 51. 메서드 시그니처를 신중히 설계하라 (2) | 2024.04.10 |