.net vb.net option-strict option-explicit

.net - ¿Qué hacen Option Strict y Option Explicit?



vb.net option-strict (3)

Vi esta publicación:

Errores ortográficos ... Solo use la opción estricta y explícita por favor ... durante un proyecto de desarrollo de software, en el que estaba trabajando como consultor, estaban obteniendo cantidades ridículas de errores en todas partes ... resultaba que el desarrollador no podía deletrear y declaraba variables con ortografía incorrecta. No es gran cosa, hasta que uses la ortografía correcta cuando le asignes un valor ... y tuviste la opción explicita desactivada. Ay de ellos ... "

¿Qué es Option Strict y Option Explicit todos modos? Lo busqué en Google pero no entiendo la idea (porque sobre todo es Visual Basic, estoy haciendo PHP).


TL; DR

Option Strict y Option Explicit ayudan a detectar errores potenciales y reales en tiempo de diseño , en lugar de que su código compile y falle en el tiempo de ejecución . Debes encender Both On

Option Strict y Option Explicit están desactivados por defecto. Para encenderlos:

Opción Tools -> Options -> Projects and Solutions -> VB defaults -> Option Strict estrictas Tools -> Options -> Projects and Solutions -> VB defaults -> Option Strict . Configúralo en On .

Opción Tools -> Options -> Editor -> Require Variable Declaration explícitas Tools -> Options -> Editor -> Require Variable Declaration . marquelo.

Opción explícita

Con Option Explicit Off no tiene que declarar (Dim) una variable antes de usarla:

a = 123 ''a is automatically declared as an Integer

Esto se vuelve peligroso cuando declaras una variable en un lugar y piensas que la estás usando más tarde pero la escribes mal:

Dim counter As Integer = 0 ''some lines later... countr = 55 ''This creates a new variable called countr

O, lo que es peor, asigna un valor a una variable que cree que está dentro del alcance, pero no lo es y termina declarando una nueva variable con el mismo nombre pero diferente alcance.

Con un montón de código o métodos largos que pueden pasar fácilmente por alto, siempre debe activarlo para evitar este tipo de problemas.

Opción estricta

Con Option Strict Off puede convertir implícitamente un tipo de datos a un tipo de estrechamiento sin error

Dim d As Double = 999.99 Dim s As Single = d ''No error with Option Strict Off

Para estos casos Option Strict sirve como una advertencia para el desarrollador para asegurarse de que el valor doble nunca debe exceder Single.MaxValue

También puede asignar un Enum al valor incorrecto sin error. El siguiente es un ejemplo real de esto:

La variable debería haberse establecido en EOpticalCalStates.FAILED (24), de hecho, establece el estado en un valor de 4 que es equivalente a EOpticalCalStates.ALI_HOR

Algo como esto no es fácil de detectar.

Por lo tanto, siempre debe tener Option Strict activado por defecto. Esta configuración debería haberse configurado de manera predeterminada, pero Microsoft decidió dejarla para aumentar la compatibilidad con versiones anteriores (lo que en retrospectiva fue un error de la OMI)


Encuentre detalles aquí: http://support.microsoft.com/kb/311329

La declaración de opción explícita

De forma predeterminada, el compilador de Visual Basic .NET o Visual Basic aplica la declaración de variable explícita, que requiere que declare cada variable antes de usarla. Para cambiar este comportamiento predeterminado, consulte la sección Cambiar los valores predeterminados del proyecto.

La declaración de la Opción Estricta

De forma predeterminada, el compilador de Visual Basic .NET o Visual Basic no impone la escritura de datos estrictos. Para cambiar este comportamiento predeterminado, consulte la sección Cambiar los valores predeterminados del proyecto.


Option Explicit significa que todas las variables deben declararse. Mira here . Sin esto, puede declarar accidentalmente una nueva variable simplemente escribiendo mal otro nombre de variable. Esta es una de las cosas que causa mucha pena cuando intenta depurar programas VB y descubrir por qué su programa no funciona correctamente. En mi opinión, esto ni siquiera debería ser una opción, siempre debe estar activado.

Option Strict "restringe las conversiones de tipos de datos implícitos a solo las conversiones de ampliación". Mira here . Con esta opción habilitada, no puede convertir accidentalmente un tipo de datos a otro que sea menos preciso (por ejemplo, de un Integer a un Byte ). De nuevo, una opción que debe activarse de forma predeterminada.