SilverLight - Dicas sobre boas práticas no desenvolvimento de aplicações SilverLight (XAML)


Hoje vamos dar algumas dicas, coligidas de diversos textos na web, sobre como usar boas práticas no código XAML em aplicações SilverLight.

Sempre que você ler um texto sobre dicas de boas práticas sempre verifique a data da publicação pois as tecnologias evoluem e um procedimento pode ficar defasado ou ter sido desabilitado por já ter sido corrigido na nova versão. (Data desta publicação 18/06/2011)

As dicas a seguir referem-se ao desenvolvimento de aplicações SilverLight mais especificamente ao código XAML:

1- Não abuse da utilização de namespaces "xmlns" namespaces no arquivo XAML. Essa prática sobrecarrega o tempo de carregamento da página Silverlight (Se você estiver usando ReSharper, você pode fazer isso muito facilmente uma vez que irá mudar a cor dos itens desnecessários para cinza).

Nota: ReSharper é uma ferramenta é uma ferramenta de produtividade para o Visual Studio. Veja também MZ-Tools. As versões Express não suportam essas ferramentas.

2- Não adicione os mesmos namespaces várias vezes em uma única página XAML. Isso estraga o código XAML no momento da manutenção e também carrega o assembly várias vezes causando vários problemas de memória durante a execução.

3- Utilize nomes apropriados e significativos para os prefixos dos namespaces "xmlns" usados.

Exemplo: Entre: xmlns:ctrlcm  e   xmlns:ControleComum prefira o último. Isso evita declarações múltiplas do mesmo namespace no futuro;

4- Tente evitar a utilização de prefixos com o nome "local" nos namespaces "xmlns". Dê preferência para nomes como "localControles", "localConversores", etc. como nome do seu namespace. A utilização do nome "local" não lhe fornece um nome significativo para o namespace pois pode haver mais de um namespace local (Controles, Conversores, etc.) no mesmo assembly e a utilização do nome apropriado para distingui-los é melhor.

5- Ao adicionar um controle que não tem nenhum elemento no seu interior , é melhor fechar a tag do controle com o fecho automático "/> ao invés de usar a marca de fechamento usando a tag : < / TAG >; Isso torna o código XAML mais limpo. Compare:

<TextBox Name="txtNome" Background="Aqua" Margin="0,0,10,5" Width="100" Height="20"></TextBox>
<TextBox Name="txtNome" Background="Aqua" Margin="0,0,10,5" Width="100" Height="20" />

6- Remova todas as chaves de Resources (recursos) se elas não estiverem em uso. A utilização dessas chaves aumenta a utilização de memória e você pode encontrar problemas de animação devido a isso.;

7- Não utiliza painéis extras (Ex: Grid, StackPanel, Canvas, etc.) a menos que isso seja mesmo necessário. Abaixo o exemplo de uso de um Grid desnecessário:


    <Grid>
        <Grid x:Name="LayoutRoot" Background="White">
          <data:DataGrid x:Name="grProdutos" AutoGenerateColumns="True" Background="Yellow" />
          <TextBox Name="txtNome" Background="Aqua" Margin="0,0,10,5" Width="100" Height="20" />
          <TextBox Name="txtEndereco" Background="Aqua" Margin="0,0,10,5" Width="100" Height="20" />
      </Grid>
    </Grid>

8- Sempre procure usar o Grid como seu primeiro painel e se você precisar de outros painéis use-os em seguida. O Grid possui um leiaute flexível e dessa forma ao redimensionar a sua aplicação você conseguirá um bom efeito e desempenho.

Obs; Veja o meu artigo sobre o controle Grid : WPF - Usando o controle Grid - Macoratti.net

9- Nunca tente dar um nome a todos os seus controles dentro de sua página SilverLight visto que isso leva a criação de objetos desnecessários no momento da carga da página. Nomeie apenas aqueles elementos que você deseja usar em seu código (code-behind) ou no seu código XAML. Se você estiver usando o padrão MVVM você poderá remover os nomes dos seus controles em quase todos os casos;

Obs: Veja o meu artigo sobre o padrão MVVM: .NET - Apresentando o padrão Model-View-ViewModel - Macoratti.net

10 - Use a propriedade Visibility dos controles ao invés da propriedade Opacity para ocultar conteúdo. Definindo Opacity como zero faz o controle ser oculto, mas ocupa mais memória e mais espaço na interface do usuário; A propriedade Visibility recolhe o controle da interface do usuário, deixando espaços para outros controles no mesmo lugar.

11- Use a formatação adequada no seu código XAML. Isto dá uma melhor aparência no código e também facilita a manutenção no futuro. Exemplo:

-Atributos devem ser em uma linha separada,
-x:Name deve vir em primeiro lugar,
-os atributos relacionados (como HorizontalAlignment e VerticalAlignment) devem ser agrupados.
    <Grid x:Name="LayoutRoot" Background="White" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="0,10,10,0" Width="200" Height="100">
        <StackPanel x:Name="Macoratti" HorizontalAlignment="Center" VerticalAlignment="Center" Width="Auto" Height="Auto">
            <Button x:Name="MacButton" Content="Exemplo" Margin="0,0,8,0"></Button>
        </StackPanel>
    </Grid>
O código acima fica melhor formatado conforme pode ser visto abaixo:
    <Grid x:Name="LayoutRoot" 
          HorizontalAlignment="Left" 
          VerticalAlignment="Top" 
          Margin="0,10,10,0" 
          Width="200" 
          Height="100">
        
         <StackPanel x:Name="Macoratti" 
                     HorizontalAlignment="Center" 
                     VerticalAlignment="Center" 
                     Width="Auto" 
                     Height="Auto"
                     Orientation="Horizontal">
            <Button x:Name="MacButton" 
                            Content="Exemplo" 
                            Margin="0,0,8,0" />
        </StackPanel>

12- Use comentários em seu código XAML sempre que for necessário. Isso é útil quando você revisita o código depois de um longo tempo ou quando alguma outra pessoa vem trabalhar com o arquivo XAML.

13- Tente usar StaticResource ao invés de DynamicResource, isso aumenta o desempenho e também lança exceções em tempo de desenvolvimento o que permite identificar mais facilmente a causa do problema.

14- Remova estilos (styles) e animações storyboard se elas não forem realmente necessárias;

15- Tente incluir seus estilos em um arquivo separado se você desejar compartilhá-los através de sua aplicação. Se eles forem específicos a um única página inclua-os na página de recursos.

16- Não utilize as propriedades Width e Height dos objetos MediaElement e Path;

17- Utilize a cor de fundo(background) transparente com moderação;

18- Ao invés de usar pré ou pós fixação nos nomes de seus elementos prefira usar nomes descritivos e significativos:

Ex: Prefira PainelNavegacao ao invés de pnlNav.    BotaoSubmeter a btnSbmt.   e   gridConteudo a grdCnt

E, com essas dicas espero que você consiga desenvolver e aproveitar ao máximo os recursos do SilverLight.

 "Passará o céu e a terra, mas as minhas palavras jamais passarão." (Mateus 24:35)

Referências:


José Carlos Macoratti