Dev (Back & Front)ARTIGO

Desenvolvendo software com qualidade usando o Visual Studio 2010

Olá, internautas! Gostaria de falar um pouco hoje sobre a importância da qualidade no momento de desenvolver o código. Com o passar do tempo, em minha carreira como desenvolvedor, adquiri bastante experiência, e também através de pesquisas, percebi que para se desenvolver um software que apresente qualidade no código é preciso que uma série de coisas sejam integradas, e muitas ferramentas possibilitam isso, como o Team Foundation Server, para guardar as versões de código e documentação, e o Visual Studio, que possui muitos atributos de comunicação e de integração com outros componentes e softwares.

O Visual Studio 2010 é uma versão aprimorada da ferramenta, com novas funcionalidades. Veremos aqui alguns benefícios de se trabalhar com o Visual Studio 2010, além de alguns exemplos durante o artigo.

Figura 1

Pontos importantes

A parte de desenvolvimento “web” da ferramenta está mais aprimorada, desde as teclas de atalho até os novos componentes e as tecnologias implantadas. Realmente é mais fácil desenvolver software com Visual Studio 2010 do que com outras ferramentas de software.

O projeto está mais limpo, o arquivo de configuração está mais “clean”, os projetos podem vir com templates específicos ou em branco; ela consome menos memória em sua máquina e existe muito código personalizado e otimizado para uso, o que provê mais assistência no requisito layout, estilo e CSS na edição; quem utiliza o “ViewState” no Visual Studio 2008 vai perceber que houve uma grande limpeza.

A ferramenta também possui URL semântica/routing para aprimorar as páginas nos sistemas de pesquisa como Bing, Google e Yahoo!, ou seja, fica muito mais fácil com a URL semântica/routing para achar o seu site/sistema nas primeiras colocações utilizando essa tecnologia do VS 2010.

Novos modelos de validação de dados foram colocados – para quem trabalha com a ferramenta em versão antiga como eu, desde o primeiro, você deve lembrar que a versão 2008 já começou a separar e a organizar bem melhor os modelos de validação de dados automatizado.

Foram colocados mais controles (ou manipuladores) de dados na ferramenta, com o objetivo de ajudar e abstrair códigos da melhor forma para o desenvolvedor. O controle QueryExtender é um exemplo para quem quer trabalhar com EntityDataSource e LinqDataSource.

A GridView, um componente muito utilizado, foi aprimorada para aceitar dados dos tipos dinâmicos. Agora o JavaScript tem intellisense, performance na ferramenta e integração com jQuery e Ajax. A parte de publicação e deployment foi aprimorada com mais opção e rapidez.

A instalação está bem mais rápida, com apenas 20 minutos, mantendo todas as ferramentas citadas acima e ainda as não citadas.

Codificação

Na minha opinião, as opções abaixo devem ser destacadas como inovações da ferramenta em nível de codificação e qualidade. Lembrando que em um único artigo não dá para falar de todas as inovações da ferramenta Visual Studio 2010, estou destacando as partes importantes e relevantes para mim.

Para um desenvolvimento de qualidade, é necessário seguir alguns padrões específicos e de código aberto criados pela Microsoft, senão o código pode virar uma bagunça, de difícil entendimento e manutenção. Uma inovação da ferramenta VS 2010 foi o MVC para a parte de layout.

Antigamente era tudo misturado e, sem organização para colocar a parte de layout, os desenvolvedores mais experientes sabiam organizar, os novos, não. Agora cada pasta tem o seu código, tem o seu controle, seu modelo e seu conteúdo:

Note que para criar um projeto do tipo MVC, o template já vem organizado com seus respectivos arquivos, veja o código abaixo:

 Formulário simples utilizando MVC

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">

 <h2>Contato</h2>

 <% using (Html.BeginForm())

 { %>

 <%: Html.ValidationSummary(true, "A mensagem falou a ser enviada! Tente novamente!") %>

 <fieldset>

 <legend>Entre em contato</legend>

 <div>

 <%: Html.Label("Nome: ") %>

 </div>

 <div>

 <%: Html.TextBox("txtNome", null, new { @class="campo_form" }) %>

 </div>

 <div><%: Html.Label("Email: ") %></div>

 <div>

 <%: Html.TextBox("txtEmail", null) %>

 </div>

 <div><%: Html.Label("Descrição: ") %></div>

 <div>

 <%: Html.TextArea("txtDescricao") %>

 </div>

 <input type="submit" value="Enviar" />

 </fieldset>

 <% } %>

</asp:Content>

Resultado do código

Validação de dados

Melhoria Web.Config

Outra inovação importante na ferramenta Visual Studio foi dividir o arquivo de configuração da aplicação em dois  tipos, debug e release. Assim, no momento em que for publicar o software para homologar, basta utilizar o debug. Quando for a vez de produção, basta marcar como release.

Marcando essas configurações, o sistema já sabe qual arquivo de configuração pegar. Isso é muito importante. Veja o código a seguir.

