Está en la página 1de 19

Nota Si un mtodo contiene un error de sintaxis (que el IDE indica con una lnea de subrayado ondulada roja), el motor

de refactorizacin no actualizar las referencias a un elemento dentro de dicho mtodo. El ejemplo siguiente muestra este comportamiento.
La refactorizacin es el proceso que consiste en mejorar el cdigo una vez escrito cambiando su estructura interna sin modificar su comportamiento externo. Visual C# proporciona los siguientes comandos de refactorizacin en el men Refactorizacin: Extraer mtodo (Refactorizacin, C#) Cambiar el nombre de refactorizacin (C#) Encapsular campo (Refactorizacin, C#) Extraer interfaz (Refactorizacin, C#) Quitar parmetros (Refactorizacin, C#) Reordenar parmetros de refactorizacin (C#)

Refactorizacin de varios proyectos


Visual Studio admite la refactorizacin de varios proyectos que se encuentran en la misma solucin. Todas las operaciones de refactorizacin que corrigen referencias entre archivos corrigen dichas referencias entre todos los proyectos del mismo lenguaje. Esto slo funciona en referencias entre proyectos. Por ejemplo, si tiene una aplicacin de consola que haga referencia a una biblioteca de clase, al cambiar el nombre a un tipo de biblioteca de clase (mediante la operacin de refactorizacin Rename), tambin se actualizarn las referencias al tipo de biblioteca de clase en la aplicacin de consola.

Vista previa de los cambios


Muchas operaciones de refactorizacin proporcionan la posibilidad de revisar todos los cambios de referencias que realiza una operacin de refactorizacin en el cdigo, antes de aplicar dichos cambios. Para estas operaciones de refactorizacin, aparecer una opcin Vista previa de los cambios de referencia en el cuadro de dilogo de refactorizacin. Despus de seleccionar dicha opcin y aceptar la operacin de refactorizacin, aparecer el cuadro de dilogo Obtener vista previa de cambios. Observe que el cuadro de dilogo Obtener vista previa de cambios tiene dos vistas.La vista inferior mostrar el cdigo con todas las actualizaciones de referencias debido a la operacin de refactorizacin. Si presiona Cancelar en el cuadro de dilogo Obtener vista previa de cambios, se detendr la operacin de refactorizacin y el cdigo no sufrir ningn cambio.

Advertencias de refactorizacin
Si el compilador no tiene un conocimiento completo del programa y es posible que el motor de refactorizacin no pueda actualizar todas las referencias apropiadas, se muestra el cuadro de dilogo de advertencia. Este cuadro de dilogo de advertencia tambin ofrece la posibilidad de realizar una vista previa del cdigo en el cuadro de dilogo Obtener vista previa de cambios antes de confirmar los cambios.

De forma predeterminada, si ejecuta una operacin de refactorizacin sin realizar una vista previa de los cambios de las referencias y el programa detecta un error de compilacin, el entorno de desarrollo mostrar este cuadro de dilogo de advertencia. Si ejecuta una operacin de refactorizacin que tiene habilitada la opcin Vista previa de los cambios de referencia y el programa detecta un error de compilacin, el entorno de desarrollo mostrar el siguiente mensaje de advertencia en la parte inferior del cuadro de dilogo Obtener vista previa de cambios, en lugar de mostrar el cuadro de dilogo Advertencia de refactorizacin: El proyecto o una de sus dependencias no se genera actualmente. Puede que las referencias no estn actualizadas. Esta advertencia de refactorizacin solo est disponible para las operaciones de refactorizacin que proporcionan la opcin Vista previa de los cambios de referencia.

Refactorizacin tolerante a errores y resultados de comprobacin


