¿Una forma sencilla de reordenar los métodos de una clase Java en IntelliJ?

82

¿Existe una forma más sencilla de reordenar los métodos dentro de un archivo fuente de clase en IntelliJ que cortar y pegar el código manualmente? Hoy en día, a menudo necesito esto mientras refactorizo ​​el código heredado, por ejemplo, para acercar los métodos relacionados entre sí en el código fuente.

En Eclipse AFAIK hay una vista similar a la vista Estructura de IntelliJ, donde puedo arrastrar y soltar métodos. Sin embargo, esto no funciona en IntelliJ y tampoco pude encontrar ninguna pista de su ayuda.

Estoy usando IntelliJ 9.0.2 para ser específico.

Péter Török
fuente
Creo que la mejor solución sería una herramienta de formato que ordene sus métodos automáticamente. Prosa: Los métodos deben ser ordenados en la forma en que se llaman. Como leerías un artículo en un periódico.
Chris311

Respuestas:

107

Puede seleccionar un nombre de método y presionar: Ctrl+ Shift+ Upo Ctrl+ Shift+ Downpara moverlo hacia arriba y hacia abajo.

En OS X: Cmd+ Shift+ Upo Cmd+ Shift+Down

Más allá de esto, el complemento Rearranger le permite mover métodos rápidamente e incluso definir un orden estándar basado en su convención de codificación.

retrónimo
fuente
¿No hay algo que simplemente reordenar alfabéticamente, por ejemplo?
Jaime Hablutzel
El enlace está muerto, este parece ser el correcto: java.net/projects/rearranger
stian
@stian - He editado la publicación para que apunte a la página del complemento en el sitio web de JetBrains, ya que el enlace que publicó no parece tener ninguna descarga disponible
adrian
5
Para Mac OS X: Cmd + Shift + Arriba / Cmd + Shift + Abajo
Christian García
2
Desde IDEA 16 está disponible a través del menú:Code > Move Statement Up/Down
Lu55
23

No es una respuesta perfecta sin embargo , debido a un error en IntelliJ.

Aunque IntelliJ ofrece esta función implícitamente, debe habilitarse y solucionarse. La forma sugerida por el OP es organizar técnicamente los métodos en profundidad de primer orden. Sin embargo, si usa el orden de amplitud primero (que funciona correctamente), debería reducir mucho el trabajo manual de las funciones de movimiento, al organizar todos los métodos de llamador y destinatario de la llamada juntos.

Enlace de emisión: https://youtrack.jetbrains.com/issue/IDEA-149524 . Por favor vote por su resolución.

IntellijRearrangeMethodsInDFO

La acción apropiada para esto es Reorganizar código. No tiene ninguna tecla asignada, pero puede definir la suya propia usando Preferencias-> Mapa de teclas.

ReorganizarAcciónMenúBotón

ingrese la descripción de la imagen aquí

saurabheights
fuente
23

IntelliJ tiene un sistema integrado que le permite especificar cómo ordenar sus métodos. Debe ir a Configuración (Ctrl + Alt + S) -> Editor -> Estilo de código -> Java -> Disposición (pestaña) y desplazarse hacia abajo hasta encontrar los íconos con methods. Allí puede manipular las opciones para ordenarlas por visibilidad o alfabéticamente, o para mantener agrupadas las relacionadas. Aquí hay una captura de pantalla de mi configuración que ordenará los métodos automáticamente por visibilidad (público, protegido, privado) y alfabéticamente (az). Los resaltados azules muestran las reglas seleccionadas actualmente.

ingrese la descripción de la imagen aquí

georger
fuente
1
¿Cómo puedo aplicar una elección de orden a una o más reglas a la vez?
Derek Mahar
Esto no funciona en absoluto. Usar esta configuración y realizar Reorganizar no hace nada.
Mulgard
Esta solución funciona con el pedido predeterminado. ¡Gracias!
Mr. Polywhirl
7

Con el cursor en la línea de definición del método (no tiene que hacerlo y presione ctrl+ shift+ upo ctrl+ shift+ down, para moverse hacia arriba o hacia abajo respectivamente.

También puede ctrl+ shift+ numberpad -para colapsar todo rápidamente para que pueda concentrarse en moverse (simplemente -funciona en mi computadora portátil, no estoy seguro de por qué) y ctrl+ shift+ numberpad +para volver a ver todo (ctrl-shift-equals funciona en mi computadora portátil como bien).

Yishai
fuente
3

Seleccione un bloque de texto (presione Ctrl-W varias veces) y luego use Ctrl-Shift-Up y Ctrl-Shift-Down para moverlo.

Jacob Mattison
fuente
1

Hay una forma automatizada, que luego puedes modificar

Código -> mostrar diálogo de archivo de reformateo

y marque la casilla "reorganizar código"

solo
fuente