Connect(); 2016

Volumen 31, número 12

Desarrollo de Visual Studio: mejoras de productividad en Visual Studio 2017 RC

De Kasey Uhlenhuth; 2016

Si quiere aumentar la productividad, debe ahorrar más tiempo o esfuerzos en las tareas que realiza cada día. Visual Studio 2017 RC aumenta su productividad con tareas automatizadas y una navegación mejorada, así como con comentarios inmediatos sobre la calidad y el estado de su código.

Los progresos que Visual Studio ha hecho en las refactorizaciones, la generación de código, el análisis de código, la navegación, las pruebas y la depuración para los desarrolladores de .NET fueron posibles gracias al proyecto "Roslyn", una iniciativa de seis años para rediseñar los compiladores de C# y Visual Basic. Visual Studio 2017 RS aprovecha la inversión de Visual Studio 2015 en Roslyn para crear de forma automática miles de nuevas características increíbles.

Cuando los desarrolladores profundizan en un error, detectan las implicaciones de una refactorización o trabajan para comprender una base de código desconocida, confían en la precisión y la facilidad de la navegación de código. Esta versión ofrece una experiencia de navegación considerablemente mejorada (con guías para incidentes, GoTo y Buscar todas las referencias), que le lleva de la A a la B con mayor confianza y menos distracciones (incluso en grandes bases de código).

Anteriormente, Buscar todas las referencias detectaba todos los usos de un símbolo y luego enumeraba los resultados como una lista simple y sin formato en la ventana Resultados. Ahora, tal y como se muestra en la Figura 1, las referencias aparecen coloreadas y organizadas en una visualización jerárquica con una agrupación, una ordenación, un filtrado y una búsqueda personalizados que le ayudarán a encontrar rápidamente la referencia concreta que quiere, incluso cuando haya muchas referencias en la lista. Además, si mantiene el puntero encima de una referencia, se mostrará información sobre herramientas para ofrecer una visión del lugar al que navegará antes de que llegue a él. Puede guardar o "bloquear" los resultados de Buscar todas las referencias en los casos en que necesite ejecutar el comando varias veces, pero quiera conservar los resultados originales (por ejemplo, al investigar y profundizar en el impacto de una refactorización).

Las mejoras de Buscar todas las referencias incluyen coloración, organización personalizada y vistas previas al mantener el puntero
Figura 1 Las mejoras de Buscar todas las referencias incluyen coloración, organización personalizada y vistas previas al mantener el puntero

Para ahorrar aún más tiempo, apréndase los métodos abreviados de teclado útiles que se muestran en la Figura 2.

Figura 2 Métodos abreviados de teclado para la navegación general

Ir a definición Definición de pico Buscar todas las referencias Ir a implementación Ir a todo (archivo/tipo/miembro/símbolo)
F12 Alt+F12 Mayús+F12 Ctrl+F12 Ctrl+T o Ctrl+,

 

Otra característica que ha experimentado una mejora considerable en esta versión es GoTo (anteriormente Navegar a). GoTo All es una búsqueda completa y rápida de cualquier declaración de símbolo, archivo, tipo o miembro de una solución. Los iconos de la parte inferior de la barra de búsqueda le permiten filtrar sus resultados por grupo o ajustar el ámbito de la búsqueda, según se muestra en la Figura 3. (Sin embargo, si prefiere usar el teclado en lugar del ratón, también puede aprovechar una sintaxis de consulta que le permita filtrar directamente escribiendo un prefijo simple). El icono de engranaje de la esquina inferior derecha le permite personalizar una gran cantidad de opciones de configuración, como la colocación de la barra de búsqueda, una vista previa dinámica de los archivos que contienen el resultado resaltado e información del archivo adicional para cada resultado.

Uso de iconos o sintaxis de consulta para filtrar resultados por archivos, tipos, miembros o símbolos
Figura 3 Uso de iconos o sintaxis de consulta para filtrar resultados por archivos, tipos, miembros o símbolos

