Как я могу избежать конфликта имен между классом и пакетом в Java? - PullRequest
2 голосов
/ 31 августа 2011

У меня есть два проекта, Main и Core. У меня есть пакет с именем com.package.Sample (вместе с его содержимым) и класс с именем Sample в пакете com.package. Если бы я включил оба в Main, я столкнулся бы с ошибкой, поскольку один из них не мог быть решен - в моем случае это был класс Sample, который не мог быть разрешен. У нас есть муравьиные скрипты, которые собирают и которые всегда работали.

Однако, внимательно изучив требования каждого проекта, я заметил, что могу переместить пакет com.package.Sample в Core вместе с его зависимостями, которые были в Main. Класс Sample технически принадлежал к Main, поэтому я его не сдвинул. Это позволило мне успешно строить в Eclipse.

Несколько вещей, которые меня интересуют:

  • Это часто встречается в крупных проектах?
  • Каков наилучший подход для такой ситуации? До изучения конфликта я думал, что лучшим решением будет перефакторинг класса Sample.
  • Если, однако, я не смог переместить пакет com.package.Sample из Main. Что я должен делать? Или это дело такого никогда не будет строить?

Ответы [ 2 ]

5 голосов
/ 31 августа 2011

Чтобы ответить на ваши вопросы, соответственно:

  • Я не знаю, распространено ли это в крупных проектах, я бы предположил, что нет.Большие проекты, вероятно, никогда бы не стали большими, если бы кодовая база была спроектирована так, чтобы вызывать конфликты имен (особенно в Java, что облегчает решение подобных проблем).
  • Я бы не стал рефакторизовать класс Sample, если имя было бы достаточно описательным,Однако я бы назвал свои пакеты (и подпакеты) строчными буквами.Вы подразумевали, что это небольшой проект, поэтому я предполагаю, что у вас есть контроль над именами.Я никогда не видел в своей памяти производственный Java-код (коммерческий или с открытым исходным кодом), который использовал бы заглавные буквы в имени пакета.Поскольку в Java принято использовать случай Паскаля, случай верблюда или как угодно, если вы будете следовать этому соглашению, у вас никогда не будет конфликта имен классов / пакетов.
  • Конечно, он будет создан.Довольно легко исправить.Так как вы используете Eclipse, вы должны иметь возможность щелкнуть правой кнопкой мыши по пакету в проводнике, выбрать «рефакторинг», изменить имя на строчные, и все уже сделано.

Удачи!

4 голосов
/ 31 августа 2011

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

...