Lista de Artículos Inicio
- Año II  


Refactoring - Visual C# .NET Express 2005 Beta

Alberto Arroyo Raygada

Consultor TI con amplio conocimiento y experiencia manejando proyectos de Análisis y Diseño de software y Planeamiento Estratégico.
Administración de Base de datos, desarrollo en dispositivoss Hand Held, experiencia en Warehouse Management Systems (WMS) y Terminales de Almacenamiento, participante activo como Microsoft Beta Tester y IBM Beta Tester.
MCP, MCAD, MCDBA, MCSD .Net.

informatizate(at)informatizate(dot)net
Setiembre 23 del 2004.


Introducción

Antes de empezar entendamos un poco que es Refactoring. "Refactorizar un software es modificar su estructura interna con el objeto de que sea más fácil de entender y de modificar a futuro, tal que el comportamiento observable del software al ejecutarse no se vea afectado." (Fowler).

Me parecieron interesantes estas líneas, ¿donde la obtuve? pues de donde más que de Internet: http://www.ldc.usb.ve/~teruel/ci4712/clases2000/refactorizacion.html

Como sabrán se trata de un patrón más, uno de los tantos que existen gracias a muchas personas que con el solo fin de compartir sus conocimientos y proezas nos entregan estas formas inteligentes de resolver los problemas que se nos presentan a diario cuando nos toca desarrollar. Uno de esas ayudas se llama Refactoring, .NET en la versión Beta nos entrega esta utilidad. Refactoring es una nueva mejora en la productividad que nos entrega Visual Studio .NET 2005 Beta Express, mediante la cual nosotros los desarrolladores vamos a poder hacer cambios en nuestro bendito código, cambios como por ejemplo renombrar métodos, etc. La opción Refactoring en .NET provee un buen número de opciones que podemos usar mientras desarrollamos, en este pequeño artículo, este humilde servidor muestra una de sus pasiones "el investigar", ingresemos a este nuevo mundo.

Que nos trae la opción Refactor, pues veamos cada una de ellas:


Surround With, esta opción se encuentra dentro de IntelliSense en Visual Studio 2005 Beta.

La idea principal con esta opción es tener los esqueletos de rutinas comunes, con esto se aumenta en tiempo de respuesta a la hora de desarrollar, de la misma manera que mostramos la funcionalidad de la opción con regiones podemos usar diferentes estructuras.

Veamos un ejemplo envolviendo los datos de este servidor dentro de regiones, todo esto usando opciones preestablecidas.



Al aplicar Surround el IDE de .NET nos muestra lo siguiente:



Como vemos ya tenemos una lista preestablecida de la estructura de una clase, directivas, regiones, etc.
Aplicando como ejemplos una región obtenemos lo siguiente:



Extract Method, esta opción se encuentra dentro de la opción Refactor en Visual Studio 2005 Beta.

La idea principal de esta opción es extraer trozos de código para convertirlos en métodos.

Veamos un ejemplo:

