Подтвердить что ты не робот

Eclipse: наиболее полезные рефакторинги

Время от времени я использую функцию рефакторинга Eclipse. Некоторые методы более очевидны, чем другие, а некоторые я никогда не пробовал.

Какой рефакторинг наиболее полезен для вас и почему?

Примечание. Я считаю эту презентацию очень полезной, возможно потому, что она, например, управляется таким образом, легко понять:

" Рефакторинг для всех - как и почему использовать автоматические функции рефакторинга Eclipse"

Изменить: эта статья также полезна (спасибо jitter)

Исследуйте функции рефакторинга в Eclipse JDT

4b9b3361

Ответ 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.