Есть ли способ рефакторинга, добавив внешний вызов метода, используя Intellij? - PullRequest
0 голосов
/ 24 января 2019

У меня есть это:

Arrays.asList(from(A, 14), from(A, 21), ...

Что мне нужно, это:

Arrays.asList(of(from(A, 14), 1), of(from(A, 21), 2), ...

Звонок from(A, number) должен быть превращен в of(from(A, number), anotherNumber).

Другими словами: мне нужно обновить длинный список таких вызовов from(), заключив их в of() и добавив второй параметр. В идеале, этот второй параметр будет просто считать вверх.

Есть ли способ сделать это с помощью инструментов рефакторинга IntelliJ? (вместо того, чтобы делать все вручную)

И обратите внимание: я не прошу рекомендации по инструментам. Я спрашиваю, поддерживает ли известный инструмент конкретную ситуацию рефакторинга.

Ответы [ 3 ]

0 голосов
/ 24 января 2019

Вы можете попробовать следующее:

  • Метод извлечения с заменой дубликатов на from(A, param)
  • Внутри извлеченного метода напишите что-то вроде of(from(A, param), NNN)
  • Встроенный метод
  • Заменить NNN нужными номерами (это нужно сделать вручную)

Если есть какая-то формула, которая может вычислять anotherNumber на основе number, вы можете использовать ее вместо NNN.

0 голосов
/ 24 января 2019

«Заменить структурно» может сделать то, что вам нужно.

  1. Выберите Edit> Find> Replace Structurally...
  2. Введите from($a$, $b$) в качестве шаблона поиска
  3. Введите of(from($a$, $b$), i) в качестве шаблона замены
  4. Выберите Scope: Current File (или Selection, если хотите)
  5. Hit Find
  6. Hit Replace all

Предполагая, что i не определено, вы останетесь с множеством ошибок.Вы можете циклически просмотреть ошибки с помощью F2 и заменить неопределенное i нужными значениями.


Бонусный совет: на Mac запустите seq 1 100 | pbcopy на терминале, чтобы ввести числа1-100 в буфер обмена.Затем с несколькими курсорами в IntelliJ нажмите Paste.1 будет вставлено на первый курсор, 2 на второй и т. Д.

0 голосов
/ 24 января 2019

Вы можете выделить from( и использовать горячую клавишу «Выбрать следующее вхождение». Как только вы выбрали все вхождения, просто замените его на of(from. Как только вы закончите добавление of, вы можете использовать «alt + клавиша со стрелкой влево», чтобы переместить курсор в положение, в которое вы хотите добавить число, ИЛИ «выбрать следующее вхождение», выделив ),. * 1005. *

На Mac горячая клавиша "CTRL + G", а в Windows \ Linux "ALT + J". Вот список горячих клавиш https://resources.jetbrains.com/storage/products/intellij-idea/docs/IntelliJIDEA_ReferenceCard.pdf

Это все еще немного ручное, но лучше, чем делать это один за другим.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...