Back-End

28 mai, 2015

Visual Basic 14 – Novidades da nova versão: refatoração embutida

Publicidade

Este artigo faz parte de uma série de artigos onde eu mostro as novidades do Visual Basic 14, a nova versão do Visual Basic .NET, que fará parte do Visual Studio 2015.

Esta versão foi reescrita do zero em cerca de 1,3 milhões de linhas de código e, segundo a Microsoft, a equipe aproveitou para reescrever a repensar todas as partes do Visual Basic. Para ir digerindo cada novidade, eu vou escrever uma série de artigos onde vou apresentar uma novidade por artigo. Assim, com calma, você vai testando e incorporando cada novo recurso à sua experiência.

Lembrando que eu estou usando a versão Visual Studio CTP 6 que poderá sofrer alterações até a release final.

A seguir, temos uma relação de alguns dos novos recursos que foram incluídos no Visual Basic:

Recurso Exemplo C# VB
Auto-property initializers public int X { get; set; } = x; Added Exists
Getter-only auto-properties public int Y { get; } = y; Added Added
Ctor assignment to getter-only autoprops Y = 15 Added Added
Parameterless struct ctors Structure S : Sub New() : End Sub : End Structure Added Added
Using static members using System.Console; … Write(4); Added Exists
Dictionary initializer new JObject { [“x”] = 3, [“y”] = 7 } Added No
Await in catch/finally try … catch { await … } finally { await … } Added No
Exception filters catch(E e) if (e.Count > 5) { … } Added Exists
Partial modules Partial Module M1 N/A Added
Partial interfaces Partial Interface I1 Exists Added
Multiline string literals “Hello<newline>World” Exists Added
Year-first date literals Dim d = #2014-04-03# N/A Added
Line continuation comments Dim addrs = From c in Customers ‘ comment N/A Added
TypeOf IsNot If TypeOf x IsNot Customer Then … N/A Added
Expression-bodied members public double Dist => Sqrt(X * X + Y * Y); Added No
Null propagation customer?.Orders?[5]?.$price Added Added
String interpolation #8221;{p.First} {p.Last} is {p.Age} years old.” Added* Planned
nameof operator string s = nameof(Console.Write); Added* Planned
#pragma #Disable Warning BC40008 Added Added
Smart name resolution N/A Added
ReadWrite props can implement ReadOnly Exists Added
#region inside methods Exists Added
Overloads inferred from Overrides N/A Added
CObj in attributes Exists Added
CRef and parameter name Exists Added
Extension Add in collection initializers Added Exists
Improved overload resolution Added N/A

Recursos usados:

Melhorando a experiência de codificação: Refatoração embutida

Agora você não precisa mais adquirir pacotes de terceiros para poder realizar a refatoração diretamente no seu código. Tarefas como extrair métodos e outras refatorações estão disponíveis a um clique de mouse.

Para usar o recurso, basta clicar em um identificador ou destacar um subexpressão e, em seguida, pressionar Ctrl+ponto(.), ou clicar com o botão direito do mouse e escolher a opção Quick Actions.

Essa ação faz com que apareça um pequeno ícone de uma luz amarela com um menu de contexto exibindo ações relevantes que você poderá efetuar no seu código.

Para testar, vamos abrir o  VS Studio CTP 6  e clicar em New Project. Selecione Visual Basic e o template Windows Forms Application e informe o nome VB14_Refatoracao e clique no botão OK:

vbn_nov1411

Inclua um botão de comando no formulário form1.vb e no seu evento Click, defina o código para chamar o método CalculaAreaCirculo().

Selecione a variável areaCirculo e pressione CTRL+ ou clique com o botão direito do mouse sobre a variável areaCirculo para exibir o menu suspenso e, a seguir, clique em Quick Actions:

vbn_nov1413

Será exibida um relação de sugestões de ações a realizar no seu código:

vbn_nov1412

Selecione a ação a efetuar e clique em Preview changes para visualizar as alterações no código:

vbn_nov1414

Agora você pode aplicar a refatoração ao seu código clicando em Apply ou cancelar a operação.

Agora selecione o método CalculaAreaCirculo() e clique com o botão direito do mouse. No menu suspenso selecione a opção Rename para renomear o nome deste método:

vbn_nov1415

Clicando em Rename será aberta uma caixa no lado superior esquerdo da janela, contendo as ocorrências do nome selecionado para renomear e opções para incluir comentários, strings e visualizar as alterações;

vbn_nov1416

Clicando no botão Apply (se você marcou a opção Preview changes), teremos uma visualização das alterações no código:

vbn_nov1417

Novamente você confirma a operação ou cancela.

Esta opção verifica se existe outro método com o mesmo nome que você pretende usar e lhe avisa. Agora selecione a chamada do método CalculaAreaCirculo() no evento Click do botão de comando e clique com o botão direito do mouse selecionando a seguir a opção Peek Definition:

vbn_nov1418

O código referente ao método selecionado será exibido, conforme a figura abaixo:

vbn_nov1419

Verifique o recurso em seu próprio código e imagine as possibilidades. Codificar vai ficar mais fácil e intuitivo.