효과적인 자바: 라이브러리를 알고 사용하기
예를 들어 보겠습니다. 다음 코드를 고려해보자. 이 코드의 작업은 주어진 한계까지 임의의 숫자를 선택하는 것입니다.
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 언어에 내장된 많은 기능이 있더라도 핵심 언어에서 구현되지 않는 것들이 여전히 있을 것입니다. 그럼에도 불구하고 여전히 문제를 해결하는 데 활용할 수 있는 훌륭한 일반 라이브러리가 있습니다.
Guava
, Apache Commons
등의 라이브러리가 있습니다. 내장 함수의 모든 이점을 얻지는 못하지만 일부 이점은 얻을 수 있습니다.솔루션을 처음부터 구현하는 것은 재미있을 수 있지만 올바른 솔루션은 거의 없습니다. 독특하게 느껴지지 않는 기능을 구현하기 전에 핵심 라이브러리를 살펴보고 검증된 기존 솔루션을 찾기 위한 빠른 인터넷 검색을 고려하십시오.
Reference
이 문제에 관하여(효과적인 자바: 라이브러리를 알고 사용하기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/kylec32/effective-java-know-and-use-the-libraries-15h4텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)