Coloquei um vídeo na comunidade aspneti.com explicando como desenvolver e mexer com o arquivo de configuração referente aos tipos de ambientes.

Cliquei na seta ao lado esquerdo do Web.config, abriram o Web.Debug.config e o Web.Release.config.  A conexão com o banco de dados em ambientes separados (é o certo de se fazer) pode ser separado dentro de cada arquivo dessa configuração.

 <connectionStrings>

 <add name="MyDB" 

 connectionString="Data Source=DESENVOLVIMENTO;Initial Catalog=MyReleaseDB;Integrated Security=True" 

 xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>

 </connectionStrings> 

Debug

Agora, o ambiente de produção deve conter outra string de conexão apontando para a produção. (Code 3) (release)

 <connectionStrings>

 <add name="MyDB" 

 connectionString="Data Source=PRODUCAO;Initial Catalog=MyReleaseDB;Integrated Security=True" 

 xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>

 </connectionStrings> 

Release

O próximo passo foi colocar a mesma tag junto ao arquivo principal (Web.Config) para que seja copiado no momento da publicação. (Code 4)

 <connectionStrings>

 <add name="MyDB" 

 connectionString=""/>

 </connectionStrings> 

Depois de colocar e configurar os dois ambientes com o arquivo principal, basta escolher na ferramenta VS 2010 o tipo de publicação que deseja. Veja abaixo:

Ao mesmo tempo, a ferramenta coloca no arquivo principal a string de conexão escolhida de forma dinâmica e simples. A produtividade aumenta consideravelmente.

Auto Complete

O auto complete no HTML com as tags do framework .NET foi outra inovação surpreendente. A Microsoft se preocupa muito com a produtividade e com a qualidade do software que será construído, e com o VS 2010 basta digitar o nome da tag e clicar duas vezes na tecla TAB para auto:

Dentro da página .ASPX, digitei a palavra List, e o Visual Studio 2010 já lista as possibilidades. Ao clicar a tecla TAB duas vezes, aparece o seguinte:

O auto complete funciona para qualquer tag dentro da página, na parte de layout, principalmente com as tags do framework .NET. Funciona também dentro do C#.NET, no código propriamente dito. Na versão 2008 do Visual Studio, já havia a parte de “tab tab e complete” de código C#, não na parte de layout. No código, a funcionalidade foi melhorada. Resolvi falar isso, pois geralmente os desenvolvedores não sabem que podem utilizar essa facilidade e qualidade de código.

 protected void Page_Load(object sender, EventArgs e)
 {
 if (true)
 {

 }
 } 

Teste Unificado

Com o Visual Studio 2010, o teste do seu software é mais poderoso e simples de fazer. Além da possibilidade de criar um aplicativo que emula todo o teste, existe um menu na barra de menus específicos para teste e emulação do aplicativo construído:

Imagina emular o aplicativo construído colocando quantos usuários forem necessários, teste de caixa branca, caixa preta e outros mais. A ferramenta 2008 já possuía esse recurso, na versão 2010 está muito mais fácil e rápido de fazer.

Documentação e Arquitetura

A documentação continua a mesma das versões anteriores. Clicando /// em cima de um método, aparece imediatamente o espaço para comentar e futuramente gerar uma documentação especial como chm, doc, html e outros:

 /// <summary>

 /// 

 /// </summary>

 /// <param name="sender"></param>

 /// <param name="e"></param>

 protected void Page_Load(object sender, EventArgs e)

 {

 if (true)

 {



 }

 } 

A ferramenta veio com um menu novo, especialmente na arquitetura e análise de sistema. Com ele, um diagrama pode ser criado, mesmo que todo o código já tenha sido feito, UML e camadas:

Note que no menu pode ser criado um novo diagrama, gerar dependências gráficas e outras telas específicas.

Na figura 11, ao escolher o menu de dependência, as classes podem ser geradas com uma dependência para o gráfico, ou seja, tudo que for gerado no gráfico é automaticamente incluído na classe, no código, no namespace, no assembly ou em alguma customização.

Passando para a figura acima (menu Windows), podem ser criados um gráfico UML Model Explorer, a arquitetura do projeto e as camadas. Mesmo que o projeto já tenha sido feito e criado, a ferramenta gera utilizando engenharia reversa.

Desenvolvimento em camadas

Como falado anteriormente, o Visual Studio 2010 oferece a opção de utilizar MVC na parte de layout com melhor qualidade e organização de arquivos, url routing e tudo mais. Para a camada de dados e de negócios, geralmente eu crio um outro projeto com essa finalidade, ou seja, trata-se de negócio e de dados.

É lógico que em poucas linhas seria muito difícil explicar tudo, mas vou tentar resumir o máximo. Por exemplo: tenho um projeto do tipo web que precisa acessar dados e regras de negócio, para isso eu gero um outro projeto e separo as classes:

Note que há um projeto chamado “Business” com as pastas BRL, DAO e DTO no início da figura acima. Logo em seguida, outro projeto do tipo web, referenciando o projeto Business, dentro da pasta References para uso interno.

