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環境でのリファクタリングはもはや安全ではありません。
同じことがIntellij12でも発生していました。真剣に、安全でないと見なされるもの、または同じことが確実でない場合は、Intellijが推奨する必要はありません。
リファクタリングを除外することはできますが、毎回5つの「提案」を評価する時間がありません。それは人為的エラーの可能性を高めるだけです。ほとんどの場合、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と、一度に1つずつ評価して除外する必要があるものです。それは努力を要し、ただ迷惑で危険です。誰かが叫んでいるようなものです、やめて!そして、ああ、1分後に何も、欲求不満と1000の長い単語のエッセイ(これ)。
真剣に、この種の危険な行動を無効にする方法はありますか?そして、これがデフォルトでオンになっている理由はありますか?
20200706を編集
たわごとは2020年も続く:https: //youtrack.jetbrains.com/issue/IDEA-245370