Слишком много импортирует спам мой код - PullRequest
12 голосов
/ 13 декабря 2011

В моем проекте у меня есть пакет shapes, который имеет формы, которые я разработал для своей графической программы, например, Rectangle, Circle.У меня также есть еще один или два пакета с такими же именами, как у java.awt классов.

Теперь, поскольку я не хочу переименовывать каждый класс в моей кодовой базе, чтобы показать моим исходным файлам, какой класс я имею в виду, когда я, скажем, объявляю новый Rectangle, мне нужно либо:

1 - явно импортировать класс прямоугольника, т.е. импортировать формы. Прямоугольник

ИЛИ

2 - импортировать только те классы java.awt, которые мне нужны, ине импортировать java.awt. *, который автоматически включает awt.Rectangle

Теперь проблема в том, что оба способа приводят к большому импорту, в настоящее время у меня в среднем 15-25 импортирует в каждый исходный файл, что серьезно запутывает мой код.

Слишком много импортов в вашем коде - это плохо?Есть ли способ обойти это?

Ответы [ 4 ]

9 голосов
/ 03 мая 2017

Да, слишком много импорта - это плохо, потому что он загромождает ваш код и делает ваш импорт менее читаемым.

Избегайте длинных списков импорта с помощью подстановочных знаков.

Кевлин Хенни говорит об этом точноПереполнение стека вопрос 27:54 в его презентации Чистые кодеры ненавидят то, что происходит с вашим кодом, когда вы используете эти приемы корпоративного программирования от NDC London 16-20 января 2017

5 голосов
/ 13 декабря 2011
  • Рекомендуется импортировать класс за классом вместо импорта целых пакетов

  • Любая хорошая IDE, такая как Eclipse , будетсверните импорт в одну строку, и вы сможете расширить его, когда это необходимо, чтобы они не загромождали ваше представление

  • В случае конфликтов вы всегда можете обратиться к полностью квалифицированным классам, ноесли один из двух классов находится под вашим контролем, вы можете рассмотреть его переименование.(в Eclipse щелкните правой кнопкой мыши класс, выберите Refactor -> Rename, он позаботится об обновлении всех его ссылок).

  • Если ваш класс импортируется из AWT и из вашего пакета фигур,Хорошо.Это нормально для импорта из нескольких классов;однако, если вы обнаружите, что импортируете из действительно большого количества разрозненных источников, это может быть признаком того, что ваш класс делает слишком много и его нужно разделить.
3 голосов
/ 13 декабря 2011

Другой альтернативой является ввод полного имени класса по мере необходимости. В моем примере есть 2 Element объект, один из которых я создал org.opensearch.Element, а другой org.w3c.dom.Element.

Чтобы разрешить конфликт имен, а также минимизировать "беспорядок" импорта, я сделал это (в моем классе org.opensearch.Element):

public org.w3c.dom.Element toElement(org.w3c.dom.Document doc) { /* .... */ }

Как вы можете видеть, тип возвращаемого значения Element является полностью типизированным (т.е. я указал полное имя класса Element).

Проблема решена! : -)

2 голосов
/ 13 декабря 2011

В мире Java нормально импортировать много файлов - вам действительно нужно импортировать все.Но если вы используете IDE, например Eclipse, он выполняет импорт за вас.

...