La refactorizacin tolera errores. En otros trminos, se puede realizar una refactorizacin en un proyecto que no se puede generar. Sin embargo, en estos casos el proceso de refactorizacin podra no actualizar correctamente las referencias ambiguas. El cuadro de dilogo Resultados de la comprobacin puede notificar si el motor de refactorizacin detecta errores de la compilacin o si detecta que una operacin de refactorizacin hace que, inadvertidamente, una referencia del cdigo se enlace a algo diferente de a lo que estaba enlazada. Para activar la caracterstica de resultados de comprobacin, en el men Herramientas, haga clic en Opciones. En el cuadro de dilogo Opciones, expanda Editor de texto y, a continuacin, haga clic en C#. Haga clic en Avanzada y active la casilla Comprobar resultados de refactorizacin. El cuadro de dilogo Resultados de la comprobacin distingue entre dos tipos de problemas de reenlace.

Referencias cuya definicin ya no ser el smbolo al que se ha cambiado el nombre


Este tipo de problema de reenlace se produce cuando una referencia ya no hace referencia a un smbolo cuyo nombre ha cambiado. Por ejemplo, considere el siguiente cdigo: C# class Example { private int a; public Example(int b) { a = b;

} } Si utiliza la refactorizacin para cambiar el nombre de a por b, aparece este cuadro de dilogo. La referencia a la variable a, cuyo nombre ha cambiado, ahora se enlaza al parmetro que se pasa al constructor, en lugar de enlazarse al campo.

Referencias cuya definicin pasar a ser el smbolo cuyo nombre ha cambiado


Este tipo de problema de reenlace se produce cuando una referencia que antes no haca referencia al smbolo cuyo nombre ha cambiado, ahora s hace referencia a l. Por ejemplo, considere el siguiente cdigo: C# class Example { private static void Method(object a) { } private static void OtherMethod(int a) { } static void Main(string[] args) { Method(5); } } Si utiliza la refactorizacin para cambiar el nombre de OtherMethod por Method, aparece este cuadro de dilogo. La referencia de Main ahora hace referencia al mtodo sobrecargado que acepta un parmetro int en lugar del mtodo sobrecargado que acepta un parmetro object.

Extraer mtodo (Refactorizacin, C#)


Extraer mtodo es una operacin de refactorizacin que proporciona una manera sencilla para crear un nuevo mtodo a partir de un fragmento de cdigo de un miembro existente. Utilizando Extraer mtodo se puede crear un nuevo mtodo extrayendo una seleccin de cdigo de dentro del bloque de cdigo de un miembro existente.El nuevo mtodo que se ha extrado contiene el cdigo seleccionado, y el cdigo seleccionado del miembro existente se reemplaza por una llamada al nuevo mtodo. Convertir un fragmento de cdigo en su propio mtodo permite reorganizar el cdigo de forma rpida y precisa para que sea posible volver a utilizarlo y lograr una mejor legibilidad. Extraer mtodo tiene las ventajas siguientes: Fomenta el uso de mejores mtodos de codificacin, dando nfasis a mtodos discretos y reutilizables. Recomienda el cdigo autodocumentado a travs de una buena organizacin.

Si se utilizan nombres descriptivos, los mtodos de alto nivel se pueden leer como una serie de comentarios. Fomenta la creacin de mtodos ms detallados para simplificar la sustitucin. Reduce la duplicacin del cdigo.

Para utilizar Extraer mtodo


1. Cree una aplicacin de consola denominada ExtractMethod y, a continuacin, reemplace Program por el ejemplo de cdigo siguiente. C# class A { const double PI = 3.141592; double { // // // // // // // CalculatePaintNeeded(double paintPerUnit, double radius) Select any of the following: 1. The entire next line of code. 2. The right-hand side of the next line of code. 3. Just "PI *" of the right-hand side of the next line of code (to see the prompt for selection expansion). 4. All code within the method body. ...Then invoke Extract Method.

double area = PI * radius * radius; return area / paintPerUnit; } } 2. Seleccione el fragmento de cdigo que se desea extraer: C# double area = PI * radius * radius;

3.

En el men Refactorizar, haga clic en Extraer mtodo. Aparecer el cuadro de dilogo Extraer mtodo. De forma alternativa, tambin puede escribir el mtodo abreviado de teclado CTRL+R, M para mostrar el cuadro de dilogo Extraer mtodo. O bien, puede hacer clic con el botn secundario del mouse en el cdigo seleccionado, seleccionar Refactorizar y, a continuacin, hacer clic enExtraer mtodo para mostrar el cuadro de dilogo Extraer mtodo.

