Connect(); 2016

Volume 31 - Número 12

Visual Studio Development - Aumentos de produtividade no Visual Studio 2017 RC

Por Kasey Uhlenhuth; 2016

Se você quiser ser mais produtivo, é necessário economizar mais tempo ou esforço nas tarefas diárias. O Visual Studio 2017 RC aumenta sua produtividade com tarefas automatizadas e navegação aprimorada, além de comentários imediatos sobre a qualidade e o estado de seu código.

Os avanços feitos pelo Visual Studio na refatoração, geração de código, análise de código, navegação, teste e depuração para desenvolvedores .NET foram possibilitados pelo projeto “Roslyn”, uma empreitada de seis anos para rearquitetar os compiladores de C# e Visual Basic. O Visual Studio 2017 RC aproveita o investimento do Visual Studio 2015 no Roslyn para gerar toneladas de novas funcionalidades incríveis.

Quando os desenvolvedores exploram um bug, descobrem as implicações de uma refatoração ou trabalham para desenvolver uma base de código desconhecida, eles dependem da precisão e da facilidade de navegação pelo código. Esta versão proporciona uma experiência de navegação bastante aprimorada—com Find All References (Localizar Todas as Referências), GoTo (Ir para) e Indent Guides (Guias de Recuo)—para levar você de A até B com mais confiança e menos distrações (mesmo em bases de código maiores).

Antes, Find All References (Localizar Todas as Referências) descobriria todos os usos de um símbolo e, em seguida, mostraria os resultados como uma lista simples na janela Results (Resultados). Agora, como mostra a Figura 1, as referências foram coloridas e organizadas em uma exibição hierárquica com agrupamento, classificação, filtragem e pesquisa personalizados para ajudar você a focar direta e rapidamente na referência específica desejada—mesmo quando houver muitas referências na lista. Além disso, passar o mouse sobre uma referência exibirá uma dica de ferramenta com uma previsão do local para você navegará antes de realmente ir. Você pode salvar ou “bloquear” seus resultados de Find All References (Localizar Todas as Referências) em situações nas quais você precisa executar o comando várias vezes, mas quer manter os resultados originais (por exemplo, ao investigar e detalhar o impacto de uma refatoração).

Os aprimoramentos de Find All References (Localizar Todas as Referências) incluem colorização, organização personalizada e visualizações via passagem do ponteiro
Figura 1 Os aprimoramentos de Find All References (Localizar Todas as Referências) incluem colorização, organização personalizada e visualizações via passagem do ponteiro

Para economizar ainda mais tempo, aprenda os atalhos de teclado úteis exibidos na Figura 2.

Figura 2 Atalhos de teclado para navegação geral

Ir para Definição Inspecionar Definição Localizar Todas as Referências Ir para Implementação Ir para Todos (Arquivo/Tipo/Membro/Símbolo)
F12 Alt+F12 Shift+F12 Ctrl+F12 Ctrl+T ou Ctrl+,

 

Outra funcionalidade que passou por aprimoramentos consideráveis nesta versão é o GoTo (Ir para) (antigo Navigate To [Navegar até]). GoTo All (Ir para Todos) é uma pesquisa rápida e completa de qualquer declaração de arquivo, tipo, membro ou símbolo em uma solução. Os ícones na parte inferior da barra de pesquisa permitem que você filtre seus resultados por grupo ou ajuste o escopo da pesquisa, como mostra a Figura 3. (Mas se você preferir o teclado em vez do mouse, também é possível aproveitar uma sintaxe de consulta que lhe permite filtrar diretamente digitando um prefixo simples). O ícone de engrenagem no canto inferior direito permite a personalização de algumas configurações, incluindo o posicionamento da barra de pesquisa, uma visualização dinâmica dos arquivos que contêm o resultado realçado e outras informações de arquivo para cada resultado.

Usar ícones ou a sintaxe de consulta para filtrar resultados por Arquivos, Tipos, Membros ou Símbolos
Figura 3 Usar ícones ou a sintaxe de consulta para filtrar resultados por Arquivos, Tipos, Membros ou Símbolos

