Какая-либо причина очистить неиспользованный импорт в Java, кроме сокращения помехи?

Это также влияет, в форме должна быть кнопка отправки (кнопка или тип ввода = «отправить»), иначе ng-submit не будет работать.

98
задан Jon Seigel 4 April 2010 в 15:29
поделиться

7 ответов

Я не думаю, что проблемы с производительностью или что-то в этом роде вероятно, если вы не удаляете импорт.

Но могут быть конфликты имен, в редких случаях, например, при импорте интерфейса списка .

В Eclipse вы всегда можете использовать ярлык (в зависимости от ОС - Win: Ctrl + SHIFT + O и Mac: COMMAND + SHIFT + O ) для организации импорта. Затем Eclipse очищает раздел импорта, удаляет весь устаревший импорт и т. Д. Если вам снова понадобится импортированная вещь, eclipse добавит их автоматически, пока вы завершаете оператор с помощью Ctrl + SPACE . Таким образом, нет необходимости хранить неиспользуемый код в вашем классе.

82
ответ дан 24 November 2019 в 05:16
поделиться

Во-первых, если вы удалите класс, на который ссылается импорт, из пути к классам, вы не получите глупую ошибку компилятора, которая бесполезна. И вы не получите ложных срабатываний при выполнении поиска «где использовалось».

Другой (но он будет очень специфическим по своему характеру) будет, если неиспользуемый импорт будет конфликтовать с именами с другим импортом, что заставит вас полностью использовать уточненные имена без надобности.

Дополнение: Сегодня на сервере сборки начались сбои компиляции (даже не запуск теста) с ошибкой нехватки памяти. Он всегда работал нормально, и при проверке не было никаких изменений в процессе сборки или существенных дополнений, которые могли бы это объяснить. После попытки увеличить настройки памяти (это работает с 64-битной JVM на 64-битной CentOS!) До чего-то намного большего, чем то, где клиенты могли бы компилироваться, Я изучил проверки одну за другой.

Был неправильный импорт, который разработчик использовал и отказался (они использовали класс, автоматически импортировали его, а затем поняли, что это ошибка). Этот неиспользуемый импорт потянул на себя целый отдельный уровень приложения, который, хотя IDE не настроен для их разделения, процесс сборки. Этот единственный импорт втянул в себя столько классов, что компилятор попытался скомпилировать, не имея соответствующих зависимых библиотек в пути к классам, что вызвало так много проблем, что вызвало ошибку нехватки памяти. На решение этой проблемы, вызванной неиспользованным импортом, потребовался час.

Этот неиспользуемый импорт потянул на себя целый отдельный уровень приложения, который, хотя IDE не настроен для их разделения, процесс сборки. Этот единственный импорт втянул в себя столько классов, что компилятор попытался скомпилировать, не имея соответствующих зависимых библиотек в пути к классам, что вызвало так много проблем, что вызвало ошибку нехватки памяти. На решение этой проблемы, вызванной неиспользованным импортом, потребовался час.

Этот неиспользуемый импорт потянул на себя целый отдельный уровень приложения, который, хотя IDE не настроен для их разделения, процесс сборки. Этот единственный импорт втянул в себя столько классов, что компилятор попытался скомпилировать, не имея соответствующих зависимых библиотек в пути к классам, что вызвало так много проблем, что вызвало ошибку нехватки памяти. На решение этой проблемы, вызванной неиспользованным импортом, потребовался час.

53
ответ дан 24 November 2019 в 05:16
поделиться

С точки зрения пуриста, любая зависимость является «ограничением» для продукта и, таким образом, может впоследствии вызвать проблемы с обслуживанием.

Например, предположим, что ваша программа использует класс com.XYZObjectPool, и что позже вы решите не использовать его, но никогда не удаляете импорт. Если кто-то другой теперь хочет создать экземпляр org.WVYObjectPool и просто сослаться на ObjectPool, они не получат никаких предупреждений об этом, пока где-то внизу не возникнет проблема с приведением или вызовом.

Это, кстати, не проблема. нереальный сценарий. Каждый раз, когда Eclipse спрашивает вас, какую конкретную версию X вы хотите импортировать, и вы выбираете одну из множества пакетов, это сценарий, в котором, если у вас был импорт, вы могли сделать неправильный выбор, не зная об этом.

В любом случае вы можете попросить Eclipse очистить их за вас

9
ответ дан 24 November 2019 в 05:16
поделиться

Предупреждение? Попросите Eclipse автоматически очистить их для вас. Это то, что делает IntelliJ. Если он достаточно умен, чтобы предупредить вас, он должен быть достаточно умен, чтобы убрать их. Я бы порекомендовал поискать настройку Eclipse, чтобы она перестала быть такой придиркой и сделала что-нибудь.

3
ответ дан 24 November 2019 в 05:16
поделиться

Несколько лет назад я где-то читал, что каждый импортированный класс будет загружаться во время выполнения с импортирующим классом. Таким образом, удаление неиспользуемых, особенно целых пакетов, уменьшит накладные расходы на память. Хотя я полагаю, что современные версии java справляются с этим, так что, вероятно, это больше не причина.

И, кстати, с eclipse вы можете использовать Ctrl + Shift + O для организации импорта, но вы также можете настроить «очиститель», который будет иметь дело с такими вещами (и многими другими) каждый раз, когда вы сохраняете файл java.

0
ответ дан 24 November 2019 в 05:16
поделиться

Это связано с ясностью программы, полезной для обслуживания.

Если вам нужно было поддерживать программу, вы обнаружите, насколько полезно иметь один импорт класса для каждой строки.

Подумайте о следующем сценарии:

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 вы не хотите зависать или переходить к объявлению и возврату, это проще, если вы понимаете с точки зрения функциональности, от каких других пакетов и классов зависит текущий код.

Если это для личного проекта или чего-то небольшого, это не имеет значения,

3
ответ дан 24 November 2019 в 05:16
поделиться

для Eclipse Я использую это: окно -> Настройки -> Java -> Редактор -> Сохранить действие -> Проверка Флажок для организации импорта (там тоже есть много других полезных вещей, например, форматирование, что делает полевые поля и т. Д.) ..). Поэтому, когда я сохраняю свой файл Eclipse, удаляет Imports Unessacry для меня. На мой взгляд, если вам что-то не нужно, то удалите его (или дайте его удалению затмением).

2
ответ дан 24 November 2019 в 05:16
поделиться