답변:
나는 당신이 수입품을 제거하지 않으면 성능 문제 또는 이와 유사한 것들이 가능성이 없다고 생각합니다.
그러나 드물게 목록 인터페이스 가져 오기와 같은 이름 지정 충돌이있을 수 있습니다.
Eclipse에서는 언제든지 바로 가기 (OS에 따라 다름-Win : Ctrl + SHIFT + O
및 Mac COMMAND + SHIFT + O
:)를 사용하여 가져 오기를 구성 할 수 있습니다. 그런 다음 Eclipse는 가져 오기 섹션을 정리하여 모든 오래된 가져 오기 등을 제거합니다. 가져온 항목이 다시 필요한 경우 eclipse는를 사용하여 명령문을 완료하는 동안 자동으로 추가합니다 Ctrl + SPACE
. 따라서 수업에서 사용하지 않는 코드를 보관할 필요가 없습니다.
항상 그렇듯이 사용하지 않는 코드는 코드를 읽고 나중에 필요할 수도 있기 때문에 활성 코드에 무언가를 남기는 동안 당신과 다른 사람들의주의를 산만하게 할 것입니다.
ctrl+3
(적어도 windwos에서) 클릭 한 다음 imports를 입력하는 것입니다. 분명히 ctrl + shift + O보다 느리지 만 특정 단축키를 기억하지 못하더라도 빠르게 찾을 수있는 방법입니다 (그리고 기억하거나 찾으려는 다른 많은 작업).
하나는 클래스 경로에서 가져 오기에 의해 참조되는 클래스를 제거하면 목적이없는 어리석은 컴파일러 오류가 발생하지 않는다는 것입니다. 그리고 "사용 된 위치"검색을 수행 할 때 오 탐지가 발생하지 않습니다.
사용하지 않는 가져 오기가 다른 가져 오기와 이름 지정 충돌을 일으켜 불필요하게 완전한 이름을 사용하게되는 경우도 있습니다 (그러나 이것은 본질적으로 매우 구체적입니다).
부록 : 오늘 빌드 서버가 메모리 부족 오류와 함께 컴파일 실패 (테스트 실행도 아님)를 시작했습니다. 그것은 영원히 잘 실행되었고 체크인은 빌드 프로세스에 대한 변경이나 이것을 설명 할 수있는 중요한 추가 사항이 없었습니다. 메모리 설정을 늘리려 고 시도한 후 (64 비트 CentOS에서 64 비트 JVM을 실행합니다!) 클라이언트가 컴파일 할 수있는 위치를 훨씬 넘어서서 체크인을 하나씩 검사했습니다.
개발자가 사용하고 포기한 부적절한 가져 오기가있었습니다 (그들은 클래스를 사용하고 자동으로 가져 와서 실수라고 깨달았습니다). 사용하지 않는 가져 오기는 IDE가 애플리케이션을 분리하도록 구성되어 있지 않지만 빌드 프로세스는 애플리케이션의 전체 별도 계층에서 가져 왔습니다. 그 단일 가져 오기는 너무 많은 클래스를 드래그하여 컴파일러가 클래스 경로에 관련 종속 라이브러리없이 컴파일을 시도하여 메모리 부족 오류를 유발하는 많은 문제를 일으켰습니다. 사용하지 않은 가져 오기로 인한이 문제를 해결하는 데 1 시간이 걸렸습니다.
순수한 관점에서 모든 종속성은 제품에 대한 "제약"이므로 나중에 유지 관리 문제를 일으킬 수 있습니다.
예를 들어, 프로그램에서 com.XYZObjectPool 클래스를 사용하고 나중에 사용하지 않기로 결정하고 가져 오기를 제거하지 않는다고 가정합니다. 다른 누군가가 이제 org.WVYObjectPool을 인스턴스화하고 ObjectPool을 참조하기를 원하면, 캐스팅 문제 나 호출 문제가있을 때까지 경고를받지 않습니다.
그건 그렇고, 이것은 비현실적인 시나리오가 아닙니다. Eclipse가 가져 오려는 X의 특정 버전을 묻고 여러 패키지 중에서 하나를 선택할 때마다 가져 오기가 있었다면 알지 못한 채 잘못된 선택을했을 수있는 시나리오입니다.
어느 쪽이든 Eclipse에 이러한 항목을 정리하도록 요청할 수 있습니다.
경고? Eclipse에 자동으로 정리하도록 요청하십시오. 이것이 IntelliJ가하는 일입니다. 경고 할만큼 똑똑하다면 정리할 수있을만큼 똑똑해야합니다. 그런 잔소리를 멈추고 무언가를하도록 알려주는 Eclipse 설정을 찾는 것이 좋습니다.
이것은 유지 보수에 유용한 프로그램의 명확성과 관련이 있습니다.
프로그램을 유지해야한다면 한 줄에 단일 클래스를 가져 오는 것이 얼마나 유용한 지 알게 될 것입니다.
다음 시나리오를 고려하십시오.
import company.billing.*;
import company.humanrerources.*;
// other imports
class SomeClass {
// hundreds or thousands of lines here...
public void veryImportantMethod() {
Customer customer;
Employee comployee;
Department dept.
// do something with them
}
}
버그를 수정하거나 코드를 유지 관리 할 때 (또는 읽기만 할 때) 사용 된 클래스가 어떤 패키지에 속하는지 독자가 아는 것이 매우 유용합니다. 위에 표시된대로 와일드 카드 가져 오기를 사용하는 것은 이러한 목적에 도움이되지 않습니다.
IDE를 사용하더라도 선언 및 반환으로 마우스를 가져 가거나 건너 뛰고 싶지는 않습니다. 현재 코드가 의존하는 다른 패키지 및 클래스가 무엇인지 기능 측면에서 이해하면 더 쉽습니다.
이것이 개인 프로젝트 나 작은 것을위한 것이라면 그것은 정말로 중요하지 않지만, 다른 개발자가 사용해야하는 (그리고 수년 동안 유지되어야하는) 더 큰 것을 위해서는 반드시 가져야합니다.
어떤 성능 차이도 전혀 없습니다.
참고로, 이것은 수입품을 구성하여 실제로 사용하지 않은 수입품을 제거한다고 생각하지 않았기 때문에 나를 잡았습니다.
저장 작업 중에 가져 오기를 자동으로 제거하면 예를 들어 개발 또는 테스트 중에 문제가 발생하고 일부 코드를 주석 처리 할 때 슬픔이 생겼습니다. 저장하면 주석 처리 된 코드 섹션에서 사용한 가져 오기가 제거되었습니다. 변경 사항을 실행 취소 ( Ctrl+ Z) 할 수 있기 때문에 문제가되지 않는 경우도 있지만 다른 변경 사항을 적용했을 수 있으므로 그렇게 간단하지 않은 경우도 있습니다. 또한 코드의 주석 처리를 해제 할 때 (이전에 주석 처리 한 다음 저장하여 해당 코드에 대한 가져 오기를 제거했습니다) 자동으로 필요한 가져 오기를 추측하고 잘못된 가져 오기를 선택하는 문제가있었습니다 (예 : 했다 StringUtils
)를 사용하고 클래스 그것은 잘못된 라이브러리에서 같은 이름의 다른 하나를 집어.
가져 오기를 저장 작업으로 사용하는 것보다 수동으로 구성하는 것을 선호합니다.
몇 년 전 어딘가에서 가져온 모든 클래스가 가져 오기 클래스와 함께 런타임에로드된다는 것을 읽었습니다. 따라서 사용되지 않는, 특히 전체 패키지를 제거하면 메모리 오버 헤드가 줄어 듭니다. 현대 버전의 자바가 그것을 처리한다고 생각하지만 더 이상 이유가 아닐 것입니다.
그건 그렇고, eclipse를 사용하면 Ctrl+ Shift+ O를 사용 하여 가져 오기를 구성 할 수 있지만 Java 파일을 저장할 때마다 이러한 작업을 처리하는 "클리너"를 구성 할 수도 있습니다.