Por fim, talvez você reconheça os Indent Guides (Guias de Recuo) da extensão popular Productivity Power Tools. Agora, como parte do produto principal, as linhas verticais cinzas e pontilhadas servem como marcos no código para fornecer contexto dentro de seu quadro de visão. Ao passar o ponteiro do mouse sobre um chave inferior, você obtém uma visualização colorida da chave superior correspondente, e ao passar o ponteiro do mouse sobre o próprio guia, você obtém uma visualização colorida do código que cerca e contém a chave superior correspondente. Essas funcionalidades têm como objetivo dar uma ideia melhor da “geografia” e contexto de seu código sem precisar rolar e tela ou navegar. Os Indent Guides (Guias de Recuo) também funcionam bem com as funcionalidades de estrutura de tópicos existentes no Visual Studio, e oferecem até mesmo mais regiões expansíveis e recolhíveis.

Também é possível habilitar o “Map Mode” (Modo de Mapa) em sua barra de rolagem. Isso transforma a barra de rolagem em um “mapa” de seu código, permitindo a visualização de uma versão de miniatura de todo o documento, incluindo erros, pontos de interrupção etc. Se você passar o ponteiro do mouse sobre qualquer parte do “mapa”, uma visualização do código será exibida nesse ponto do documento.

Novamente, você pode aumentar sua eficiência aprendendo os atalhos de teclado úteis exibidos na Figura 4.

Figura 4 Atalhos de teclado para Ir para

  Ir para Todos Ir para Linha Ir para Arquivo Ir para Tipo Ir para Membro Ir para Símbolo
Atalho Ctrl+T ou Ctrl+, Ctrl+G Ctrl+1, F Ctrl+1, T Ctrl+1, M Ctrl+1, S
Prefixo da consulta Sem prefixo : f t m #

Produção e leitura do código

Junto com a navegação, os desenvolvedores gastam muito tempo escrevendo e lendo código. O Visual Studio 2017 RC concentra-se em facilitar a produção do código correto, além de manter a legibilidade das bases de código do desenvolvedor. Tendo como base as funcionalidades do Visual Studio 2015, esta versão fornece uma experiência refinada de IntelliSense, mais refatoração e correções de código e configuração do estilo de código e aplicação personalizada.

IntelliSense A meta do Visual Studio é auxiliar em vez de prejudicar os diversos fluxos de trabalho de produção de código que estão sendo usados atualmente. Uma das maneiras mais óbvias de o Visual Studio tornar você mais produtivo é com o IntelliSense (veja a Figura 5). O Visual Studio 2017 RC atualiza a experiência de Intelli­Sense com diversos aprimoramentos: pré-seleção inteligente, filtragem e suporte a XAML.

Agora o IntelliSense tem realce e filtragem
Figura 5 Agora o IntelliSense tem realce e filtragem

A pré-seleção inteligente determinará o “tipo de destino” exigido em uma posição no código e pré-selecionará itens na lista de preenchimento do IntelliSense que correspondam a esse tipo. Isso acelera seu fluxo de digitação e remove o fardo de ter que descobrir o tipo esperado em um determinado local. A filtragem do IntelliSense permite que você filtre a lista de preenchimento por categoria; por exemplo, você pode filtrar métodos de extensão ou eventos apenas para visualização. Essa funcionalidade melhora a produtividade quando você está trabalhando em uma base de código grande, na qual há muitos itens na lista de preenchimento, ou ao lidar com um código desconhecido.

Por fim, esta versão proporciona uma experiência totalmente nova para o XAML IntelliSense, a fim de ajudar os desenvolvedores a associar de forma rápida e correta e ver apenas as informações relevantes. Essa experiência de preenchimento mais inteligente inclui preenchimento ao associar eventos, caminhos e funções com o x:Bind; suporte à correspondência por camelCase (por exemplo, “RTB” será preenchido como “RichTextBox”); e preenchimento automático de prefixo de namespace.

