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

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

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

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

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

Редактировать: Эта статья также полезна (спасибо джиттер)

Изучите функции рефакторинга в Eclipse JDT

13 ответов

Решение

Это интересный вопрос. Я знаю, что работает для меня, и интересно посмотреть, что используют другие.

Я решил использовать более научный подход для определения наиболее часто используемых команд рефакторинга. Eclipse имеет встроенную функцию сбора данных об использовании (UDC). Данные являются общедоступными. Я взял данные и извлек следующий график, который показывает наиболее часто используемые команды редактирования (без команд навигации).

http://img.skitch.com/20091207-bmcng36rjy837sqmcx58b85age.gif

Тем не менее, я твердо верю в "Сохранить действия" для форматирования и организации импорта (прочитайте мою статью об этом), поэтому я бы не стал их считать. Я бы тоже удалил комментирующие действия. Картинка выглядит так: http://img.skitch.com/20091207-ieas1mk5114fwitucqkqxyw6t.gif

Переименуйте - потому что написание значимых имен - лучший способ написания самодокументируемого кода. Shift+Alt+R

Извлечь метод - всякий раз, когда метод становится слишком длинным. Shift+Alt+M

Извлекайте константу - потому что магические числа плохие. Shift+Alt+T (рефакторинг меню, прямого ярлыка нет).

Встроенная / вводная переменная - чтобы убрать помехи из методов. Shift+Alt+I (встроенный), Shift+Alt+L (ввести)

Мои любимые (в порядке использования):

  1. Переименовать (Alt-Shift-R, или же Ctrl-1 для более быстрого переименования в файле)
    Хорошее переименование переменных, методов и т. Д. без побочных эффектов.
  2. Извлечь переменную (Ctrl-1, Alt-Shift-L)
    Подходит для разбиения строки быстрого набора из 100 символов на отдельные шаги.
  3. Метод извлечения (Alt-Shift-M)
    Создайте метод из некоторого кода без каких-либо побочных эффектов.
  4. Разделенная декларация переменной (Ctrl-1)
    Хорошо, когда вы инициализируете переменную в объявлении и теперь выясняете, что инициализация должна быть в блоке try или if.
  5. Изменить метод Подпись (Alt-Shift-C)
    Удобный швейцарский армейский нож для манипулирования сигнатурой метода, включая значения по умолчанию для новых параметров.
  6. Pull Up / Push Down Pull методы и переменные к универсальному интерфейсу или суперклассу или толчок вниз к подклассу
  7. Извлечь интерфейс / суперкласс
    Извлеките интерфейс или суперкласс из текущего класса. Очень кстати.

Мои любимые:

  1. Переименование
  2. Потяните вверх / нажмите вниз
  3. Метод извлечения

Самые популярные рефакторинги были заявлены, и я полностью с ними согласен.

Форматирование кода (Source, Format или Ctrl Shift F) является одной из функций IDE, которую я очень часто использую. Правда, это не рефакторинг, но он улучшает читабельность кода, сохраняя при этом ваш стиль кодирования: просто перейдите в Preferences, Java, Code Style, Formatter и сообщите Eclipse, как вы хотите, чтобы ваш код выглядел!

Создание геттеров и сеттеров - это также функция, которую я нахожу для экономии времени при написании Java-бинов.

Eclipse, возможно, имеет наименьшее количество рефакторингов для всех популярных IDE. Вы можете рассмотреть Netbeans или IntelliJ (версия для сообщества бесплатна). И наоборот, у Eclipse, возможно, лучший отладчик.;)

Я использую рефакторинг, когда пишу код (который, как я обнаружил, ускоряет написание примерно на 15%), поэтому способность IntelliJ реорганизовывать код, который не компилируется, очень полезна для меня. Другие IDE могут поддерживать это сейчас (кто-нибудь знает?) Я нахожу, что Smart Complete IntelliJ также немного умнее.

Я протестировал повторный набор файлов из распечатки (изначально написанной в Eclipse) и обнаружил, что при наборе файла с помощью IntelliJ (по сравнению с Eclipse) я использовал на 30% меньше клавиш и на 50% меньше движений мыши. По моим оценкам, Netbeans находится где-то посередине.

Мои любимые:

1) Переименовать - он работает с именами методов, именами переменных, именами классов, полями - на самом деле все, что с именем.
2) Преобразовать анонимный класс во вложенный - Помогает с отладкой, позволяет повторно использовать логику (например, компаратор), которую вы думали, что будете использовать только в одном месте.
3) Преобразовать тип члена в верхний уровень. Часто после превращения анонимного класса во вложенный класс я обнаруживаю, что этот класс полезен в других местах. Этот рефакторинг идеален тогда.

Мне нравится метод извлечения (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

Больше всего я использую переименование, извлечение метода и изменение метода подписи в указанном порядке.

CTRL + 1 на красной подкладке, т.е. быстрое исправление.

Я использую:

1- Переименовать - чтобы лучше исправить имя метода

2- Переместить - чтобы упорядочить свой пакет лучше, например, когда я начинал свой проект, он был настолько мал, что пакет io не нужен, но теперь да.

3. Генерация комментариев. Когда я создаю.class, избегайте повторного копирования лицензии GPL и т. Д.

4- Правильный отступ - чтобы мой код читался.

Также стоит прочитать это исследование: как развивается API? История рефакторинга. Д. Диг и Р. Джонсон.

Авторы заметили, что 80% изменений были рефакторингами и классифицировали их. Вот тезисы:

Фреймворки и библиотеки меняют свои API. Перенос приложения на новый API утомителен и нарушает процесс разработки. Хотя для решения эволюции API были предложены некоторые инструменты и идеи, большинство обновлений выполняется вручную. Чтобы лучше понять требования к инструментам миграции, мы изучили изменения API четырех платформ и одной библиотеки. Мы обнаружили, что изменения, которые нарушают существующие приложения, не являются случайными, но имеют тенденцию делиться на определенные категории. Более 80% этих изменений являются рефакторингами. Это говорит о том, что для обновления приложений следует использовать инструменты миграции на основе рефакторинга.

"Стоит также прочитать это исследование: как развиваются API? История рефакторинга". Д. Диг и Р. Джонсон.

Авторы заметили, что 80% изменений были рефакторингами и классифицировали их. Вот реферат... "

Было обнаружено, что 80% BREAKING изменений являются рефакторингами. Сами рефакторинги составляли только 20 - 30% изменений API.

Другие вопросы по тегам