Finalmente, es posible que reconozca las guías de sangría de la conocida extensión Productivity Power Tools. Ahora, como parte del producto principal, las líneas verticales grises con puntos sirven de puntos de referencia en el código para proporcionar contexto dentro del marco de vista. Al mantener el puntero encima de una llave inferior, se obtiene una vista previa coloreada de la llave coincidente superior y, al mantener el puntero encima de la propia guía, se obtiene una vista previa coloreada del código que hay alrededor y que contiene la llave coincidente superior. Estas características pretenden proporcionarle una lógica mejorada de la "geografía" y el contexto de su código sin que tenga que desplazarse o navegar. Las guías de sangría también funcionan bien con las características de esquematización existentes en Visual Studio e incluso ofrecen más regiones que se pueden expandir y contraer.

También puede habilitar el "Modo mapa" en su barra de desplazamiento. De esta manera, la barra de desplazamiento se transforma en un "mapa" de su código, lo que le permite ver una versión en miniatura del documento completo, incluidos los errores, los puntos de interrupción, etc. Si mantiene el puntero encima de cualquier parte del "mapa", se mostrará una vista previa del código en ese punto del documento.

Además, también puede aumentar su eficiencia si se aprende los métodos abreviados de teclado útiles que se muestran en la Figura 4.

Figura 4 Métodos abreviados de teclado para GoTo

  Ir a todo Ir a la línea Ir al archivo Ir al tipo Ir al miembro Ir al símbolo
Acceso directo Ctrl+T o Ctrl+, Ctrl+G Ctrl+1, F Ctrl+1, T Ctrl+1, M Ctrl+1, S
Prefijo de consulta Sin prefijo : f t m #

Escritura y lectura de código

Al igual que con la navegación, los desarrolladores dedican mucho tiempo a escribir y leer código. Visual Studio 2017 RC se centra en facilitar la escritura de código correcta, así como en mantener la legibilidad de las bases de código de desarrolladores. A partir de las características de Visual Studio 2015, esta versión ofrece una experiencia redefinida de IntelliSense, más refactorizaciones y correcciones de código y configuración del estilo de código personalizable.

IntelliSense El objetivo de Visual Studio es promover los diversos flujos de trabajo de escritura de código que se usan actualmente, en lugar de comprometerlos. Una de las maneras más obvias en que Visual Studio aumenta su productividad es con IntelliSense (vea la Figura 5). Visual Studio 2017 RC actualiza la experiencia de Intelli­Sense con varias mejoras: preselección inteligente, filtrado y compatibilidad con XAML.

IntelliSense ahora ofrece resaltado y filtrado
Figura 5 IntelliSense ahora ofrece resaltado y filtrado

La preselección inteligente determinará el "tipo de destino" necesario en una posición del código y preseleccionará los elementos de la lista de finalización de IntelliSense que coincidan con ese tipo. Esto le permite acelerar el flujo de la escritura y olvidarse de la preocupación de tener que averiguar el tipo esperado en una ubicación determinada. El filtrado de IntelliSense le permite filtrar la lista de finalización por categoría; por ejemplo, puede filtrar los métodos de extensión o ver eventos únicamente. Esta característica mejora la productividad cuando trabaja en una gran base de código en la que hay muchos elementos en la lista de finalización o cuando trata con código desconocido.

Finalmente, esta versión ofrece una experiencia completamente nueva de XAML IntelliSense para ayudar a los desarrolladores a realizar enlaces rápida y correctamente y ver solo la información pertinente. Esta experiencia de finalización más inteligente incluye la finalización al enlazar eventos, rutas y funciones con x:Bind; la compatibilidad con la coincidencia de camelCase (por ejemplo, "RTB" se completará como “RichTextBox”); y la finalización automática de los prefijos de los espacios de nombre.

