2012-02-16 27 views
14

Trabajo en un proyecto Java bastante grande (más de 2500 clases) que usa un estándar de código antiguo donde todas las variables miembro tienen el prefijo "m_" (por ejemplo, m_temperature). Realmente no hay razón para esto por más tiempo y me gustaría deshacerse de ellos, pero:Cambiar el nombre de muchas variables en muchas clases Java a la vez

  1. Con el fin de hacer el cambio que debo hacer todas las variables a la vez.
  2. No debe generar ningún error.

La primera aproximación ingenua de cambiando simplemente el nombre de todos los "m_variable" a sólo "variable" no será suficiente ya que ello podría producir conflictos de nombres entre una variable ya existente denominado "variable", y el recientemente renombrado uno.

Por lo tanto, para resumir: ¿Cómo cambio el nombre de todas estas molestas variables miembro sin tener problemas y hay más problemas que el mencionado anteriormente?

Sí, soy consciente de la refactorización/cambiar el nombre de funciones dentro de entornos de desarrollo, favor tener en cuenta que lo que quiero hacer los cambios a todas las variables que coinciden con los criterios a la vez y no haciendo clic derecho sobre las variables y cambiarles el nombre uno a uno.

+0

Puede hacerlo utilizando la herramienta de refactorización de eclipse ide. – Josnidhin

+0

tal vez quiere decir que solo necesita especificar los criterios, por ejemplo, el prefijo con "m_" y la "herramienta" buscará todo el proyecto para todas las variables globales y lo reemplazará. –

+0

Bryan: SÍ, eso es lo que me gustaría hacer. En IntelliJ y Eclipse, etc., se puede crear un estándar de código que siga el IDE al generar/autocompletar el código y allí es posible agregar o eliminar prefijos como "m_" para las variables de clase. Lo triste es que al cambiar el estándar de código dado estas cosas (en mi caso eliminando m_ como prefijo para las variables de clase) no se puede imponer sobre el código ya existente (no de la manera que he encontrado al menos) que funciona con formato de código, sin embargo. – tommys

Respuesta

5

Hay un question en Carolina del Sur que está a unos refactorización masiva en Java también. La mejor respuesta es usar japvaparser e implementar un visitante para hacer la refactorización real. Esto no debería ser tanto trabajo para un simple cambio de nombre.

+2

Esto suena a lo que necesito, ¡un analizador de secuencias de comandos hará un gran comienzo! – tommys

0

para responder a su segunda pregunta (¿Hay más problemas)

  1. yo evitaría las variables globales. Favor de encapsulation para que pueda localizar la funcionalidad.
  2. Implementaré algunos unit tests para que pueda verificar los cambios futuros. Por el momento parece que su único cheque disponible es que su proyecto se compila correctamente.

Me doy cuenta de que ambos son problemas potencialmente importantes en un proyecto existente. Pero vale la pena buscar identificar posibles puntos débiles y trabajar en ellos antes que nada.

+0

Por supuesto, estoy jugando el antiguo código heredado -card aquí :) – tommys

-3

Si está utilizando eclispe IDE, puede hacerlo de manera fácil.

Pasos:

  1. seleccionar la variable
  2. clic derecho sobre él
  3. clic en refactor
  4. clic en cambiar el nombre de

incluso en netbeans puede seguir mismos pasos . El IDE encuentra la referencia y el uso y lo reemplaza todo.

+0

Como dije en mi pregunta: hay más de 2500 clases con variables en ellos y me gustaría cambiarlos todos a la vez, eso no es realmente lo que estás proponiendo :) – tommys

-1

La herramienta de refabricación ayudará en este caso. Cuando cambie el nombre de una variable, la cambiará de nombre en todos los lugares dependientes, incluso si se llama en un archivo de clase diferente. Al hacer esto, lo alertará en caso de que su variable renombrada coincida con el nombre ya existente.

Sin embargo, tenemos que hacerlo manualmente para cada variable.

+0

Sí, por desgracia, y eso es solo un montón de trabajo que trato de evitar aquí. – tommys

7

¿Qué hay debajo de: mass renaming of java variables

por Simulante

clic en el nombre de la variable.

1: pulse [alt] + [shift] + [R]

2: introducir el nuevo nombre.

3: presione [enter] para confirmar.

-> se cambiarán el nombre de todas las instancias de esta variable.

+1

Gracias hombre, esto era lo que estaba buscando .. – rummykhan

+1

Usando Eclipse esta es la mejor respuesta que estoy buscando – user7344209

Cuestiones relacionadas