public class KV<K, V> {
public K key;
public V value;
public KV(K key, V value) {
this.key = key;
this.value = value;
}
}
Saya mencoba untuk merefaktor variabel kelas value
, yang terjadi di tempat. Itu berarti tidak ada dialog yang muncul; Saya menekan enter dan mencoba melakukan refactor di seluruh proyek, termasuk komentar dan apa yang tidak, termasuk:
<%--<link href="<c:url value="../core/core.css" />" />--%>
dalam file .jsp. Itu terlalu "pintar" untuk mencoba mengubah komentar yang cocok di seluruh proyek. Hal ini sering kali menyebabkan banyak risiko bug, dan pemfaktoran ulang di lingkungan Java tidak lagi aman.
Hal yang sama terjadi di Intellij 12. Sungguh, saya tidak perlu Intellij merekomendasikan apa pun yang dianggap tidak aman, atau bila tidak yakin itu adalah hal yang sama!
Saya dapat mengecualikan pemfaktoran ulang tetapi saya tidak punya waktu untuk mengevaluasi lima "saran" setiap saat. Itu hanya meningkatkan kemungkinan kesalahan manusia: sebagian besar waktu saya hanya menekan enter, dan banyak hal yang difaktor ulang.
Refactoring juga merupakan masalah utama dalam lingkungan Java ketika terkadang mencoba mengganti sesuatu dalam file .js. Serius, ini harus dihentikan.
Tanpa dialog popup, saya tidak bisa menghapus centang "string pencarian". Meskipun sudah dicentang, Intellij tidak boleh menyertakan saran secara default, terutama bila itu berada di luar file saat ini. Ini dapat merekomendasikan untuk memfaktor ulang mereka juga, tetapi mereka harus dikecualikan secara default. Artinya, itu harus menjadi fitur keikutsertaan, daripada secara default menghancurkan semuanya.
Ini adalah masalah pengalaman pengguna yang serius dengan yang lebih baru yang disebut pemfaktoran ulang "pintar" Intellij. Saat melakukan refactoring file JS, saya tidak ingin mencari file Java untuk komentar atau string! Titik! Dan sebaliknya!
Keamanan adalah yang utama! Pengembang yang tahu apa yang mereka lakukan akan mencari string sendiri jika diperlukan. Dalam lingkungan bahasa yang dinamis, hal itu membuat Intellij tidak mungkin digunakan, karena seringkali, dan tanpa pola yang jelas, terkadang refactorings berjalan, terkadang hal itu mengubah banyak hal di seluruh proyek dan apa yang tidak.
Harus ada opsi yang mengatakan, "refactor hanya relatif terhadap file ini atau ketika 100% disimpulkan!", Terutama untuk bahasa dinamis! Untuk bahasa statis seharusnya tidak mencoba mencari komentar dan string di luar file.
Saya tidak bermaksud untuk mempublikasikannya, tetapi saya telah mengangkat masalah ini lebih dari 2 tahun yang lalu di bugtracker, tetapi tidak ada yang memperhatikan.
EDIT
Bagi Anda yang berpikir bahwa saya mungkin akan bertindak jauh, saya baru saja mencoba ini:
Dengan kelas ini:
public class KV<K, V> {
public K key;
public V val;
public KV(K key, V val) {
this.key = key;
this.val = val;
}
}
Dan menambahkan ini ke kelas Java apa pun , misalnya:
public class CoreConfig {
String abc = "kv.val";
String def = "somethingElse.val";
}
Ketika melakukan refactoring KV.val
seperti sebelumnya, saya mendapatkan rekomendasi berikut, ENTER dari bencana dan sesuatu yang harus saya evaluasi dan kecualikan satu per satu. Itu membutuhkan usaha dan hanya mengganggu dan berisiko. Ini seperti seseorang berteriak, BERHENTI! Dan kemudian ooh, tidak ada setelah satu menit, frustrasi dan esai 1000 kata panjang (ini).
Sungguh, apakah ada cara untuk menonaktifkan perilaku berisiko seperti ini !? Dan apakah ada alasan mengapa ini diaktifkan secara default ??
EDIT 20200706
Sial berlanjut di 2020: https://youtrack.jetbrains.com/issue/IDEA-245370