Análisis de código Visual Studio 2015 introdujo la característica de análisis de código dinámico, que permite recibir comentarios a medida que escribe su código. De este modo, puede detectar problemas con antelación, antes de que se compilen, en lugar de acumular un conjunto de problemas que puede que nunca consiga corregir. Para solucionar los errores identificados en el análisis de código dinámico, debe usar el menú de la bombilla o la combinación de teclas "Ctrl+" para obtener acceso a las refactorizaciones y a las correcciones de código. Visual Studio 2017 RC lleva las correcciones de código y los análisis dinámicos un paso más allá al ampliar el conjunto de refactorizaciones y correcciones de código disponibles, y al introducir analizadores del estilo de código que identifican los problemas de estilo en el código en cuanto se escriben.

Visual Studio 2015 incluía algunas refactorizaciones principales: extracción del método o la interfaz, cambio de la firma del método, inserción de la variable temporal, introducción de la variable local y eliminación de importaciones y usos innecesarios. Visual Studio 2017 RC expande el conjunto de refactorizaciones y correcciones para ayudarle a mantener una base de código legible y a catalizar sus flujos de trabajo de desarrollo. Por ejemplo, un número importante de desarrolladores al principio escriben todas sus clases, interfaces y otros tipos en un solo archivo y luego extraen cada tipo a un archivo con el nombre coincidente. Visual Studio 2017 RC acelera este proceso gracias a la opción de refactorización "Mover el tipo a archivo coincidente". Otras refactorizaciones que puede considerar son:

  • Sincronizar nombre de tipo y archivo
  • Convertir propiedad a método
  • Usar inicializador de objeto
  • Convertir null-check + throw to use ?? + throw
  • Convertir string.Format a cadena interpolada
  • Sincronizar el método
  • Agregar caso que falta
  • Agregar llaves

Además, esta versión presenta algunas correcciones y análisis del código base para XAML. Al usar el mismo mecanismo de bombilla en C# y Visual Basic, puede ordenar y quitar espacios de nombre innecesarios y agregar espacios de nombres que faltan a sus archivos XAML. 

Mantener una base de código legible y coherente es un desafío constante. Hay buenos motivos para esforzarse para tener una base de código legible: Si todo el código tiene un aspecto coherente, es más fácil incorporar nuevos desarrolladores y las revisiones de código pueden centrarse en la lógica en lugar de en las minucias de estilo y formato. Visual Studio 2017 RC establece una forma de configurar el estilo del código con convenciones de nombres personalizadas y reglas de estilo integradas.

