Olá Internautas, gostaria de falar um pouco sobre a qualidade no momento de desenvolver software.



Na prática


O Visual Studio 2010 veio com força, aprimorou as partes que precisava com componentes de desenvolvimento e inovou colocando novas funcionalidades dentro da ferramenta de desenvolvimento.


Pontos importantes


A parte de desenvolvimento “web” da ferramenta está mais aprimorada, desde as teclas de atalho até os novos componentes e tecnologias implantadas. Realmente é mais fácil desenvolver software com Visual Studio .NET 2010 do que 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, consome menos memória em sua máquina, existe muito código personalizado e otimizado para uso, provê mais assistência no requisito layout, estilo e CSS na edição, para quem utiliza o “ViewState” no Visual Studio .NET 2008, pode perceber que houve uma grande limpeza. 


Possui URL semântica/routing para aprimorar as páginas nos sistemas de pesquisa como o Bing, Google  e Yahoo; isto é; 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ê pode notar que a versão 2008 já começou a separar e organizar bem melhor os modelos de validação de dados automatizado.


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


A GridView, um componente muito utilizado foi aprimorado 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ção da ferramenta a nível de codificação e qualidade. Lembrando que, em um artigo não dá para falar de todas as inovações da ferramenta Visual Studio .NET 2010, estou destacando as partes importantes e relevantes da minha opinião.

Para um desenvolvimento de qualidade é necessário seguir alguns padrões específicos e de código aberto criados pela Microsoft. Pelo contrário, o código pode virar uma bagunça, com 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 experiêntes sabiam organizar, os novos não. Agora cada pasta tem o seu código, tem o seu controle, seu modelo e conteúdo. (Figura 2)





Note que para criar um projeto do tipo MVC, o template já vem organizado com seus respectivos arquivos. (Code 1 – 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>


Code 1


Resultado do código (Figura 3)





Validação de dados. (Figura 4)





Melhoria Web.Config


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

Marcando estas configurações, o sistema já sabe qual arquivo de configuração pegar. Isso é muito importante. Veja o Code 2.

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, abriu 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 deste de configuração. 



    <connectionStrings>

      <add name="MyDB" 

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

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

    </connectionStrings>


Code 2 (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>


Code 3 (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>


Code 4


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. (Figura 6)






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 qualidade do software que será construído, com a ferramenta VS 2010 basta digitar o nome da tag e clicar duas vezes a tecla TAB para auto. (Figura 7)






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






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 VS 2008 já havia a parte de “tab tab e complete” de código C#, não na parte de layout. No código foi melhorada a funcionalidade. Resolvi falar isso pois geralmente os desenvolvedores não sabem que podem utilizar esta facilidade e qualidade de código.


       

        protected void Page_Load(object sender, EventArgs e)

        {

            if (true)

            {

                

            }

        }


Code 5

Teste Unificado

Com o Visual Studio .NET 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 menu’s específico para teste e emulação do aplicativo construído. (Figura 9)






Imagina emular o aplicativo construído colocando quantos usuários necessários, teste de caixa branca, caixa preta e outros mais. Na ferramenta 2008 já possui 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 da versão anterior ou 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. (Code 6)



        /// <summary>

        /// 

        /// </summary>

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

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

        protected void Page_Load(object sender, EventArgs e)

        {

            if (true)

            {

                

            }

        }


Code 6


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. (Figura 10)






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 12 (menu Windows), um gráfico UML Model Explorer pode ser criado, 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, a nova ferramenta vem com uma 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ócio, 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, pra isso eu gero um outro projeto e separo as classes. (Figura 13)






Note que tem um projeto chamado “Business” com as pastas BRL, DAO e DTO no início da figura 13. 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 porque? Devido a 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 .NET 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. (Figura 14)







Note que tem mais templates do tipo Windows, tem Cloud (criar o projeto utilizando as núvens), reporting, sharepoint, silverlight, projeto de teste, WCF, Workflow (fluxo de algum projeto), modelagens e outros que não saiu 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, surgiu novos componentes. 

Dentre alguns, vou destacar um específico e de fácil acesso. (Figura 15)






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






Veja que simples a linha de código. (Code 7)



        <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>


Code 7


Busca fácil


As buscas foram aprimoradas com a nova ferramenta Visual Studio .NET 2010. Basta selecionar um método ou variável que a busca é feita. As partes são destacadas!

Veja na figura 17.







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);

}

Code 8


Passando para a parte da página no page_load é necessário pegar o dado que está sendo executado na página real. (Code 9)


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);

}

Code 9


Tenho muito mais coisa para falar, o problema é que 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 pelo site da comunidade aspneti.com ou o meu pessoal mauriciojunior.org.