Análise de Código o Visual Studio 2015 apresentou a funcionalidade de análise de código dinâmica, o que permite comentários sobre seu código “enquanto você digita”. Isso permite que você fique sabendo sobre problemas antecipadamente, antes da compilação, em vez de acumular um conjunto de problemas que você nunca vai ter tempo de corrigir. Para resolver os erros identificados na análise de código dinâmica, use o menu de lâmpada ou o atalho “Ctrl+.” para acessar as correções de código e a refatoração. O Visual Studio 2017 RC eleva o patamar da análise dinâmica e das correções de código amplificando o conjunto disponível de refatoração e correções de código, e introduzindo analisadores de estilo do código que identificam problemas com o estilo assim que o código é digitado.

O Visual Studio 2015 incluiu algumas refatorações fundamentais: método ou interface de extração, assinatura do método de alteração, variável temporária embutida, introdução de variável local e remoção de usos e importações desnecessárias. O Visual Studio 2017 RC expande o conjunto de refatoração e correções a fim de ajudar você a manter uma base de código legível e catalisar seus fluxos de desenvolvimento. Por exemplo, inicialmente, um número considerável de desenvolvedores escreve todas as classes, interfaces e outros tipos em um único arquivo e, em seguida, extraem cada tipo em um arquivo com um nome correspondente. O Visual Studio 2017 RC acelera esse processo com a opção de refatoração “Move Type To Matching File” (Mover Tipo para Arquivo Correspondente). Entre as outras refatorações que você pode aguardar estão:

  • Sincronizar arquivo e nome do tipo
  • Converter propriedade em método
  • Usar inicializador de objeto
  • Converter null-check + throw a fim de usar ?? + throw
  • Converter string.Format em cadeia de caracteres interpolada
  • Tornar o método síncrono
  • Adicionar maiúsculas e minúsculas ausentes
  • Adicionar chaves

Além disso, esta versão apresenta algumas análises de código e correções básicas para XAML. Usando o mesmo mecanismo de lâmpada em C# e em Visual Basic, é possível classificar e remover name­spaces desnecessários e adicionar namespaces ausentes em seus arquivos XAML. 

Manter uma base de código consistente e legível é uma tarefa desafiadora. Há bons motivos para aspirar por uma base de código legível: Se todo o código parecer consistente, é mais fácil integrar novos desenvolvedores; e se todo o código parecer consistente, as revisões do código poderão se concentrar na lógica, e não em minúcias de formatação e estilo. O Visual Studio 2017 RC estabelece uma forma de configurar o estilo do código com regras de estilo integradas e convenções de nomenclatura personalizadas.

