2016-07-10 1 views
0

Я занят обновлением старого приложения Java, и после его компиляции я решил перестроить структуру кода. В настоящее время в ОДНОЙ массивной папке насчитывается 500 файлов, поэтому мне нужно разбить их на более строчную структуру папок. В тот момент, когда я переместил некоторые файлы, компилятор генерирует кучи ошибок "X() is not public in <BaseClass>". Да, инструмент рефакторинга добавил операторы пакета и импорт в обе стороны,Рефакторинг проекта Java вызывает сотни ошибок «X not public»

Видимо каждый класс имеет все ее член с неявной видимостью, то есть:

void setSelection(int x){...} 

Помимо ручного добавления видимости атрибутов, есть более быстрый способ разрешить беспорядок с меньшим количеством редактирования?

public void setSelection(int x){...} /// Yay! only 5000 more occurrences to go! 
+0

вы можете использовать eclipse ide для рефакторинга, используете ли вы его? –

+0

Я использую NetBeans, и у него есть базовая поддержка для рефакторинга. Однако проект WAS компилируется, когда все файлы находятся в одной папке. В тот момент, когда я начинаю организовывать, эти ошибки генерируются. –

ответ

1

Я думаю, вы должны исправить это вручную. Для каждого класса и члена класса выносите решение о том, должен ли получитьpublic, protected, private или пакет приватным. Создание/фиксирование границ модульности и абстракции не является чем-то, что я мог бы доверять тупым инструментам.

Да, если у вас есть сотни сообщений об ошибках, у вас есть много чего исправить. Но конечным результатом будет код лучшего качества ... чем если бы вы вслепую изменили весь пакет, который был приватным, до public.

1

Вы можете попробовать выполнить поиск с заменой NetBeans с помощью регулярного выражения. Я не очень хорошо знаю Netbeans, но я знаю, что это возможно, и с затмением это довольно хорошо. Подсказка: просмотр часов перед проверкой замены.

Например, в вашем случае, вы можете использовать его:

search regex = (^[^\n\w]*void\s.*$) 
    replacement = public $0 

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

Смежные вопросы