효과적인 자바: 라이브러리를 알고 사용하기

이 장에서는 많은 개발자가 한 번쯤 빠지게 될 문제, 즉 바퀴를 재발명하는 문제에 대해 자세히 설명합니다. 개발자로서 우리는 종종 다른 사람의 코드를 사용하는 방법을 배우기보다 무언가의 세부 사항을 알고 싶어합니다. 즉, 이러한 입장을 취함으로써 우리는 종종 스스로에게 해를 끼치고 있습니다.

예를 들어 보겠습니다. 다음 코드를 고려해보자. 이 코드의 작업은 주어진 한계까지 임의의 숫자를 선택하는 것입니다.

static Random rnd = new Random();

static int random(int upperLimit) {
  return Math.abs(rnd.nextInt()) % n;
}


언뜻 보기에는 이 코드가 합리적으로 보일 수 있지만 작업을 간결하게 수행하는 것처럼 보입니다. 몇 가지 빠른 테스트 후에도 작동하는 것 같습니다. 즉시 명확하지 않은 것은 이 코드에 여러 가지 문제가 있다는 것입니다.

  • 값의 분포가 동일하지 않습니다. 이것이 표시되는 방식은 n가 2의 거듭제곱인지 여부에 따라 다르지만 이진 산술 및 정수론으로 인해 분포가 동일하지 않습니다.
  • 드문 경우지만(rnd.nextInt()Integer.MIN_VALUE를 반환할 때) 코드는 Math.abs를 호출하여 값을 양수로 만들려고 시도합니다. 이 특정 경우에는 여전히 Integer.MIN_VALUE를 반환합니다. 그러면 코드가 준비되지 않은 음수가 반환될 수 있습니다. 이것은 또한 테스트하기가 매우 어려울 것입니다.


  • 그렇다면 이러한 문제를 어떻게 해결할 수 있습니까? 간단히 다음을 사용하는 것은 어떻습니까? Random.nextInt(int) ? 당신이 찾고 있던 흥미로운 대답은 아닐 수도 있지만 거의 항상 그렇습니다. Java의 내장 라이브러리 기능은 전문가에 의해 작성되었으며 수많은 응용 프로그램에서 사용되었으며 잘 조사되었습니다. 이것은 코딩 기술에 대한 모욕이 아니라 단순히 각 경우에 개발 중인 소프트웨어 종류에 대한 사실입니다. 이를 통해 몇 가지 혜택을 받습니다.
  • 작업을 수행하는 방법에 대해 생각할 필요조차 없습니다. 함수를 호출하고 계속 진행하면 됩니다.
  • 아마도 이러한 기능의 성능이 귀하의 것보다 우수할 것입니다. 특정 사용 사례에 대해 더 성능이 뛰어난 함수를 작성할 수는 있지만 전투 테스트를 거친 버전보다 더 빠른 일반 솔루션을 제시할 확률은 낮습니다.
  • 또한 업그레이드를 통해 무료 개선의 이점을 얻을 수 있습니다. 아무 것도 하지 않아도 이러한 이점을 볼 수 있습니다.

  • 그렇다면 누군가가 이러한 내장 기능을 사용하지 않는 이유는 무엇입니까? 아마도 이것에 대한 가장 일반적인 이유는 친숙함이 부족하기 때문이라고 생각합니다. Java의 API 서비스가 상당히 크다는 것은 의심의 여지가 없습니다. 누구나 자신의 두뇌에 모든 API 공간을 효과적으로 맞출 수 있다고 생각하는 것은 어리석은 일입니다. 즉, 도움을 주기 위해 따를 수 있는 몇 가지 프로세스가 있습니다.
  • 몇 가지 핵심 패키지에 익숙해지십시오. java.lang , java.util , java.io , java.streams
  • 시간을 할애하여 각 Java 릴리스에서 릴리스 정보를 사용하십시오. Java의 더 빠른 릴리스 주기를 사용하면 이러한 릴리스 정보를 훨씬 더 쉽게 사용할 수 있습니다.
  • 말할 필요도 없이 자신의 버전을 발명하기 전에 인터넷에서 문제에 대한 솔루션을 검색하십시오. 이것은 종종 내장 함수에 익숙해지기에 충분할 수 있습니다.

  • Java 언어에 내장된 많은 기능이 있더라도 핵심 언어에서 구현되지 않는 것들이 여전히 있을 것입니다. 그럼에도 불구하고 여전히 문제를 해결하는 데 활용할 수 있는 훌륭한 일반 라이브러리가 있습니다. Guava , Apache Commons 등의 라이브러리가 있습니다. 내장 함수의 모든 이점을 얻지는 못하지만 일부 이점은 얻을 수 있습니다.

    솔루션을 처음부터 구현하는 것은 재미있을 수 있지만 올바른 솔루션은 거의 없습니다. 독특하게 느껴지지 않는 기능을 구현하기 전에 핵심 라이브러리를 살펴보고 검증된 기존 솔루션을 찾기 위한 빠른 인터넷 검색을 고려하십시오.

    좋은 웹페이지 즐겨찾기