4.

Especifique un nombre para el nuevo mtodo, por ejemplo texto Nombre del nuevo mtodo.

CircleArea, en el cuadro de

Aparecer una vista previa de la nueva firma de mtodo en Vista previa de la firma del mtodo. 5. Haga clic en Aceptar.

Comentarios

Cuando se utiliza el comando Extraer mtodo, el nuevo mtodo se inserta a continuacin del miembro de origen en la misma clase.

Tipos parciales
Si la clase es un tipo parcial, Extraer mtodo genera el nuevo mtodo inmediatamente despus del miembro de origen. Extraer mtodo determina la firma del nuevo mtodo, creando un mtodo esttico si el cdigo incluido en el nuevo mtodo no hace ninguna referencia a los datos de la instancia.

Parmetros de tipo genrico


Si extrae un mtodo que tiene un parmetro de tipo genrico sin restricciones, el cdigo generado no agregar el modificador ref a dicho parmetro a no ser que se le asigne un valor. Si el mtodo extrado admite tipos de referencia como el argumento de tipo genrico, deber agregar manualmente el modificador ref al parmetro en la firma del mtodo.

Mtodos annimos
Si intenta extraer parte de un mtodo annimo que incluye una referencia a una variable local que se declara o a la que se hace referencia fuera del mtodo annimo, Visual Studio le advertir que se pueden producir cambios semnticos. Cuando un mtodo annimo utiliza el valor de una variable local, el valor se obtiene en el momento en que se ejecuta el mtodo annimo. Cuando un mtodo annimo se extrae en otro mtodo, el valor de la variable local se obtiene en el momento de la llamada al mtodo extrado. El siguiente ejemplo ilustra este cambio semntico. Si se ejecuta este cdigo, 11 se imprimir en la consola. Si usa Extraer mtodo para extraer el rea de cdigo que est marcada con comentarios de cdigo en su propio mtodo y, a continuacin, ejecuta el cdigo refactorizado, 10 se imprimir en la consola. C#

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 situacin, convierta las variables locales que se usan en el mtodo annimo en campos de la clase.

