full - Intellij IDEA 13: ¿cómo desactivo los comentarios y cadenas de refactor?
intellij idea vs eclipse (2)
¿Y hay alguna razón por la que esto está activado por defecto?
Sí hay. La gente tiende a utilizar demasiadas DSL, plantillas e inyecciones de lenguaje en estos días. En la vieja y simple Java, todas estas cosas existen principalmente como Strings. Reflection API también representa el método / nombre de clase como una cadena. No es posible que un IDE los soporte y reconozca a todos, por lo que lo mejor es brindarle una red de seguridad contra posibles errores de refactorización. Sin embargo, si tiene una excelente cobertura de prueba de unidad, entonces probablemente esté seguro aquí.
En cuanto a los comentarios, a menudo contienen muestras de código. Estos fragmentos de código se vuelven obsoletos rápidamente durante las renovaciones, por lo que es útil cuando IDE te recuerda su existencia.
Esta comprobación, por supuesto, da lugar a falsos positivos a veces. Sin embargo, si le da a sus variables nombres descriptivos que se explican por sí mismos (es decir, no "var" o "val"), es poco probable que suceda. Entonces, IDE te está empujando hacia un mejor estilo de código de alguna manera.
Si aún no está convencido, siga los consejos de @Meo y desactive la búsqueda en cadenas y comentarios.
public class KV<K, V> {
public K key;
public V value;
public KV(K key, V value) {
this.key = key;
this.value = value;
}
}
Estoy tratando de refactorizar el value
variable de clase, que sucede en su lugar. Eso significa que no aparece ningún diálogo; Presiono enter e intenta refactorizar en todo el proyecto, incluidos los comentarios y lo que no, incluyendo:
<%--<link href="<c:url value="../core/core.css" />" />--%>
en un archivo .jsp. Es demasiado "inteligente" para tratar de refactorizar los comentarios que coinciden en todo el proyecto. Esto a menudo causa muchos riesgos de errores, y la refactorización en un entorno Java ya no es segura.
Lo mismo estaba ocurriendo en Intellij 12. En serio, no necesito que Intellij recomiende nada que se considere inseguro, ¡o cuando no esté seguro de que sea lo mismo!
Puedo excluir las refactorizaciones, pero no tengo tiempo para evaluar cinco "sugerencias" cada vez. Simplemente aumenta la posibilidad de error humano: la mayor parte del tiempo solo presiono enter, y las cosas se refactorizan.
La refactorización también es un problema importante en un entorno Java cuando a veces intenta reemplazar cosas en archivos .js. En serio, esto tiene que parar.
Sin el cuadro de diálogo emergente, no puedo desmarcar "cadenas de búsqueda". Incluso si estuviera marcado, Intellij nunca debería incluir las sugerencias por defecto, especialmente cuando está fuera del archivo actual. Puede recomendar refactorizarlos también, pero deberían excluirse por defecto. Es decir, debe ser una función de aceptación, en lugar de destruir por defecto todo.
Este es un problema serio de la experiencia del usuario con la refactorización de Intellij más reciente llamada "inteligente". Al refaccionar archivos JS, no quiero buscar archivos Java para comentarios o cadenas. ¡Período! ¡Y viceversa!
¡La seguridad es lo primero! Los desarrolladores que saben lo que están haciendo buscarán cadenas ellos mismos si es necesario. En un entorno de lenguaje dinámico, hace que Intellij sea imposible de usar, porque con frecuencia, y sin ningún patrón claro, a veces se realizan refactorizaciones, a veces cambia las cosas en todo el proyecto y otras cosas.
Debería haber una opción que diga "refactorizar solo en relación con este archivo o cuando sea 100% inferido", ¡especialmente para lenguajes dinámicos! Para lenguajes estáticos, ni siquiera debería intentar buscar comentarios y cadenas fuera del archivo.
No quise publicarlo en público, pero he planteado este problema hace más de dos años en el rastreador de errores, pero nadie le prestó ninguna atención.
EDITAR
Para aquellos de ustedes que piensan que podría llegar muy lejos, simplemente probé esto:
Con esta clase:
public class KV<K, V> {
public K key;
public V val;
public KV(K key, V val) {
this.key = key;
this.val = val;
}
}
Y agregar esto a cualquier clase de Java, por ejemplo:
public class CoreConfig {
String abc = "kv.val";
String def = "somethingElse.val";
}
Al refaccionar KV.val
como antes, obtengo las siguientes recomendaciones, un ENTRAR del desastre y algo que debo evaluar y excluir de a uno por vez. Requiere esfuerzo y es molesto y arriesgado. Es como si alguien gritara, ¡ALTO! Y luego ooh, nada después de un minuto, la frustración y un ensayo de 1000 palabras largas (esto).
En serio, ¿hay alguna forma de desactivar este tipo de comportamiento arriesgado? ¿Y hay alguna razón por la que esto está activado por defecto?
Cuando presiona Shift + F6 (Refactor Rename)
dos veces, abre el cuadro de diálogo y puede deshabilitar "Buscar en comentarios y cadenas"