¿Qué hacen Option Strict y Option Explicit?

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).

Option Explicit significa que todas las variables deben declararse. Mira aquí . 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 progtwigs VB y descubrir por qué su progtwig 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 aquí . 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.

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 scope, pero no lo es y termina declarando una nueva variable con el mismo nombre pero diferente scope.

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:

enter image description here

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 boost 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 statement de opción explícita

De forma predeterminada, el comstackdor de Visual Basic .NET o Visual Basic aplica la statement 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 statement de la Opción Estricta

De forma predeterminada, el comstackdor 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.