public class KV<K, V> {
public K key;
public V value;
public KV(K key, V value) {
this.key = key;
this.value = value;
}
}
我试图重构value
发生在适当位置的类变量。这意味着没有对话框弹出。我按回车键,它将尝试在整个项目中重构,包括注释和不包括注释的内容,包括:
<%--<link href="<c:url value="../core/core.css" />" />--%>
在.jsp文件中。这太“聪明”了,无法尝试重构与整个项目匹配的注释。这通常会导致很多错误风险,并且在Java环境中进行重构已不再安全。
Intellij 12中也发生了同样的事情。严重的是,我不需要Intellij推荐任何不安全的东西,或者不确定它是否是同一件事!
我可以排除重构,但是我没有时间每次评估五个“建议”。它只是增加了人为错误的机会:大多数时候,我只按Enter键,然后将事情重构。
在Java环境中,有时它试图替换.js文件中的内容时,重构也是一个主要问题。严重的是,这必须停止。
没有弹出对话框,我无法取消选中“搜索字符串”。即使那是在打勾,应该的IntelliJ绝不包括默认的建议,特别是当它位于当前文件。它也可以建议对其进行重构,但是默认情况下应将其排除在外。也就是说,它应该是一种选择加入功能,而不是默认情况下破坏所有内容。
最近的所谓的“智能” Intellij重构是一个严重的用户体验问题。重构JS文件时,我不想在Java文件中搜索注释或字符串!期!反之亦然!
安全第一!知道自己在做什么的开发人员将在需要时自行搜索字符串。在动态语言环境中,它使Intellij无法使用,因为它经常且没有任何明确的模式,有时会进行重构,有时会更改项目中的所有内容,而不会更改其他内容。
应该有一个选项说:“仅相对于该文件或当100%推断时才重构!”,尤其是对于动态语言!对于静态语言,它甚至不应尝试在文件外查找注释和字符串。
我本不想公开发布,但是两年多以前我在bugtracker中提出了这个问题,但是没有人注意。
编辑
对于那些认为我可能会走得更远的人,我只是尝试了一下:
与这个班:
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
像以前一样重构时,我得到以下建议,灾难中的回车以及我必须一次评估并排除的一项内容。这需要付出努力,并且令人生厌且冒险。就像有人大喊大叫,停止!然后,一分钟,无奈和一篇1000篇长词的论文(this),一切都没有。
认真地说,有没有办法禁用这种冒险行为!?并且有没有任何理由为什么默认情况下启用此功能?
编辑20200706
狗屎将在2020年继续发生:https : //youtrack.jetbrains.com/issue/IDEA-245370