Eclipse: наиболее полезные рефакторинги
Время от времени я использую функцию рефакторинга Eclipse. Некоторые методы более очевидны, чем другие, а некоторые я никогда не пробовал.
Какой рефакторинг наиболее полезен для вас и почему?
Примечание. Я считаю эту презентацию очень полезной, возможно потому, что она, например, управляется таким образом, легко понять:
" Рефакторинг для всех - как и почему использовать автоматические функции рефакторинга Eclipse"
Изменить: эта статья также полезна (спасибо jitter)
Исследуйте функции рефакторинга в Eclipse JDT
Ответы
Ответ 1
Это интересный вопрос. Я знаю, что работает для меня, и интересно посмотреть, что используют другие.
Я решил использовать более научный подход для определения наиболее часто используемых команд рефакторинга. Eclipse имеет встроенную функцию Data Collector (UDC). Данные общедоступный. Я взял данные и извлек следующий график, который показывает наиболее часто используемые команды редактирования (без команд навигации).
alt text http://img.skitch.com/20091207-bmcng36rjy837sqmcx58b85age.gif
Тем не менее, я твердо верю в "Сохранить действия" для форматирования и организации импорта (прочитайте мою статью об этом), поэтому я бы Нет. Я бы также удалил комментарии. Изображение выглядит так: alt text http://img.skitch.com/20091207-ieas1mk5114fwitucqkqxyw6t.gif
Ответ 2
Переименовать - потому что предоставление значимых имен - лучший способ написать самодокументирующий код. Shift + Alt + R
Метод извлечения - всякий раз, когда метод слишком длинный. Shift + Alt + M
Извлечь константу - потому что магические числа плохие. Shift + Alt + T (меню рефакторинга, нет прямого ярлыка).
Inline/ввести переменную - удалить беспорядок из методов. Shift + Alt + I (inline), Shift + Alt + L (ввести)
Ответ 3
Мои избранные (в порядке использования):
- Переименовать (
Alt-Shift-R
или Ctrl-1
для быстрого переименования файлов)
Хорошие переменные переименования, методы и т.д. без побочных эффектов.
- Извлечь переменную (
Ctrl-1
, Alt-Shift-L
)
Хорошо для разделения быстро сделанной-100-символьной строки для разделения шагов.
- Метод извлечения (
Alt-Shift-M
)
Создайте метод из некоторого кода без каких-либо побочных эффектов.
- Объявление переменной разделения (
Ctrl-1
)
Хорошо, когда вы инициализируете переменную в объявлении и теперь узнаете, что инициализация должна быть в try- или if-блоке.
- Подпись метода изменения (
Alt-Shift-C
)
Удобный швейцарский армейский нож манипуляции подписи метода, включая значения по умолчанию для новых параметров.
- Вытягивание/выталкивание
Вытяните методы и переменные на общий интерфейс или суперкласс или переместите его в подкласс
- Извлечение интерфейса/суперкласса
Извлеките интерфейс или суперкласс из текущего класса. Очень удобно.
Ответ 4
Мои избранные:
- Переименование
- Потяните вверх /Push Down
- Метод извлечения
Ответ 5
Самые популярные рефакторинги были изложены, и я полностью согласен с ними.
Форматирование кода (источник, формат или Ctrl Shift F) - одна из особенностей среды IDE, которую я использую очень часто. Правда, это не рефакторинг, но он улучшает читаемость кода, сохраняя при этом стиль кодирования: просто переходите к настройкам, Java, Code Style, Formatter и расскажите Eclipse, как вы хотите, чтобы ваш код выглядел!
Генерировать Getters и Setters - это также функция, которую я нахожу для экономии времени при написании Java beans.
Ответ 6
Eclipse имеет, пожалуй, наименьший рефакторинг для всех популярных IDE. Вы можете подумать, что Netbeans или IntelliJ (издание сообщества бесплатно). И наоборот, Eclipse, возможно, лучший отладчик.;)
Я использую рефакторинг, когда пишу код (который, как я нашел, ускоряет запись примерно на 15%), поэтому способность IntelliJ реорганизовать код, который не компилируется очень полезен для меня. Другие IDE могут поддержать это сейчас (знает ли кто-нибудь?)
Я нахожу, что IntelliJ smart complete является более умным и умным.
Я тестировал перепечатывание файлов из распечатки (изначально написанных в eclipse) и обнаружил, что я использовал на 30% меньше клавиш и на 50% меньше движений мыши при вводе файла с IntelliJ (по сравнению с Eclipse). Я бы оценил Netbeans как где-нибудь в средний.
Ответ 7
Мои фавориты:
1) Переименовать - он работает с именами методов, именами переменных, именами классов, полями - действительно что-либо с именем.
2) Преобразование анонимного класса в вложенное - Помогает с отладкой, позволяет повторно использовать логику (например, компаратор), которую вы только думали, что будете использовать в одном месте.
3) Преобразование типа члена в верхний уровень. Часто после внесения анонимного класса во вложенный класс я обнаружил, что класс полезен в другом месте. Этот рефакторинг идеален тогда.
Ответ 8
То, что я использую больше всего, это переименование, метод извлечения и изменение метода Signature в этом порядке.
Ответ 9
CTRL + 1 на красной выровненной секции, то есть быстро исправить.
Ответ 10
Мне нравится метод извлечения (Alt + Shift + M), и поскольку 3.6M1, теперь он обрабатывает выборки, содержащие инструкции continue.
Чтобы сохранить семантику существующего кода, выбор должен включать последний оператор цикла. В извлеченном методе инструкции continue изменяются для возврата:
Рефакторинг метода извлечения с продолжением http://download.eclipse.org/eclipse/downloads/drops/S-3.6M1-200908061400/images/extract-method-continue.png
Для выбора, который потребует нескольких возвращаемых значений в извлеченном методе, Eclipse теперь перечисляет конфликтующие переменные в сообщении об ошибке:
Рефакторинг метода извлечения с неоднозначной ошибкой возвращаемого значения http://download.eclipse.org/eclipse/downloads/drops/S-3.6M1-200908061400/images/extract-method-multiple-return-values.png
Ответ 11
Я использую:
1- Переименовать - для исправления лучшего имени метода
2- Переместить - чтобы упорядочить мой пакет лучшими способами, например, когда я начал свой проект, он был настолько мал, чтобы не требовать пакет io, но теперь да.
3- Генерировать комментарии - когда я создаю .class, избегайте повторной копии лицензии GPL и т.д.
4- Правильный отступ - чтобы мой код читался.
Ответ 12
Также стоит прочитать это исследование: Как развивается API? История рефакторинга. Д. Диг и Р. Джонсон.
Авторы заметили, что 80% изменений были рефакторингом и классифицированы. Вот тезис:
Рамки и библиотеки меняют API-интерфейсы. Миграция приложения на новый API является утомительным и нарушает процесс развития. Хотя некоторые были предложены инструменты и идеи для решить эволюцию API, большинство обновления выполняются вручную. К лучшему понимать требования к инструменты миграции, мы изучили API изменения четырех рамок и один библиотека. Мы обнаружили, что изменения, которые нарушают существующие приложения не являются случайными, но имеют тенденцию попадать в определенные категории. Более 80% этих изменений рефакторинга. Это говорит о том, что инструменты миграции на основе рефакторинга следует использовать для обновления приложений.
Ответ 13
"Также стоит прочитать это исследование: как развивается API? История рефакторинга. Д. Диг и Р. Джонсон.
Авторы заметили, что 80% изменений были рефакторингом и классифицированы. Вот аннотация... "
Было отмечено, что 80% изменений BREAKING являются рефакторингами.
Сами рефакторинги образовали только 20-30% изменений API.