public class KV<K, V> {
public K key;
public V value;
public KV(K key, V value) {
this.key = key;
this.value = value;
}
}
Я намагаюся здійснити рефакторинг змінної класу value
, що відбувається на місці. Це означає, що діалогове вікно не з’являється; Я натискаю клавішу Enter, і вона намагається здійснити рефакторинг по всьому проекту, включаючи коментарі, а також ні, зокрема:
<%--<link href="<c:url value="../core/core.css" />" />--%>
у файлі .jsp. Це занадто «розумно», щоб намагатися рефакторингувати коментарі, які відповідають усьому проекту. Це часто спричиняє багато помилок, і рефакторинг у середовищі Java перестає бути безпечним.
Те саме траплялося в Intellij 12. Серйозно, мені не потрібен Intellij, щоб рекомендувати щось, що вважається небезпечним, або коли не впевнений, що це те саме!
Я можу виключити рефакторинг, але у мене немає часу щоразу оцінювати п'ять "пропозицій". Це просто підвищує ймовірність людської помилки: більшу частину часу я просто натискаю клавішу Enter і обробляю речі реконструйованими.
Рефакторинг також є основною проблемою в середовищі Java, коли він іноді намагається замінити речі у файлах .js. Серйозно, це повинно зупинитися.
Без діалогового вікна, що спливає, я не можу зняти позначку "рядки пошуку". Навіть якщо це було позначено, Intellij ніколи не повинен включати пропозиції за замовчуванням, особливо коли це поза поточним файлом. Він може порекомендувати їх також переробляти, але за замовчуванням їх слід виключити. Тобто, це повинна бути функція, яку ви приймаєте, а не за замовчуванням знищувати все.
Це серйозна проблема взаємодії користувачів із недавнім так званим "розумним" рефакторингм Intellij. Під час рефакторингу файлів JS я не хочу шукати у файлах Java коментарі чи рядки! Період! І навпаки!
Безпека на першому місці! Розробники, які знають, що роблять, самі шукатимуть рядки, якщо це потрібно. В динамічному мовному середовищі це робить Intellij неможливим для використання, оскільки часто і без чіткого шаблону іноді проходять рефакторинг, іноді це змінює ситуацію в проекті, а що ні.
Повинен бути варіант, який говорить: "рефактор лише щодо цього файлу або коли 100% виведено!", Особливо для динамічних мов! Для статичних мов навіть не слід намагатися шукати коментарі та рядки поза файлом.
Я не хотів публічно викладати це, але я вже 2 роки тому порушував цю проблему у програмі пошуку помилок, але ніхто не звертав на це уваги.
РЕДАГУВАТИ
Для тих з вас, хто думає, що я можу зайти далеко, я просто спробував це:
У цьому класі:
public class KV<K, V> {
public K key;
public V val;
public KV(K key, V val) {
this.key = key;
this.val = val;
}
}
І додавши це до будь-якого класу Java, наприклад:
public class CoreConfig {
String abc = "kv.val";
String def = "somethingElse.val";
}
Під час рефакторингу, KV.val
як і раніше, я отримую наступні рекомендації, ENTER від катастрофи та щось, що я повинен оцінювати та виключати по одному. Це вимагає зусиль і просто дратує і ризикує. Це ніби хтось кричить, СТОП! А потім о, нічого після хвилини, розчарування та 1000 довгих слів (це).
Серйозно, чи є спосіб відключити такий вид ризикованої поведінки !? І чи є якась причина, чому це ввімкнено за замовчуванням ??
РЕДАКТУВАТИ 20200706
Лайно триває і в 2020 році: https://youtrack.jetbrains.com/issue/IDEA-245370