2012-10-04 47 views
19

Estoy tratando de refactorizar mi código VBA. Estoy tan acostumbrado a usar la refactorización en IDE basados ​​en Java durante varios años. ¿El editor de VBA admite alguna refactorización o hay complementos? MZ Tools no tenía esa funcionalidad.refactorización del código vba: ¿hay alguna herramienta para ayudar?

Quiero ser capaz de hacer por lo menos lo siguiente: 1. Cambiar el nombre de las variables 2. Procedimientos divide en sub-procedimientos para hacer el código más legible 3. Cambiar el alcance de la variable del nivel mundial al procedimiento y viceversa

+0

No lo he usado hasta la fecha. Pero mira de este enlace ayuda? http://visualbasic.about.com/od/usingvbnet/a/refact_4.htm –

+13

Veo alcohol en su futuro. – kingdango

+0

¿Has probado la versión Visual Basic de Resharper? Sé que VBA es diferente, pero puede funcionar para la mayoría de sus necesidades. – Pat

Respuesta

2

La única herramienta de "refactorización" que conozco en VBA es Ctrl + F y Ctrl + R.

+5

No te olvides de Ctrl-H para reemplazar. – Lokerim

+3

Esto suena más como sarcasmo que una respuesta útil. – Phrancis

+0

o guardar como '.xlsx' xD. Pero en serio, Ctrl + H Replace también tiene la opción 'Usar coincidencia de patrones' pero no funciona con más de una línea. – Slai

2

Sí hay .... casi

En los buenos viejos días he usado éste. http://www.moshannon.com/speedferret.html

me ha ayudado mucho y yo creo que tengo los discos de 3,5" somewere;)

El truco consiste en copiar el código de Excel a Access o Visual Basic 6 y hacer su refactorización no Sustitución de alcance: la solución es creativo. nombrar y usar reemplazar procedimientos de escupir ... bueno, eso es un manual. Lo siento.

Por lo general, no vale la pena a menos que tengas un código excel excel vba, recomiendo convertir la mayor parte en C# o VB. Net dll donde puedes hacer refactorizaciones, pruebas y magia moderna y solo hacer lo mínimo que puedas en VBA.

+1

Sí, IIRC, Hurón de velocidad todavía está disponible, pero no creo que haya visto un desarrollo significativo en 10 años. Creo que Rubberduck VBA agrega más funciones y funciona en más hosts VBA, y es gratis y en desarrollo activo. – ThunderFrame

20

Descargo de responsabilidad: Estoy muy involucrado con este proyecto.


Rubberduck es un código abierto de complemento para el IDE VBA en desarrollo [muy] activo, que incluye esta funcionalidad.

Versión 1.2 incluye un Extraer método herramienta refactorización:

extract method refactoring

Versión 1.3 incluye una refactorización Renombrar:

rename refactoring

Version 2.0 (beta disponible, aún estabilización) incluye una docena de refactorizaciones:

Rubberduck 2.0 refactorings

  • introducir Parámetro promueve una variable local a un parámetro
  • Introducir Campo promueve una variable local al módulo alcance
  • Encapsulate Field convierte un campo público en una propiedad
  • Mover más cerca del uso mueve un campo que solo se usa en 1 procedimiento a ese procedimiento. O mueve una variable local inmediatamente arriba de su primer uso.
  • Extraer interfaz le permite elegir qué miembros de la clase extraer en una interfaz, crea un nuevo módulo de clase con stubs para ellos y hace que la clase original implemente la interfaz extraída.
  • implementar la interfaz crea talones para todos los miembros de una interfaz sin aplicarse, por lo que no es necesario crear manualmente seleccionando uno a uno en el menú desplegable panel de código:

    Implements IClass1 
    
    Public Sub IClass1_DoSomething() 
        Err.Raise 5 'TODO implement interface member 
    End Sub 
    
    Public Function IClass1_GetFoo() As Integer 
        Err.Raise 5 'TODO implement interface member 
    End Function 
    
    Sub DoSomething() 
    
    End Sub 
    
    Function GetFoo() As Integer 
    
    End Function 
    

Más herramientas de refactorización se encuentran en la hoja de ruta del proyecto, que puede seguir en GitHub.

+9

Yo personalmente uso Rubberduck y puedo responder por su utilidad. –

+0

¡Impresionante! ¡Quiero escribir VBA-Code sin la herramienta nunca más! – raiserle

+1

@raiserle gracias! No dudes en destacarnos en GitHub =) –

Cuestiones relacionadas