Creo una aplicación de tipo Consola la cual dentro del punto de entrada, escribe en un archivo de texto, la idea es extraer este código y convertirlo en un método, como hacemos esto pues veamos.

  • Creo la aplicación de tipo consola con el código para crear el archivo de texto dentro del punto de entrada.



  • El siguiente paso es más sencillo que el primero, simplemente seleccionar el trozo de código que queremos extraer y convertir en método.



    Lo único que tenemos que hacer es dar nombre al método.



  • Esto en un caso real también mejora tiempos de respuesta porque de una manera segura el IDE hace el trabajo de convertir el código en método, el resultado lo vemos en la siguiente gráfica.



    Rename, esta opción se encuentra dentro de la opción Refactor en Visual Studio 2005 Beta.

    La idea de esta opción es renombrar de manera segura y visualizar los próximos cambios del renombramiento.

    Tomemos como ejemplo nuestro método escribirArchivo() que acabamos de generar.

    Al seleccionar la opción Rename se muestra la siguiente ventana de diálogo.





    Es importante aplicar los casillas de verificación preview reference changes, Search in comments, Search in strings, RenameOverloads.

    Al momento de aceptar el cambio de nombre del método se muestra una ventana donde podemos visualizar los posibles cambios (según las casillas de verificación) dándonos la opción de aplicarlos ó cancelarlos, en nuestro caso aplicamos los cambios para obtener el siguiente resultado.



    Encapsulate Field, esta opción se encuentra dentro de la opción Refactor en Visual Studio 2005 Beta.

    La idea de esta opción es encapsular un miembro como una propiedad, veamos.

    Voy a agregar a mi aplicación dos variables por valor de tipo string, una llamada Nombres y otra Apellidos ambas se muestran resaltadas con color amarillo.

    namespace ca_RefactoringNet

    {

        class Program

        {

            string strNombre, strApellidos;

            static void Main(string[] args)

            {           

                ///Rename

                generaArchivo();

            }

            /// <summary>

            /// Rename

            /// </summary>

            private static void generaArchivo()

            {

                FileStream objFile = new FileStream(@"E:\MiArchivo.txt", FileMode.Create);

                StreamWriter objWriter = new StreamWriter(objFile, Encoding.Default);

                objWriter.WriteLine("Ejemplo de Extract Method");

                objWriter.Flush(); objWriter.Close(); objFile.Close();

            }

        }

    }

    Lo siguiente es seleccionar el campo a encapsular, en nuestro caso Nombres y seleccionar la opción Encapsulate Field.



    Al encapsular el campo se muestra la siguiente ventana de dialogo donde podemos colocar el nombre de la propiedad, Update Referentes (External, All), preview reference changes, Search in comments, Search in strings.



    Al encapsular el campo obtenemos una propiedad como vemos en la siguiente gráfica.



    Extract Interface, esta opción se encuentra dentro de la opción Refactor en Visual Studio 2005 Beta.

    La idea de esta opción es extraer los miembros públicos de una clase y crear una interface.

    Para esto vamos a hacer unos cambios en nuestro código:

    Agregamos un procedimiento publico Registrar y una función pública Edad, e código queda de la siguiente manera.

    namespace ca_RefactoringNet

    {     

        class Program

        {

            string strNombre, strApellidos;

            public string StrNombre

            {

                get

                {

                    return strNombre;

                }

     

                set

                {

                    strNombre = value;

                }

            }

            static void Main(string[] args)

            {           

                ///Rename

                generaArchivo();

            }

            /// <summary>

            /// Rename

            /// </summary>

            private static void generaArchivo()

            {

                FileStream objFile = new FileStream(@"E:\MiArchivo.txt", FileMode.Create);

                StreamWriter objWriter = new StreamWriter(objFile, Encoding.Default);

                objWriter.WriteLine("Ejemplo de Extract Method");

                objWriter.Flush(); objWriter.Close(); objFile.Close();

            }

            public virtual Int32 Edad(DateTime fecha) { return Edad; }

            public virtual void Registrar() { }

        }

    }



    El siguiente paso es seleccionar la opción Extract Interface, aparece una ventana de diálogo de donde podemos edita la interface así como seleccionar los miembros públicos que deseamos mostrar en la interface.



    El IDE de VS .NET nos genera automáticamente la Interface como vemos en la siguiente gráfica.



    Promote Local Variable to Parameter, esta opción se encuentra dentro de la opción Refactor en Visual Studio 2005 Beta.

    La idea de esta opción es como su nombre lo indica promover una variable local como un parámetro.

    Para ver este ejemplo seleccionamos nuestra variable objFile incluida en el método generaArchivo(), y ejecutamos la opción Promote Local Variable to Prometer.



    Al ejecutarlo obtenemos el siguiente resultado, noten que el procedimiento generaArchivo recibe como parámetro un objeto FileStream.



    Así mismo encontramos dos opciones más en esta versión Beta Remove Parameters (remover parámetros) y Reorder Parameters (Reordenar parámetros).

    En proximas entregas se estará analizando más ventajas que nos prepara la versión 2005 de Visual Studio .NET, así como las novedades del .Net Framework 2.0, ADO .NET 2.0, ASP .NET 2.0, novedades en el desarrollo de aplicaciones WinForms y temas más complejos como Web Service, Componentes Servidos, Remoting, etc.

       



    Google


Copyright © 2002-2004 Grupo informatizate. Reservados todos los derechos.
Prohibida la reproducción total o parcial en cualquier formato sin previa autorización.
On-line desde el 27 de Noviembre del 2002