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