Compartir a través de


Extraer método

Actualización: noviembre 2007

Extraer método es una operación de refactorización que proporciona una manera sencilla para crear un nuevo método a partir de un fragmento de código de un miembro existente. Para obtener más información, vea Refactorización.

Utilizando Extraer método se puede crear un nuevo método extrayendo una selección de código de dentro del bloque de código de un miembro existente. El nuevo método que se ha extraído contiene el código seleccionado, y el código seleccionado del miembro existente se reemplaza por una llamada al nuevo método. Convertir un fragmento de código en su propio método permite reorganizar el código de forma rápida y precisa para que sea posible volver a utilizarlo y lograr una mejor legibilidad.

Extraer método tiene las ventajas siguientes:

  • Fomenta el uso de mejores métodos de codificación, dando énfasis a métodos discretos y reutilizables.

  • Recomienda el código autodocumentado a través de una buena organización.

    Si se utilizan nombres descriptivos, los métodos de alto nivel se pueden leer como una serie de comentarios.

  • Fomenta la creación de métodos más detallados para simplificar la sustitución.

  • Reduce la duplicación del código.

Comentarios

Cuando se utiliza el comando Extraer método, el nuevo método se inserta a continuación del miembro de origen en la misma clase.

Tipos parciales

Si la clase es un tipo parcial, Extraer método genera el nuevo método inmediatamente después del miembro de origen. Extraer método determina la firma del nuevo método, creando un método estático si el código incluido en el nuevo método no hace ninguna referencia a los datos de la instancia.

Parámetros de tipo genérico

Si extrae un método que tiene un parámetro de tipo genérico sin restricciones, el código generado no agregará el modificador ref a dicho parámetro a no ser que se le asigne un valor. Si el método extraído admite tipos de referencia como el argumento de tipo genérico, deberá agregar manualmente el modificador ref al parámetro en la firma del método.

Métodos anónimos

Si intenta extraer parte de un método anónimo que incluye una referencia a una variable local que se declara o a la que se hace referencia fuera del método anónimo, Visual Studio le advertirá que se pueden producir cambios semánticos.

Cuando un método anónimo utiliza el valor de una variable local, el valor se obtiene en el momento en que se ejecuta el método anónimo. Cuando un método anónimo se extrae en otro método, el valor de la variable local se obtiene en el momento de la llamada al método extraído.

El siguiente ejemplo ilustra este cambio semántico. Si se ejecuta este código, 11 se imprimirá en la consola. Si usa Extraer método para extraer el área de código que está marcada con comentarios de código en su propio método y, a continuación, ejecuta el código refactorizado, 10 se imprimirá en la consola.

class Program
{
    delegate void D();
    D d;
    static void Main(string[] args)
    {
        Program p = new Program();
        int i = 10;
        /*begin extraction*/
            p.d = delegate { Console.WriteLine(i++); };
        /*end extraction*/
        i++;
        p.d();
    }
}

Para evitar esta situación, convierta las variables locales que se utilizan en el método anónimo en campos de la clase.

Vea también

Tareas

Cómo: Refactorizar código con Extraer método