Desenvolvimento

23 nov, 2012

Por que utilizar Option Explicit

Publicidade

Dentre as linguagens que podemos utilizar no Visual Studio está o VB.net, porém, ele tem suas particularidades.

Quando se programa em VB.net, ele não exige algumas coisas como no C#, ele o faz “automaticamente”, o que para algumas pessoas é visto com bons olhos; já outras, não.

Entretanto, isso tem seu custo, e alguns implicam até mesmo em performance.

Entre os motivos pelos quais recomendo ativar o Option Explicit estão:

Desempenho

O programa roda mais rápido, pois a inferência é feita em tempo de compilação, e não de execução.

Por exemplo, se você criar uma variável do tipo inteiro, se não for declarado seu tipo, o compilador assume que ela é do tipo Object, e toda vez que a mesma receber valores, o compilador vai fazer a verificação e a conversão.

Para verificar a diferença de performance, temos o seguinte trecho de código com dois métodos:  FazerTesteTipoDefinido() e FazerTesteTipoNAODefinido(), que fazem exatamente a mesma coisa.

Private Sub FazerTesteTipoDefinido()

Dim tempoExecucao As New Stopwatch
Dim i As Integer

Dim strVariavelComTipoDeclarado As String
Dim datVariavelComTipoDeclarado As Date

tempoExecucao.Start()
For i = 1 To 200000

strVariavelComTipoDeclarado = "Testando o desempenho" & Chr(i Mod 64)
datVariavelComTipoDeclarado = #6/9/1983#
datVariavelComTipoDeclarado.AddSeconds(1)

Next
tempoExecucao.Stop()

Me.lblTempo.Text = "Tempo: " & tempoExecucao.Elapsed.TotalMilliseconds.ToString

End Sub

Private Sub FazerTesteTipoNAODefinido()

Dim tempoExecucao As New Stopwatch
Dim i

Dim strVariavelComTipoNAODeclarado
Dim datVariavelComTipoNAODeclarado

tempoExecucao.Start()
For i = 1 To 100000

strVariavelComTipoNAODeclarado = "Testando o desempenho" & Chr(i Mod 64)
datVariavelComTipoNAODeclarado = #6/9/1983#
datVariavelComTipoNAODeclarado.AddSeconds(1)

Next
tempoExecucao.Stop()

Me.lblTempo.Text = "Tempo: " & tempoExecucao.Elapsed.TotalMilliseconds.ToString

End Sub

Após executados os testes, obtive a seguinte tabela de dados:

Método FazerTesteTipoDefinido() FazerTesteTipoNAODefinido()
1ª Execução

18,98

954,90

2ª Execução

19,43

959,19

3ª Execução

18,29

967,21

4ª Execução

18,49

959,32

5ª Execução

18,32

954,21

6ª Execução

19,73

595,32

Total

113,2144

5390,15

Como podemos ver na tabela, o método FazerTesteTipoDefinido() fica em torno de 47% mais rápido em relação ao FazerTesteTipoNAODefinido().

Organização

Seu código se torna mais organizado, pois você tem que declarar todas as suas variáveis e definir seu tipo, e o próprio Visual Studio lhe da alertas sobre possíveis problemas através dos Warnings.

O debug se torna mais simples, pois se pode digitar o nome de uma variável errada e assim criar uma nova, em vez de definir seu valor ou até mesmo sobrescrever o valor de uma já existente quando se queria criar uma nova.

O Intellisense e Ajuda Dinâmica funcionam quando a variável é declarada anteriormente.

Exemplo de uma variável do tipo Data declarada.

Exemplo de uma variável do tipo não Data declarada.

Bugs

Evita possíveis erros de digitação e conversão. Como é necessário criar e definir seu tipo, torna-se mais fácil encontrar erros que poderiam causar erros em tempo de execução.

Conclusão

Com isso, podemos perceber ganhos significativos em performance, tempo de desenvolvimento e organização do código apenas habilitando o Option Explicit, que nos força a tomar algumas atitudes enquanto estamos codificando.

Vale lembrar que essa opção também é possível dentro do ASP clássico.

Dúvidas, sugestões e críticas são bem-vindas.

Obrigado a todos e bons códigos.