Eclipse: [Закрывается] большинство полезных рефакторингов

Если Вы действительно даете пользователю вопрос, не делайте его вопросом "да"/"нет". Не торопитесь, чтобы сделать новую форму и поместить глаголы как выбор как в Mac

, Например:

 Would you like to save?    
     Yes        No

Должен Быть:

  Would you like to save?
    Save        Don't Save 

существует более подробное объяснение здесь.

44
задан 2 revs 1 December 2009 в 15:25
поделиться

12 ответов

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

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

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

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

52
ответ дан 26 November 2019 в 21:48
поделиться

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

1
ответ дан 26 November 2019 в 21:48
поделиться

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

  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 Вытяните методы и переменные в общий интерфейс или суперкласс или переместите его в подкласс
  7. Извлечь интерфейс / суперкласс
    Извлечь интерфейс или суперкласс из текущего класса. Очень удобно.
20
ответ дан 26 November 2019 в 21:48
поделиться

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

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

Генерация методов получения и установки - это тоже функция, которую я считаю, чтобы сэкономить время при написании Java beans.

4
ответ дан 26 November 2019 в 21:48
поделиться

Переименовать - потому что давать вещам осмысленные имена - лучший способ написать самодокументированный код. Shift + Alt + R

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

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

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

30
ответ дан 26 November 2019 в 21:48
поделиться

Мои избранные:

  1. Переименование
  2. Подтягивание / толкание
  3. Метод извлечения
7
ответ дан 26 November 2019 в 21:48
поделиться

Мои любимые:

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

2
ответ дан 26 November 2019 в 21:48
поделиться

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

1
ответ дан 26 November 2019 в 21:48
поделиться

Мне нравится метод извлечения ( Alt + Shift + M ), а с 3.6M1 , теперь он обрабатывает выборки, содержащие операторы continue.

Чтобы сохранить семантику существующего кода, выборка должна включать последний оператор цикла. В извлеченном методе операторы continue заменены на return:

Рефакторинг метода извлечения с помощью 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

1
ответ дан 26 November 2019 в 21:48
поделиться

Я использую:

0
ответ дан 26 November 2019 в 21:48
поделиться

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

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

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

3
ответ дан 26 November 2019 в 21:48
поделиться

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

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

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

0
ответ дан 26 November 2019 в 21:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: