Pergunta

A questão é destinada a programadores preguiçosos do VB. Por favor.

No VB, posso fazer e não vou conseguir erros.

Exemplo 1

Dim x As String = 5
Dim y As Integer = "5"
Dim b As Boolean = "True"

Exemplo 2

Dim a As EnumType = 4
Dim v As Integer = EnumType.EnumValue

Exemplo 3

Private Sub ButtonClick(sender As Object, e As EventArgs)
    Dim btn As Button = sender        
End Sub

Exemplo 4

Private Sub ButtonClick(sender As Button, e As EventArgs)
    Dim data As Contact = sender.Tag
End Sub

Se eu certamente conheço o tipo de tempo de execução esperado, isso é 'proibido' de confiar no elenco integrado da língua VB? Quando posso confiar?

Foi útil?

Solução

Comente para Markj mover para responder por op

Sinta -se à vontade para confiar nisso o quanto quiser, apenas certifique -se de saber as regras do que o elenco implícito está fazendo. Dito isto, o exemplo nº 4 parece realmente fácil de quebrar no futuro, eu ficaria muito mais feliz se houvesse pelo menos uma verificação nula antes.

Outras dicas

Certamente não é "proibido" usar Option Strict Off Mas quase todo mundo aconselha fortemente usando Option Strict On.

As razões são explicadas em outras perguntas, por exemplo isto.

Se você estiver usando o Visual Basic 2008, outra opção é fazer a explicação de fundição (por exemplo, opção rigorosa) e confiar na opção implícita para que você não precise escrever o tipo duas vezes.

Dim x = 5.ToString()  
Dim data = DirectCast(sender.Tag, Contact)

A ironia de práticas "preguiçosas" como essa é que elas geralmente acabam custando mais tempo a longo prazo. Você pode realmente ter certeza de que seus insumos sempre estarão em um formato que pode ser automaticamente lançado para o tipo pretendido, em todas as circunstâncias e em todos os locais?

Pensando em todas as implicações possíveis e lidar com os bugs quase inevitáveis, provavelmente levará mais tempo do que apenas digitando fortemente suas variáveis, validando estritamente suas entradas e lançando explicitamente quando necessário.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top