public class KV<K, V> {
public K key;
public V value;
public KV(K key, V value) {
this.key = key;
this.value = value;
}
}
Estou tentando refatorar a variável de classe value, o que acontece no lugar. Isso significa que nenhuma caixa de diálogo é exibida; Eu pressiono enter e ele tenta refatorar todo o projeto, incluindo comentários e o que não, incluindo:
<%--<link href="<c:url value="../core/core.css" />" />--%>
em um arquivo .jsp. Isso é muito "inteligente" para tentar refatorar comentários que correspondam em todo o projeto. Isso geralmente causa muitos riscos de bug e a refatoração em um ambiente Java não é mais segura.
A mesma coisa estava ocorrendo no Intellij 12. Sério, eu não preciso do Intellij para recomendar nada que seja considerado inseguro, ou quando não tenho certeza se é a mesma coisa!
Posso excluir as refatorações, mas não tenho tempo para avaliar cinco "sugestões" todas as vezes. Isso apenas aumenta a chance de erro humano: na maioria das vezes eu apenas pressiono enter e, woops, as coisas são refeitas.
Refatorar também é um grande problema em um ambiente Java, quando às vezes tenta substituir coisas em arquivos .js. Sério, isso tem que parar.
Sem a caixa de diálogo pop-up, não consigo desmarcar "strings de pesquisa". Mesmo se isso estiver marcado, o Intellij nunca deve incluir as sugestões por padrão, especialmente quando estiver fora do arquivo atual. Ele pode recomendar refatorá-los também, mas eles devem ser excluídos por padrão. Ou seja, deve ser um recurso opcional, em vez de destruir tudo por padrão.
Este é um sério problema de experiência do usuário com a chamada refatoração "inteligente" do Intellij mais recente. Ao refatorar arquivos JS, não quero procurar comentários ou strings nos arquivos Java! Período! E vice versa!
A segurança está em primeiro lugar! Os desenvolvedores que sabem o que estão fazendo, eles próprios procurarão strings, se necessário. Em um ambiente de linguagem dinâmico, torna o Intellij impossível de usar, porque frequentemente, e sem nenhum padrão claro, às vezes as refatorações passam, às vezes muda as coisas no projeto e outras coisas.
Deve haver uma opção que diz, "refatorar apenas em relação a este arquivo ou quando 100% inferido!", Especialmente para linguagens dinâmicas! Para linguagens estáticas, não deve nem tentar procurar comentários e strings fora do arquivo.
Eu não queria colocá-lo em público, mas levantei esse problema há mais de 2 anos no bugtracker, mas ninguém prestou atenção.
EDITAR
Para aqueles de vocês que pensam que eu posso estar indo longe, eu apenas experimentei isto:
Com esta classe:
public class KV<K, V> {
public K key;
public V val;
public KV(K key, V val) {
this.key = key;
this.val = val;
}
}
E adicionando isso a qualquer classe Java, por exemplo:
public class CoreConfig {
String abc = "kv.val";
String def = "somethingElse.val";
}
Ao refatorar KV.valcomo antes, recebo as seguintes recomendações, um ENTER do desastre e algo que tenho que avaliar e excluir um de cada vez. É preciso esforço e é apenas irritante e arriscado. É como se alguém gritasse, PARE! E então ooh, nada depois de um minuto, frustração e um ensaio de 1000 palavras (isso).

Sério, existe uma maneira de desabilitar esse tipo de comportamento de risco !? E há alguma razão para isso estar ativado por padrão ??
EDIT 20200706
A merda continua em 2020: https://youtrack.jetbrains.com/issue/IDEA-245370