Cambiar el nombre de refactorizacin (C#)


Cambiar nombre es una caracterstica de refactorizacin del entorno integrado de desarrollo (IDE) de Visual Studio que proporciona una manera fcil de cambiar el nombre de los identificadores para los smbolos del cdigo, tales como campos, variables locales, mtodos, espacios de nombres, propiedades y tipos. Cambiar nombre se puede utilizar para cambiar los nombres en los comentarios y en las cadenas, adems de en las declaraciones y las llamadas de un identificador.

Nota
Cuando utilice control de cdigo fuente para Visual Studio, obtenga siempre la ltima versin de los archivos intentar ejecutar la refactorizacin de cambio de nombre.
La operacin de refactorizacin Cambiar nombre est disponible en las caractersticas de Visual Studio siguientes:

Caracterstica
Editor de cdigo

Comportamiento de la refactorizacin en el IDE


En el editor de cdigo, la operacin de refactorizacin Cambiar nombre est disponible cuando se sita el cursor en ciertos tipos de smbolos de cdigo. Cuando el cursor est en esta posicin, puede invocar el comando Cambiar nombre; para ello, escriba el mtodo abreviado de teclado (CTRL + R, R), o bien, seleccione el comando Cambiar nombre desde una etiqueta inteligente, un men contextual o el men Refactorizar. Al seleccionar un identificador en la Vista de clases, la operacin de

Vista de clases

refactorizacin Cambiar nombre est disponible en el men contextual y en el men Refactorizar. Examinador de objetos Cuando se selecciona un identificador en el Examinador de objetos, la operacin de refactorizacin Cambiar nombre slo est disponible en el men Refactorizar. En la Cuadrcula de propiedades del Diseador de Windows Forms, cuando se cambia el nombre de un control se inicia una operacin Cambiar nombre para ese control. No aparece el cuadro de dilogo Cambiar nombre. En el Explorador de soluciones, el comando Cambiar nombre est disponible en el men contextual. Si el archivo de cdigo fuente seleccionado contiene una clase cuyo nombre es el mismo que el del archivo, puede utilizar este comando para, simultneamente, cambiar el nombre del archivo de cdigo fuente y ejecutar la operacin de refactorizacin Cambiar nombre. Por ejemplo, si crea una aplicacin predeterminada basada en Windows y luego cambia el nombre de Form1.cs por TestForm.cs, entonces el nombre del archivo de cdigo fuente Form1.cs cambiar a TestForm.cs, y la clase Form1 y todas las referencias a ella tambin recibirn el nuevo nombre TestForm.
Nota El comando Deshacer (CTRL+Z) nicamente deshar la operacin de refactorizacin Cambiar nombre dentro del cdigo, pero no restablecer el nombre original del archivo.

Cuadrcula de propiedades del Diseador de Windows Forms Explorador de soluciones

Si el archivo de cdigo fuente seleccionado no contiene una clase cuyo nombre sea el mismo que el del archivo, el comando Cambiar nombre del Explorador de soluciones nicamente cambiar el nombre del archivo de cdigo fuente y no ejecutar la operacin de refactorizacin Cambiar nombre.

Operaciones de cambio de nombre

Al ejecutar Cambiar nombre, el motor de refactorizacin realiza una operacin de cambio de nombre especfica para cada smbolo de cdigo, como se describe en la tabla siguiente.

Smbolo Operacin de cambio de nombre de cdigo

Campo Variable local Mtodo

Cambia la declaracin y los usos del campo al nuevo nombre. Cambia la declaracin y los usos de la variable por el nuevo nombre.

Cambia el nombre del mtodo y todas las referencias a ese mtodo al nuevo nombre.
Nota Al cambiar el nombre de un mtodo de extensin, la operacin de cambio de nombre se propaga a todas las instancias del mtodo que estn dentro del mbito, sin tener en cuenta si el mtodo de extensin se utiliza como un mtodo esttico o un mtodo de instancia.Para obtener ms informacin, vea Mtodos de extensin (Gua de programacin de C#).

Espacio de nombres

Cambia el nombre del espacio de nombres al nuevo nombre en la declaracin, en todas las instrucciones using y en los nombres completos.
Nota Al cambiar el nombre de un espacio de nombres, Visual Studio actualiza tambin la propiedad Default Namespace en la pgina Aplicacin del Diseador de proyectos.Esta propiedad no se puede restablecer seleccionando Deshacer en el men Editar.Para restablecer el valor de la propiedad Default Namespace, debe modificar la propiedad en el Diseador de proyectos.Para obtener ms informacin, vea Pgina Aplicacin.

Propiedad Tipo

Cambia la declaracin y los usos de la propiedad al nuevo nombre. Cambia todas las declaraciones y todos los usos del tipo por el nuevo nombre, incluso los constructores y destructores. Para los tipos parciales, la operacin Cambiar nombre se propaga a todas las partes.

Para cambiar el nombre de un identificador


1. Cree una aplicacin de consola denominada RenameIdentifier y, a continuacin, reemplace Program por el ejemplo de cdigo siguiente. C# class ProtoClassA { // Invoke on 'MethodB'. public void MethodB(int i, bool b) { } } class ProtoClassC

{ void D() { ProtoClassA MyClassA = new ProtoClassA(); // Invoke on 'MethodB'. MyClassA.MethodB(0, false); } } 2. 3. Coloque el cursor en MethodB, en la declaracin de mtodo o la llamada al mtodo. En el men Refactorizar, seleccione Cambiar nombre. Aparece el cuadro de dilogo Cambiar nombre. Tambin puede usar el mtodo abreviado de teclado F2 para mostrar el cuadro de dilogo Cambiar nombre. O bien, puede hacer clic con el botn secundario en el cursor, sealar Refactorizar en el men contextual y, a continuacin, hacer clic en Cambiar nombre para mostrar el cuadro de dilogo Cambiar nombre. 4. 5. 6. 7. En el cuadro Nuevo nombre, escriba MethodC. Active la casilla Buscar en los comentarios. Haga clic en Aceptar. En el cuadro de dilogo Obtener vista previa de cambios, haga clic en Aplicar.

Para cambiar el nombre de un identificador utilizando las etiquetas inteligentes


1. Cree una aplicacin de consola denominada RenameIdentifier y, a continuacin, reemplace Program por el ejemplo de cdigo siguiente. C# class ProtoClassA { // Invoke on 'MethodB'. public void MethodB(int i, bool b) { } } class ProtoClassC { void D() { ProtoClassA MyClassA = new ProtoClassA(); // Invoke on 'MethodB'. MyClassA.MethodB(0, false); } }

2.

En la declaracin para MethodB, escriba o retroceda sobre el identificador de mtodo. Aparecer el texto de la etiqueta inteligente debajo de este identificador.

Nota
Slo puede invocar la operacin de refactorizacin Cambiar nombre utilizando etiquetas inteligentes en la declaracin de un identificador.
3. Presione MAYS+ALT+F10 y, a continuacin, la FLECHA ABAJO para mostrar el men de etiquetas inteligentes. O bien Mueva el puntero del mouse sobre el texto de la etiqueta inteligente para mostrarla. A continuacin, mueva el puntero del mouse sobre la etiqueta inteligente y haga clic en FLECHA ABAJO para mostrar el men de etiquetas inteligentes. 4. Seleccione la opcin de men Cambiar nombre de '<identificador1>' a '<identificador2>', para invocar la refactorizacin de cambio de nombre sin ver una vista previa de los cambios del cdigo. Todas las referencias a <identificador1> se actualizarn automticamente a <identificador2>. O bien Seleccione el elemento de men Cambiar nombre con vista previa, para invocar la refactorizacin de cambio de nombre con una vista previa de los cambios del cdigo. Aparecer el cuadro de dilogo Obtener vista previa de cambios.

Comentarios

Cambiar el nombre de miembros implementados o invalidados


Cuando se realiza la operacin Cambiar nombre sobre un miembro que implementa o invalida, o es implementado o invalidado por, miembros de otros tipos, Visual Studio muestra un cuadro de dilogo en el que se indica que la operacin de cambio de nombre producir actualizaciones en cascada. Si hace clic en Continuar, el motor de refactorizacin busca y cambia de nombre de forma recursiva todos los miembros en tipos base y derivados que mantengan relaciones de implementacin o sustitucin con el miembro al que se va a cambiar de nombre. El ejemplo de cdigo siguiente contiene miembros con relaciones de implementacin o sustitucin. C#

interface IBase { void Method(); } public class Base { public void Method() { } public virtual void Method(int i) { } } public class Derived : Base, IBase { public new void Method() { } public override void Method(int i) { } } public class C : IBase { public void Method() { } }

En el ejemplo anterior, al cambiar el nombre de C.Method() se cambia tambin el nombre de Ibase.Method(), ya que C.Method() implementaIbase.Method(). A continuacin, el motor de refactorizacin determina de forma recursiva que Ibase.Method() est implementado porDerived.Method() y cambia el nombre de Derived.Method(). El motor de refactorizacin no cambia el nombre de Base.Method(), porqueDerived.Method() no reemplaza Base.Method(). El motor de refactorizacin se detiene aqu a menos que haya activado Cambiar el nombre de las sobrecargas en el cuadro de dilogo Cambiar nombre. Si Cambiar el nombre de las sobrecargas est activado, el motor de refactorizacin cambia el nombre de Derived.Method(int i) porque sobrecarga Derived.Method(), de Base.Method(int i) porque es reemplazado por Derived.Method(int i) y de Base.Method() porque es una sobrecarga de Base.Method(int i).

Nota
Al cambiar el nombre de un miembro que se ha definido en un ensamblado al que se hace referencia, aparece un cuadro de dilogo en el que se explica que ese cambio producir errores de compilacin.
Cambiar el nombre a propiedades de tipos annimos

Al cambiar el nombre a una propiedad en tipos annimos, la operacin de cambio de nombre se propagar a las propiedades de otros tipos annimos que tengan las mismas propiedades. En el siguiente ejemplo, se muestra este comportamiento: C# var a = new { ID = 1}; var b = new { ID = 2}; En el cdigo anterior, al cambiar el nombre de ID, se cambiar ID en ambas instrucciones, ya que poseen el mismo tipo annimo subyacente. C# var companyIDs = from c in companylist select new { ID = c.ID, Name = c.Name}; var orderIDs = from o in orderlist select new { ID = o.ID, Item = o.Name}; En el cdigo anterior, al cambiar el nombre a ID, cambiar slo el nombre de una instancia de ID, ya que companyIDs y orderIDs no tienen las mismas propiedades.

Encapsular campo (Refactorizacin, C#)


La operacin de refactorizacin Encapsular campo permite crear rpidamente una propiedad a partir de un campo existente y, a continuacin, actualizar el cdigo de forma transparente con referencias a la nueva propiedad. Cuando un campo es pblico, los otros objetos tendrn acceso directo a ese campo y podrn modificarlo, sin que el objeto que posee el campo lo detecte.Mediante propiedades que encapsulen los campos, puede deshabilitar el acceso directo a ellos. Para crear la nueva propiedad, la operacin Encapsular campo cambia el modificador de acceso del campo que desea encapsular a private y, a continuacin, genera descriptores de acceso get y set para ese campo. En algunos casos, slo se genera un descriptor de acceso get, por ejemplo cuando el campo se declara de slo lectura. El motor de refactorizacin actualiza el cdigo con referencias a la nueva propiedad en las reas especificadas en la seccin Actualizar referencias del cuadro de dilogo Encapsular campo.

Para crear una propiedad a partir de un campo


1. Cree una aplicacin de consola denominada EncapsulateFieldExample y, a continuacin, reemplace Program por el ejemplo de cdigo siguiente.

C# class Square { // Select the word 'width' and then use Encapsulate Field. public int width, height; } class MainClass { public static void Main() { Square mySquare = new Square(); mySquare.width = 110; mySquare.height = 150; // Output values for width and height. Console.WriteLine("width = {0}", mySquare.width); Console.WriteLine("height = {0}", mySquare.height); } } 2. En Editor de cdigo y de texto, coloque el cursor en la declaracin, en el nombre del campo que desea encapsular. En el ejemplo siguiente, coloque el cursor en palabra width: C# public int width, height; 3. En el men Refactorizar, haga clic en Encapsular campo. El cuadro de dilogo Encapsular campo aparece. Tambin puede presionar CTRL+R, E, que es el mtodo abreviado de teclado para mostrar el cuadro de dilogo Encapsular campo. O bien, puede hacer clic con el botn secundario en el cursor, sealar Refactorizar y, a continuacin, hacer clic en Encapsular campo para mostrar el cuadro de dilogo Encapsular campo. 4. 5. 6. Especifique la configuracin. Presione ENTRAR o haga clic en el botn Aceptar. Si ha seleccionado la opcin Vista previa de los cambios de referencia, se abrir la ventana Vista previa de los cambios de referencia. Haga clic en el botn Aplicar. Aparece el siguiente cdigo fuente de los descriptores de acceso get y set en el archivo de cdigo fuente: C# public int Width {

get { return width; } set { width = value; } } El cdigo del mtodo Main tambin se actualiza con el nuevo nombre de propiedad Width. C# Square mySquare = new Square(); mySquare.Width = 110; mySquare.height = 150; // Output values for width and height. Console.WriteLine("width = {0}", mySquare.Width);

Comentarios

La operacin Encapsular campo slo es posible cuando el cursor se encuentra en la misma lnea que la declaracin de campo. Para las declaraciones de varios campos, Encapsular campo usa la coma como lmite de separacin entre los campos e inicia la refactorizacin en el campo que est ms cerca del cursor, en la misma lnea que el cursor. Tambin puede especificar qu campo desea encapsular seleccionando el nombre de dicho campo en la declaracin. El cdigo generado por esta operacin de refactorizacin se modela mediante la caracterstica de fragmentos de cdigo de Encapsular campo. Los fragmentos de cdigo se pueden modificar. Para obtener ms informacin, vea Cmo: Administrar fragmentos de cdigo.

Extraer interfaz (Refactorizacin, C#)


Extraer interfaz es una operacin de refactorizacin que ofrece una manera sencilla de crear una nueva interfaz con miembros originados a partir de una clase, struct o interfaz existente. Cuando varios clientes utilizan el mismo subconjunto de miembros de una clase, struct o interfaz, o cuando varias clases, structs o interfaces tienen un subconjunto de miembros en comn, puede resultar de gran utilidad integrar el subconjunto de miembros en una interfaz. Para obtener ms informacin sobre el uso de interfaces, vea Interfaces (Gua de programacin de C#). Extraer interfaz genera una interfaz en un nuevo archivo y coloca el cursor al principio del nuevo archivo. Puede especificar qu miembros se extraern a la nueva interfaz, el nombre de sta y el nombre del archivo generado mediante el cuadro de dilogo Extraer interfaz.

Para utilizar Extraer interfaz


1. Cree una aplicacin de consola denominada ExtractInterface y, a continuacin, reemplace Program por el ejemplo siguiente.

C# // Invoke Extract Interface on ProtoA. // Note: the extracted interface will be created in a new file. class ProtoA { public void MethodB(string s) { } } 2. Con el cursor colocado en MethodB, haga clic en Extraer interfaz en el men Refactorizar. Aparecer el cuadro de dilogo Extraer interfaz. Tambin puede presionar el mtodo abreviado de teclado CTRL+R, I para mostrar el cuadro de dilogo Extraer interfaz. O bien, puede hacer clic con el botn secundario del mouse, seleccionar Refactorizar y, a continuacin, hacer clic en Extraer interfaz para mostrar el cuadro de dilogo Extraer interfaz. 3. 4. Haga clic en Seleccionar todo. Haga clic en Aceptar. Aparece el nuevo archivo, IProtoA.cs y el cdigo siguiente: C# using System; namespace TopThreeRefactorings { interface IProtoA { void MethodB(string s); } }

Comentarios

nicamente se puede tener acceso a esta caracterstica cuando el cursor est situado en la clase, el struct o la interfaz que contiene los miembros que se desea extraer. Cuando el cursor est en esta posicin, invoque la operacin de refactorizacin Extraer interfaz. Cuando se invoca Extraer interfaz en una clase o struct, la lista de bases e interfaces se modifica, a fin de incluir el nombre de la nueva interfaz. Cuando se invoca Extraer interfaz en una interfaz, la lista de bases e interfaces no se modifica.

Quitar parmetros (Refactorizacin, C#)


Remove Parameters es una operacin de refactorizacin que proporciona una manera sencilla de quitar parmetros de los mtodos, indizadores o delegados. Quitar parmetros cambia la declaracin; en todas las ubicaciones donde se llama al miembro, el parmetro se quita para reflejar la nueva declaracin. La operacin de quitar parmetros se realiza colocando primero el cursor en un mtodo, indizador o delegado. Cuando el cursor est en la posicin correcta, para invocar la operacin Quitar Parameters, haga clic en el men Refactorizar, presione el mtodo abreviado de teclado o seleccione el comando en el men contextual.

Nota
No se puede quitar el primer parmetro de un mtodo de extensin.
Para quitar los parmetros
1. Cree una aplicacin de consola denominada RemoveParameters y, a continuacin, reemplace Program por el ejemplo siguiente. C# class A { // Invoke on 'A'. public A(string s, int i) { } } class B { void C() { // Invoke on 'A'. A a = new A("a", 2); } } 2. 3. Coloque el cursor en el mtodo A, bien en la declaracin de mtodo o bien en la llamada al mtodo. En el men Refactorizar, seleccione Quitar parmetros para mostrar el cuadro de dilogo Quitar parmetros. Tambin puede presionar CTRL+R, V, que es el mtodo abreviado de teclado para mostrar el cuadro de dilogo Quitar parmetros.

O bien, puede hacer clic con el botn secundario en el cursor, sealar Refactorizar y, a continuacin, hacer clic en Quitar parmetros para mostrar el cuadro de dilogo Quitar parmetros. 4. 5. 6. Utilizando el campo Parmetros, site el cursor en int i y, a continuacin, haga clic en Quitar. Haga clic en Aceptar. En el cuadro de dilogo Obtener vista previa de cambios - Quitar parmetros, haga clic en Aplicar.

Comentarios

Es posible quitar los parmetros de una declaracin de mtodo o de una llamada al mtodo. Coloque el cursor en la declaracin de mtodo o en el nombre de delegado e invoque a Quitar parmetros.

Precaucin
Quitar parmetros permite eliminar un parmetro al que se hace referencia en el cuerpo del miembro, pero no quita las referencias a dicho parmetro en el cuerpo del mtodo. Esto puede producir errores de compilacin en el cdigo. Sin embargo, puede usar el cuadro de dilogo Vista previa de los cambios para revisar el cdigo antes de ejecutar la operacin de refactorizacin.
Si un parmetro que se est quitando se modifica durante la llamada a un mtodo, la eliminacin del parmetro tambin quitar la modificacin. Por ejemplo, si se cambia una llamada a un mtodo de C# MyMethod(param1++, param2); por C# MyMethod(param2); no se incrementar param1 mediante la operacin de refactorizacin.

Reordenar parmetros de refactorizacin (C#)


Reorder Parameters es una operacin de refactorizacin de Visual C# que proporciona una manera sencilla de cambiar el orden de los parmetros para los mtodos, indizadores y delegados. Reorder Parameters cambia la declaracin y, en todas las ubicaciones donde se llama al miembro, los parmetros se reorganizan para reflejar el nuevo orden. Para realizar la operacin Reorder Parameters, site el cursor sobre o a un lado de un mtodo, indizador o delegado. Una vez colocado el cursor, invoque la operacin Reorder Parameters usando el mtodo abreviado de teclado o haciendo clic en el comando del men contextual.

Nota
No puede reordenar el primer parmetro de un mtodo de extensin.
Para reordenar parmetros
1. Cree una biblioteca de clases denominada ReorderParameters y, a continuacin, reemplace Class1 por el ejemplo de cdigo siguiente. C# class ProtoClassA { // Invoke on 'MethodB'. public void MethodB(int i, bool b) { } } class ProtoClassC { void D() { ProtoClassA MyClassA = new ProtoClassA(); // Invoke on 'MethodB'. MyClassA.MethodB(0, false); } } 2. 3. Coloque el cursor en MethodB, en la declaracin de mtodo o la llamada al mtodo. En el men Refactorizar, haga clic en Reordenar parmetros. Aparece el cuadro de dilogo Reordenar parmetros.

4.

En el cuadro de dilogo Reordenar parmetros, seleccione int i en la lista Parmetros y, a continuacin, haga clic en el botn de la flecha hacia abajo. Como alternativa, puede arrastrar int i despus de bool b en la lista Parmetros.

5.

En el cuadro de dilogo Reordenar parmetros, haga clic en Aceptar. Si selecciona la opcin Vista previa de los cambios de referencia en el cuadro de dilogo Reordenar parmetros, aparecer el cuadro de dilogoObtener vista previa de cambios - Reordenar parmetros. Proporciona una vista previa de los cambios realizados en la lista de parmetros deMethodB en la firma y la llamada al mtodo. a. Si aparece el cuadro de dilogo Obtener vista previa de cambios - Reordenar parmetros, haga clic en Aplicar. En este ejemplo, se actualiza la declaracin de mtodo y todos los sitios de llamada al mtodo MethodB.

Comentarios
Puede reordenar los parmetros de una declaracin de mtodo o una llamada al mtodo. Site el cursor sobre la declaracin de mtodo o delegado o al lado de stos, pero no en el cuerpo.