Isso facilita o desacoplamento de dados, regras e muito mais, sabe por quê? Devido à possibilidade de criação de outros projetos que acoplam a mesma funcionalidade utilizando apenas outra plataforma.

Explicando cada pasta do projeto Business

Dentro da pasta DAO ou DAL (só a nomenclatura que muda) ficam todas as classes que fazem select, insert e update no banco de dados. Pode ser feito utilizando Stored Procedure e tudo mais. Lembrando que os métodos são internos, e não públicos. A única camada que deve acessar a DAO é a BRL.

Dentro da pasta BRL ficam todas as classes públicas que acessam as classes internas da DAO e executam alguma regra.

Dentro da pasta DTO, ficam todas as propriedades de cada dado que precisa ser trafegado. Pode ser indo ou voltando, ou seja, passando para o banco de dados ou voltando.

Passando agora para o projeto do tipo web, o formulário preenche as propriedades de um DTO (que tem get e set), depois passa para a BRL, que por sua vez executa alguma regra de negócio, se houver, e que por final passa para a DAO, que abre o banco de dados e executa o comando necessário. Essa é a mais básica organização para ser feita junto de um projeto, a ferramenta Visual Studio 2010 facilita muito este trabalho. Caso queira criar outro projeto do tipo Windows Form e utilizar as mesmas regras, basta criar um novo projeto e chamar o Business existente acoplando no novo projeto.

Novos Templates

Como mais uma inovação da ferramenta, a Microsoft colocou mais tipos de projetos com a possibilidade de criação e funcionamento:

Note que há mais templates do tipo Windows, há Cloud (criar o projeto utilizando as nuvens), reporting, sharepoint, silverlight, projeto de teste, WCF, Workflow (fluxo de algum projeto), modelagens e outros que não saíram na imagem.

A nova ferramenta foi modelada para aceitar vários outros tipos de projetos e templates com apenas desenvolvimento de plugins, ou seja, ficou totalmente acoplada e funcional.

Novos componentes

Além de tudo isso que falei acima, existem mais componentes integrados que não existiam nas versões anteriores. A Microsoft percebeu e ouviu alguns desenvolvedores e, com isso, surgiram novos componentes. Dentre alguns, vou destacar um específico e de fácil acesso:

O componente de gráfico pode ser colocado na sua aplicação web de forma simples e bela. O resultado está na figura acima. Para a alegria dos fascinados em 3D, o mesmo pode ser transformado com apenas duas linhas de código:

Veja que simples a linha de código:

 <asp:Chart ID="chartWebcast" runat="server">

 <Series>

 <asp:Series Name="compeoes" YValueType="Int32">

 <Points>

 <asp:DataPoint AxisLabel="Mauricio" YValues="29" />

 <asp:DataPoint AxisLabel="Ivan" YValues="20" />

 <asp:DataPoint AxisLabel="Ramon" YValues="19" />

 <asp:DataPoint AxisLabel="Roberto" YValues="39" />

 <asp:DataPoint AxisLabel="Junior" YValues="9" />

 </Points>

 </asp:Series>

 </Series>

 <ChartAreas>

 <asp:ChartArea Name="main">

 <Area3DStyle Enable3D="true" Inclination="10" LightStyle="Realistic" 

 Perspective="15" IsRightAngleAxes="false" IsClustered="false" />

 </asp:ChartArea>

 </ChartAreas>

 </asp:Chart> 

Busca fácil

No novo Visual Studio 2010 as buscas foram aprimoradas; basta selecionar um método ou variável que a busca é feita. As partes são destacadas! Veja:

Apertando “Ctrl” + “i”, a próxima variável será mostrada na tela.

URL Routing

A URL Routing ficou mais simples de desenvolver e com qualidade. Veja o Global.asax.cs.

 public void RegisterRoutes(RouteCollection routes)

{

routes.MapPageRoute("product-browser", //nome amigável

Products/{category}", //URL que vai ficar

"~/Products.aspx"); //página de execução real

}

protected void Application_Start(object sender, EventArgs e)

{

RegisterRoutes(RouteTable.Routes);

} 

Passando para a parte da página no page_load, é necessário pegar o dado que está sendo executado na página real:

protected Page_Load(object sender, EventArgs e)

{

 string category = Page.RouteData.Values["category"] as string;

 //aqui chama o grid para preencher os dados com o parâmetro selecionado

 preencherGrid(category);

} 

Há muito mais a falar sobre as novidades do Visual Studio 2010, mas aí este artigo ficaria muito longo e cansativo para ler. Espero que tenham gostado de algumas coisas que destaquei. Qualquer dúvida, pode entrar em contato!

Abraços.

Com mais de 20 anos trabalhando no mercado de tecnologia. Mestre em Engenharia Elétrica voltada para o mundo mobile, com mais de 20 livros publicados e cerca de 700 artigos publicados com intuito de ajudar àqueles que querem aprender a programar (site, software, desktop, serviços, api e mobile). Site pessoal: https://www.mauriciojunior.net - MVP, MCAD, MCP Microsoft

Ver perfil