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.