Статьи

Eclipse рефакторинг на стероидах

В моем последнем посте о распространенных нарушениях Java я перечислил ряд ошибок, которые склонны делать Java-разработчики. Проводя рефакторинг проекта Java с целью устранения этих нарушений, я широко использовал возможности рефакторинга Eclipse, чтобы быстро изменить код. Ниже приводится подборка таких методов рефакторинга.

1. Добавление фигурных скобок вокруг операторов уровня блока

Часто рекомендуется заключать операторы уровня блока в {фигурные скобки}. Но, тем не менее, если в блоке есть только одна инструкция, некоторые разработчики предпочитают не заключать их в {}. Но Checkstyle будет жаловаться, если вы сделаете это.

Если вы хотите изменить это,

1
2
if(condition)
    doSomething;

к этому:

1
2
3
if(condition){
    doSomething();
}

Чистка источника Eclipse там для вашей помощи.

  1. В Project Explorer щелкните правой кнопкой мыши исходную папку и выберите « Источник» -> «Очистить». используя исходную очистку, чтобы добавить фигурные скобки вокруг операторов блока
  2. Выберите « Использовать пользовательский профиль» и нажмите « Настроить» рядом с разделом «Пользовательский профиль».
  3. По умолчанию действие очистки настроено на выполнение нескольких задач очистки. Поскольку мы сосредоточены только на добавлении фигурных скобок, мы отключим все другие задачи очистки. Для этого перейдите на все вкладки в окне « Пользовательские очистки» и отмените выбор всех очисток.
  4. Затем на вкладке « Стиль кода » выберите параметр « Использовать блоки в выражениях if / while / for / do» и нажмите « ОК».
  5. Затем в диалоговом окне « Очистить » нажмите « Далее», и рефакторинг произойдет. Вам будет представлена ​​страница с обзором внесенных изменений.

2. Присоединение к операторам if в одно

Допустим, у вас есть такой код:

1
2
3
4
5
if(isLoggedIn){
  if(isAdmin){
    doSecretStuff();
  }
}

Безопасно объединять два оператора if в один, если между двумя операторами if нет другого кода. Конечно, вы можете вручную отредактировать код, чтобы удалить второе условие if и переместить условие вверх. Но подождите, когда Eclipse может сделать это для нас, почему мы должны делать это сами?

  1. Поместите курсор на ключевое слово if внутреннего оператора if .
  2. Нажмите Ctrl + 1, чтобы открыть контекстное меню.
  3. Выберите опцию Соединить оператор «if» с внешним оператором «if» .
  4. Вуаля! два оператора if теперь объединены в одно.

Ты получишь:

1
2
3
if(isLoggedIn && isAdmin){
  doSecretStuff();
}


3. Переименование файла и его методов получения / установки

Согласно этому , переименование элемента является наиболее часто используемым рефакторингом в Eclipse. Поэтому, когда вы переименовываете поле, содержащее методы установки / получения, вы должны вручную переименовывать эти имена методов. Но Eclipse может помочь здесь упростить это.

  1. Наведите курсор на имя поля, которое вы хотите переименовать.
  2. Нажмите Ctrl + Shift и затем дважды нажмите клавишу R, чтобы открыть диалоговое окно « Переименовать поле» .
  3. Проверьте параметры «Переименовать получатель» и « Переименовать установщик» , указав новое имя для вашего поля.
  4. При нажатии OK это переименует поле, а также его методы получения / установки.

4. Инвертирующий оператор if

Предположим, у вас есть такой код:

1
2
3
4
5
if(!isLoggedIn){
  // ask to login
}else{
  // allow access
}

Выше код действителен на 100%. Но инструменты качества кода, такие как Checkstyle, могут жаловаться, потому что мы используем проверку негатива в первом условии (то есть ! IsLoggedIn ). Когда у вас есть только один случай (только блок if), тогда мы ничего не можем с этим поделать. Но когда у вас есть и то и другое , тогда вы можете просто инвертировать условия, чтобы избежать этого сценария.

  1. Поместите курсор на первое ключевое слово if .
  2. Нажмите Ctrl + 1 и затем выберите Инвертировать оператор «if» .
  3. Затмение будет инвертировать условия и соответствующие блоки.
  4. Наконец вы получите:
    1
    2
    3
    4
    5
    if(isLoggedIn){
      // allow access
    }else{
      // ask to login
    }

Помогает улучшить читаемость кода.

Вывод:

Конечно, все это только верхушка айсберга. Eclipse способен выполнять гораздо более продвинутый рефакторинг. Итак, каковы ваши секретные методы рефакторинга?

Ссылка: Eclipse рефакторинг на стероиды от нашего партнера JCG Веры Сундар в блоге