En RC, puede ir a Herramientas | Opciones | Editor de texto | [C#/Basic] | Estilo de código | General para ver las reglas de estilo configurables integradas, que incluyen la preferencia de 'var' frente a un tipo explícito, de predefinido frente a un tipo de marco, de esto frente a nada. Cada regla incluye una descripción y una preferencia y una gravedad configurables. Las distintas gravedades funcionan de la forma siguiente:

  • Se muestra un error en el editor con una línea en zigzag roja, aparece en la Lista de errores e interrumpe la compilación.
  • Se muestra una advertencia en el editor con una línea en zigzag verde, aparece en la Lista de errores y solo interrumpe la compilación si está habilitada la configuración "treat warning as errors" (tratar advertencias como errores).
  • Se muestra una sugerencia en el editor con puntos grises, aparece en la Lista de errores y no interrumpe la compilación (vea la Figura 6).
  • No se muestra nada en el editor ni en la Lista de errores y no se interrumpe la compilación.

Aplicar las convenciones de nomenclatura y de estilo del equipo en el editor para obtener diagnósticos dinámicos al infringir las reglas
Figura 6 Aplicar las convenciones de nomenclatura y de estilo del equipo en el editor para obtener diagnósticos dinámicos al infringir las reglas

Dado que las preferencias para los estilos de nomenclatura varían considerablemente entre la comunidad de desarrolladores de .NET, puede crear sus propias convenciones de nombres personalizadas para aplicarlas en su equipo. Visual Studio 2017 RC ofrece un conjunto de valores predeterminados que se pueden configurar para aplicar convenciones del equipo, por ejemplo, que los miembros (excepto los campos) deban ser PascalCase, los tipos deban ser PascalCase, las interfaces empiecen por "I" y que los métodos asincrónicos terminen por "Async". Para configurar y agregar estos valores predeterminados, vaya a Herramientas | Opciones | Editor de texto |[C#/Basic] | Estilo de código | Nomenclatura. Las reglas de nomenclatura se colocan en una cuadrícula para la configuración al igual que las reglas de estilo estándar (tenga en cuenta que el orden es importante aquí: se aplica la primera regla de estilo coincidente).

Para agregar una regla de nomenclatura personalizada, haga clic en el botón más ("+") verde de la parte inferior de la cuadrícula de reglas para abrir el cuadro de diálogo de creación de reglas. Luego, puede usar las especificaciones (por ejemplo, "todas las clases") y los estilos (como "usar prefijo _") predeterminados para crear una regla de nomenclatura personalizada. Si las especificaciones y los estilos integrados no son suficientes para establecer la convención de nomenclatura que quiere, puede escribir los suyos propios.

Además, puede ajustar las reglas de estilos desde el editor. Para hacerlo, pulse "Ctrl+." para desencadenar el menú de bombilla, seleccione la corrección de regla en el menú y, a continuación, haga clic en el icono de engranaje de la vista previa dinámica de código.

Pruebas del código

La compatibilidad con las pruebas unitarias crea una tensión interesante entre la selección de suficientes pruebas para garantizar que el código sea correcto y la ejecución del menor número posible para no tener que esperar tanto tiempo en obtener los resultados. Este término medio entre la corrección y el tiempo a menudo ha hecho que los desarrolladores se sientan improductivos y frustrados. Para mitigar este estrés, Visual Studio 2017 RC presenta la prueba unitaria dinámica para C# y Visual Basic (vea la Figura 7).

La prueba unitaria dinámica proporciona comentarios instantáneos sobre si en el código se ha ejecutado una prueba sin errores, con errores o no se ha ejecutado ninguna prueba
Figura 7 La prueba unitaria dinámica proporciona comentarios instantáneos sobre si en el código se ha ejecutado una prueba sin errores, con errores o no se ha ejecutado ninguna prueba

La prueba unitaria dinámica analiza los datos generados en tiempo de ejecución para ejecutar solo las pruebas afectadas después de una edición, y ofrece comentarios inmediatos sobre el estado de las pruebas en el editor. Estas visualizaciones insertadas se muestran línea por línea:

  • Si una línea de código ejecutable se ejecuta y como mínimo una prueba es errónea, aparecerá una "X" de color rojo.
  • Si una línea de código ejecutable se ejecuta y todas las pruebas son correctas, aparecerá una marca de verificación de color verde.
  • Si ninguna prueba ejecuta una línea de código ejecutable, aparecerá un guión de color azul.

Gracias a la información del resultado de la prueba y la cobertura de código dinámica que proporciona la prueba unitaria dinámica, no es necesario que seleccione y ejecute manualmente las pruebas. Los comentarios dinámicos también sirven para notificarle de manera instantánea si el cambio realizado ha interrumpido el programa (si las visualizaciones insertadas cambian las marcas de verificación verdes por "X" rojas, significa que ha interrumpido una prueba). Para ver las pruebas que se ejecutan en cada línea, puede mantener el puntero encima de la marca o la X en cualquier momento. Además, para navegar directamente a esa prueba, puede hacer clic en ella en la información de herramientas que aparece al mantener el puntero.

Si forma parte de un equipo que practica el desarrollo controlado por pruebas, la prueba unitaria dinámica ludifica el flujo de trabajo; es decir, todas las pruebas aparecerán de color rojo y erróneas al principio y, a medida que implemente cada método, verá como cambian a verde si son correctas. Para el resto de desarrolladores, la prueba unitaria dinámica proporciona comentarios visuales cuando interrumpen el código.

Depuración del código

Cuando todo lo demás es erróneo, los desarrolladores confían en la depuración para poder identificar el origen de un problema. Visual Studio 2017 RC le permite ahorrar tiempo al reducir el número de acciones necesarias para ejecutar paso a paso un programa y explorar detalladamente la información de excepciones.

La característica Run To Click realiza lo que su nombre indica; ejecuta un programa hasta que alcanza la línea de código de destino e interrumpe el modo de depuración. Básicamente, gracias a ella, los desarrolladores ya no deben agregar, ejecutar ni quitar puntos de interrupción temporales al combinar todas estas acciones en un solo clic. Para usar esta característica, simplemente debe pulsar el icono verde "ejecutar hasta aquí" que aparece a la izquierda de la línea de código al mantener el puntero encima de él en modo de depuración.

Tal vez, la mejora de productividad más importante del depurador es la nueva aplicación auxiliar de excepciones. En el cuadro de diálogo rediseñado se muestra la información más importante de una excepción en la parte superior, como los detalles de una excepción interna y la expresión que devuelve NULL, tal y como se muestra en la Figura 8. Visual Studio 2017 RC también le permite prohibir las interrupciones en tipos de excepción en casos específicos, de modo que puede descartar las excepciones que generan bibliotecas de terceros o determinados archivos .dll durante la depuración.

Con la nueva aplicación auxiliar de excepciones, ya no es necesario explorar detalladamente listas desplegables para buscar las acciones y la información más importantes
Figura 8 Con la nueva aplicación auxiliar de excepciones, ya no es necesario explorar detalladamente listas desplegables para buscar las acciones y la información más importante

Resumen

Visual Studio 2017 RC se centra en aumentar su productividad al ahorrarle tiempo y esfuerzo. Es un honor poder compartir las mejoras en la navegación con GoTo y Buscar todas las referencias, las mejoras en IntelliSense tanto para C# y Visual Basic como XAML, una ampliación del análisis de código dinámico con más refactorizaciones y correcciones y la adición de estilo de código, una forma interactiva de realizar pruebas con la prueba unitaria dinámica y una experiencia de depuración eficiente con la nueva aplicación auxiliar de excepciones. Espero recibir sus comentarios y que tenga una experiencia productiva con Visual Studio 2017 RC.


Kasey Uhlenhuth es administradora de programas del equipo de .NET y Visual Studio en Microsoft y actualmente trabaja en la modernización de la experiencia para desarrolladores de C#. Anteriormente, trabajó en C# interactivo y Herramientas de Node.js para Visual Studio. Puede ponerse en contacto con ella en kaseyu@microsoft.com o en Twitter: @kuhlenhuth.

Gracias a los siguientes expertos técnicos de Microsoft por revisar este artículo: David Carmona, Kevin Pilch-Bisson y Mark Wilson-Thomas
Kevin Pilch ha trabajado en Developer Tools en Microsoft durante casi 15 años.  Durante este tiempo, ha trabajado en la experiencia del IDE de VB y C#, incluidas las características como IntelliSense, formato, refactorización, coloración, etc. Más recientemente, ha sido director del equipo del IDE para el proyecto Roslyn de Microsoft. Le apasiona pasar tiempo con sus hijos, entrenarse para maratones y jugar a hockey.  Entre sus debilidades se incluye la cerveza y las galletas con pepitas de chocolate. Puede encontrar a Kevin en Twitter @Pilchie.

Mark Wilson-Wilson es administrador de programas en el equipo del IDE de Visual Studio, en el que se encarga del editor de Visual Studio. Ha estado trabajando con herramientas para desarrolladores durante más de 10 años, así como herramientas para Office, SQL, WPF y Silverlight. Puede encontrarlo en Twitter @MarkPavWT.


Discuta sobre este artículo en el foro de MSDN Magazine