No RC, você pode acessar Tools | Options | Text Editor | [C#/Basic] | Code Style | General (Ferramentas | Opções | Editor de Texto | [C#/Basic] | Estilo de Código | Geral) para ver as regras de estilo internas configuráveis, o que inclui preferir var em vez do tipo explícito, predefinido em vez do tipo estrutura, isto em vez de nada. Cada regra acompanha uma descrição, uma preferência configurável e uma gravidade configurável. As gravidades diferentes funcionam da seguinte forma:

  • Um erro é exibido no editor como um rabisco vermelho, aparece na Error List (Lista de Erros) e interromperá o build.
  • Um aviso é exibido no editor como um rabisco verde, aparece na Error List (Lista de Erros) e interromperá o build somente se a configuração “treat warning as errors” (tratar avisos como erro) for habilitada.
  • A sugestão é exibida no editor como pontos cinzas, aparece na Error List (Lista de Erros) e não interromperá o build (veja a Figura 6).
  • Nenhum não é exibido no editor, não aparece na Lista de Erros e não interromperá o build.

Aplicar estilo de equipe e convenções de nomenclatura no Editor para obter diagnósticos dinâmicos ao violar regras
Figura 6 Aplicar estilo de equipe e convenções de nomenclatura no Editor para obter diagnósticos dinâmicos ao violar regras

Como as preferências por estilos de nomenclatura variam bastante na comunidade de desenvolvedores .NET, você pode criar suas próprias convenções de nomenclatura personalizadas a fim de aplicá-las em sua equipe. O Visual Studio 2017 RC fornece um conjunto de padrões que pode ser configurado a fim de aplicar as convenções de equipe, incluindo que os membros (exceto campos) devem ser PascalCase, tipos devem ser PascalCase, interfaces começam com “I”, e métodos assíncronos terminam com “Async.” Você pode configurar e acrescentar a esses padrões acessando Tools | Options | Text Editor | [C#/Basic] | Code Style | Naming (Ferramentas | Opções | Editor de Texto | [C#/Basic] | Estilo de Código | Nomenclatura). As regras de nomenclatura são posicionadas em uma grade para configuração, assim como as regras de estilo padrão (observe que a ordem é importante—a primeira regra de estilo de correspondência é aplicada).

Para adicionar uma regra de nomenclatura personalizada, clique no botão de adição verde (“+”) na parte inferior da grade de regras para abrir a caixa de diálogo de criação da regra. Em seguida, você pode usar as especificações padrão (por exemplo, “todas as classes”) e estilos (por exemplo, “usar prefixo _”) para criar uma regra de nomenclatura. Se as especificações e estilos internos não forem suficientes para gerar sua convenção de nomenclatura desejada, escreva sua própria.

Também é possível ajustar suas regras de estilo no editor pressionando “Ctrl+.” para disparar o menu de lâmpada, selecionando a correção de regra no menu e clicando no ícone de engrenagem na visualização de código dinâmica.

Teste do código

O suporte aos testes de unidade cria uma tensão interessante entre a seleção de uma quantidade suficiente de testes a fim de garantir que o código esteja correto, porém executando o mínimo de testes possível para que você não tenha que esperar tanto pelos resultados do teste. Muitas vezes, essa compensação entre correção e tempo tem feito os desenvolvedores se sentirem improdutivos e frustrados. Para reduzir esse estresse, o Visual Studio 2017 RC apresenta o Live Unit Testing (Teste de Unidade Dinâmico) para C# e Visual Basic (veja a Figura 7).

O Live Unit Testing (Teste de Unidade Dinâmico) fornece comentários instantâneos sobre se o código é atingido por testes de passagem, falha ou nenhum teste
Figura 7 O Live Unit Testing (Teste de Unidade Dinâmico) fornece comentários instantâneos sobre se o código é atingido por testes de passagem, falha ou nenhum teste

O Live Unit Testing (Teste de Unidade Dinâmico) analisa os dados gerados no tempo de execução a fim de executar apenas os testes afetados após uma edição e fornece comentários imediatos sobre o status dos testes no editor. Essas visualizações em linha aparecem linha por linha:

  • Se uma linha do código executável for atingida por pelo menos um teste de falha, ela será decorada com um “x” vermelho.
  • Se uma linha do código executável for atingida por todos os testes de passagem, ela será decorada com uma marca de seleção verde.
  • Se uma linha do código executável for atingida por nenhum teste, ela será decorada com um traço azul.

A cobertura de código dinâmica e as informações do resultado do teste fornecidas pelo Live Unit Testing (Teste de Unidade Dinâmico) removem o fardo de ter que selecionar e executar testes manualmente. O comentário dinâmico também serve para notificar você instantaneamente se a sua alteração tiver interrompido o programa—se a visualização em linha mudar das marcas de seleção verde para os x vermelho, você saberá que violou um teste. A qualquer momento, você pode passar o ponteiro do mouse sobre a marca ou x para ver quais testes estão atingindo a linha específica. Além disso, você pode navegar diretamente até o teste clicando nele na dica de ferramenta acionada pelo ponteiro do mouse.

Se você fizer parte de uma equipe que pratica o desenvolvimento conduzido por teste, o Live Unit Testing (Teste de Unidade Dinâmico) usará elementos gráficos no fluxo de trabalho; em outras palavras, todos os testes ficarão vermelho e falharão a princípio, e à medida que você implementa cada método, verá eles mudarem para verde se tiverem êxito. Para todos os outros desenvolvedores, o Live Unit Testing (Teste de Unidade Dinâmico) fornece comentários visuais quando o código for quebrado.

Depuração do código

Quando tudo mais falha, os desenvolvedores dependem da depuração para ajudar na identificação da fonte de um problema. O Visual Studio 2017 RC economiza tempo reduzindo o número de ações exigidas para percorrer um programa e detalhar as informações de exceção.

Run To Click (Executar até o Clique) faz exatamente o que o nome diz; ele executa um programa até que ele atinge a linha de código de destino e entra no modo de depuração. Essencialmente, ele acaba com a necessidade de os desenvolvedores adicionarem, atingirem e removerem constantemente pontos de interrupção temporários combinando todas essas ações em um clique. Para usar essa funcionalidade, basta pressionar o ícone verde “run to here” (executar até aqui) que aparece à esquerda da linha de código quando você passa o mouse sobre ela no modo de depuração.

Talvez o maior aprimoramento de produtividade no depurador seja o novo Exception Helper (Auxiliar de Exceção). A caixa de diálogo reprojetada exibe as informações mais importantes de uma exceção no nível superior, como detalhes de exceção interna e a expressão que retorna null, como mostra a Figura 8. O Visual Studio 2017 RC também permite que você proíba o detalhamento de tipos de exceção em casos específicos—permitindo que você desconsidere exceções emitidas de bibliotecas de terceiros ou de certas .dlls durante a depuração.

O novo Exception Helper (Auxiliar de Exceção) acaba com a necessidade de explorar menus suspensos para encontrar as informações e ações mais importantes
Figura 8 O novo Exception Helper (Auxiliar de Exceção) acaba com a necessidade de explorar menus suspensos para encontrar as informações e ações mais importantes

Conclusão

O Visual Studio 2017 RC se concentra em tornar você mais produtivo economizando tempo e esforço. Estou contente por poder compartilhar aprimoramentos na navegação com GoTo (Ir para) e Find All References (Localizar Todas as Referências), melhorias no IntelliSense, não só em C# e Visual Basic, como também em XAML, uma expansão de análise de código dinâmica com mais refatorações e correções e a adição de estilo de código, uma forma interativa de testar com o Teste de Unidade Dinâmica e uma experiência de depuração com o novo auxiliar de exceção. Aguardo ansiosa seus comentários e espero que você tenha uma experiência produtiva com o Visual Studio 2017 RC.


Kasey Uhlenhuth é gerente de programa na equipe .NET e Visual Studio na Microsoft e está trabalhando no momento na modernização da experiência do desenvolvedor em C#. Antes, ela trabalhou em C# Interactive e Ferramentas Node.js para Visual Studio. Entre em contato com ela em kaseyu@microsoft.com ou no Twitter: @kuhlenhuth.

Agradecemos aos seguintes especialistas técnicos da Microsoft pela revisão deste artigo: David Carmona, Kevin Pilch-Bisson e Mark Wilson-Thomas
Kevin Pilch trabalhou em Developer Tools na Microsoft por quase 15 anos.  Durante esse período ele trabalhou na experiência com IDE de C# e VB, incluindo recursos como IntelliSense, formatação, refatoração, colorização e mais. Recentemente, ele foi gerente da equipe de IDE do projeto Roslyn da Microsoft. Ele adora passar tempo com seus filhos, treinando para maratonas e jogando hockey.  Seus pontos-fracos são cerveja e cookies de chocolate. Encontre Kevin no Twitter @Pilchie.

Mark Wilson-Wilson é gerente de programa na equipe de IDE do Visual Studio, onde cuida do Visual Studio Editor. Ele está envolvido com ferramentas de desenvolvimento há mais de 10 anos, incluindo ferramentas para Office, SQL, WPF e Silverlight. Encontre-o no Twitter @MarkPavWT.