Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: Senior++ en 8 Enero 2012, 20:15 pm



Título: Option Strict ¿Aconsejable? (solucionado)
Publicado por: Senior++ en 8 Enero 2012, 20:15 pm
Bueno mi problema es que si me aconsejáis usar Option Strict

Si tu respuesta es un no dime el por que y si es un si dime el por que... osea que ventajas tiene de usarlo... de hecho lo e puesto en ON y tengo que añadir mas código..

Saludos


Título: Re: Option Strict ¿Aconsejable?
Publicado por: seba123neo en 8 Enero 2012, 20:52 pm
Citar
Sobre la necesidad u obligatoriedad de declarar las variables:

He de aclarar que el Visual Basic no "obliga" a que se declaren todas las variables que vayamos a usar.
Existe una instrucción, (Option Explicit), que gracias a las fuerzas de la Naturaleza, (por no decir gracias a Dios, que hay mucho ateo por ahí suelto), ahora viene puesta por defecto; la cual si que obliga a que declaremos las variables, pero si quitamos esa instrucción, entonces podemos hacer perrerías y declarar las variables si nos da la gana, etc...
¡Que bien! estarás diciendo... ¡la libertad total!
¡Pues no! tanto anarquismo no es bueno... porque después te acostumbras y ¿que pasa? palos vienen, palos van... y no me refiero a palos físicos... sino a los palos que te dará el programa por no haber sido un poco más "conservador"... (espero que tantos símiles políticos no te alteren...)

La cuestión es que siempre debes declarar las variables, e incluso te diría más: siempre debes declarar las variables del tipo que quieres que dicha variable contenga, lo resalto porque esto te evitará quebraderos de cabeza... ¡créeme!
Ya que, puedes declarar variables sin tipo específico:
Dim unaVariable
que en realidad es como si la hubieses declarado del tipo Object, (As Object), por tanto aceptará cualquier tipo de datos, pero esto, acuérdate de lo que te digo, no es una buena práctica.

Si quieres llevarte bien conmigo, declara siempre las variables.

De todas formas, voy a decirte cómo hacer que no tengas que declarar las variables, por si eres masoquista y te gusta sufrir... de camino, también te voy a decir dónde está la otra opción que te pido encarecidamente que siempre uses, me refiero a la opción Option Strict, ésta opción, si se activa, se indica con Option Strict On, obligará a que los tipos de datos que uses sean del tipo adecuado, de esta forma, aunque es un verdadero "peñazo", (por no decir coñazo, ya que a algunos les puede parecer improcedente), hará que las cosas las hagas o las programes cómo debes... seguramente acabarás dejando esa opción en el valor que el vb.NET trae por defecto... valor que no creo que cambien en la versión definitiva del Visual Studio .NET, cosa que me agradaría un montón... (en este caso no se si el masoca soy yo, ya que usando Option Strict On es más complicado hacer las conversiones entre tipos diferentes de datos, pero...)
Por ejemplo, con el Option Strict On no podemos hacer esto:
Dim unChar As Char = "N", ya que "N" es una constante del tipo String.
El compilador de Visual Basic nos diría algo así:
Option Strict no permite la conversión entre Char y String

Ahora veremos algunos ejemplos.
Primero vamos a ver dónde se puede cambiar esas opciones, así como alguna otra más, que en su momento también veremos.

Para acceder a las propiedades del proyecto, debes seleccionar el proyecto en la ventana del explorador de proyectos, una vez seleccionado, puedes usar el botón derecho del ratón y del menú que te muestra, seleccionar Propiedades... o bien, en el menú Proyecto, seleccionar Propiedades... (recuerda que si no está seleccionado el proyecto en el explorador de proyectos, ese menú no mostrará la opción de Propiedades).
Te mostrará una ventana de configuración, con varias opciones, selecciona Build del panel izquierdo y en el derecho te mostrará lo mismo que en la figura 1:


Figura 1

Estos son los valores que yo te recomiendo. También te los recomiendan otros muchos programadores, a los cuales parece ser que Microsoft no tiene tan en cuenta como dice... en fin...

Lo del Option Compare dependerá, de si quieres que las cadenas se comparen diferenciando las mayúsculas de las minúsculas o no.
Con el valor Binary se diferencian las mayúsculas de las minúsculas y con el otro valor: Text, no se hace ningún tipo de distinción, cosa que en algunas ocasiones puede resultar útil, pero que mediante código se puede solventar.

Por tanto, te pido, te ruego, te suplico, (hasta me pongo de rodillas si es necesario, para que me hagas caso), que siempre tengas asignado el valor ON tanto en Option Explicit como en Option Strict.
Gracias.

Después de las recomendaciones y súplicas, a las que espero que hagas caso, sigamos con esto de las declaraciones de las variables, e incluso de las constantes, ya que también podemos declarar constantes.

Las variables se pueden declarar de dos formas, aunque básicamente es lo mismo:
1.- Declarando la variable y dejando que VB asigne el valor por defecto.
2.- Declarando la variable y asignándole el valor inicial que queramos que tenga.

Por defecto, cuando no se asigna un valor a una variable, éstas contendrán los siguientes valores, dependiendo del tipo de datos que sea:
- Las variables numéricas tendrán un valor CERO.
- Las cadenas de caracteres una cadena vacía: ""
- Las variables Boolean un valor False (recuerda que False y CERO es lo mismo)
- Las variable de tipo Objeto tendrán un valor Nothing, es decir nada, un valor nulo.

Por ejemplo:
Dim i As Integer
Tendrá un valor inicial de 0

Pero si queremos que inicialmente valga 15, podemos hacerlo de cualquiera de estas dos formas:

1.)
Dim i As Integer
i = 15

2.)
Dim i As Integer = 15

Esta segunda forma es exclusiva de la versión .NET de Visual Basic, (también de otros lenguajes, pero es algo nuevo para los que tratamos con VB).
Mientras que la forma mostrada en el punto 1.) es la forma clásica, (la única que se puede usar en las versiones anteriores de VB)

Las constantes se declaran de la misma forma que la indicada en el punto 2.), ya que no se podrían declarar como lo mostrado en el punto 1.), por la sencilla razón de que a una constante no se le puede volver a asignar ningún otro valor, ya que si no, no serían constantes, sino variables.
Por ejemplo:
Const n As Integer = 15

Fuente: Curso de iniciación a la programación
con Visual Basic .NET (http://www.elguille.info/NET/cursoVB.NET/tutorVBNET04.htm)


Título: Re: Option Strict ¿Aconsejable?
Publicado por: Senior++ en 9 Enero 2012, 15:22 pm
Gracias seba, tema solucionado :)