Edito: A ver ... los enums están pensados para evitar "números mágicos" en el código. La idea es evitar código como este:
Public Sub EjecutaAccion(ByVal opciones As Integer)
If opciones = 1 Then
'Haz algo
ElseIf opciones = 3 Then
'haz algo diferente
ElseIf opciones = 4 Then
'haz otra cosa
'...
End If
End Sub
Este código es difícil de comprender y mantener, especialmente sin documentación, ya que al cabo del tiempo se olvidan la descripción de los valores. En cambio el mismo código con enums:
Public Enum Opciones
Ninguna = 0
Visualizar = 1
Editar = 2
Borrar = 4
'...
End Enum
Public Sub EjecutaAccion(ByVal eOpciones As Opciones)
If eOpciones = Opciones.Visualizar Then
'Haz algo
ElseIf eOpciones = (Opciones.Visualizar Or Opciones.Editar) Then
'haz algo diferente
ElseIf eOpciones = Opciones.Borrar Then
'haz otra cosa
'...
End If
End Sub
Con los enums el programa casi se auto-documenta y se facilita mucho su comprensión y mantenimiento.
Pero sigo sin entender!, ese código esta mal da error en: Public Sub EjecutaAccion(ByVal eOpciones As Opciones)
Porfavor alguien podría poner un claro ejemplo?
Public Sub EjecutaAccion(ByVal opciones As Integer)
If opciones = 1 Then
'Haz algo
ElseIf opciones = 3 Then
'haz algo diferente
ElseIf opciones = 4 Then
'haz otra cosa
'...
End If
End Sub
Este código es difícil de comprender y mantener, especialmente sin documentación, ya que al cabo del tiempo se olvidan la descripción de los valores. En cambio el mismo código con enums:
Public Enum Opciones
Ninguna = 0
Visualizar = 1
Editar = 2
Borrar = 4
'...
End Enum
Public Sub EjecutaAccion(ByVal eOpciones As Opciones)
If eOpciones = Opciones.Visualizar Then
'Haz algo
ElseIf eOpciones = (Opciones.Visualizar Or Opciones.Editar) Then
'haz algo diferente
ElseIf eOpciones = Opciones.Borrar Then
'haz otra cosa
'...
End If
End Sub
Con los enums el programa casi se auto-documenta y se facilita mucho su comprensión y mantenimiento.
Pero sigo sin entender!, ese código esta mal da error en: Public Sub EjecutaAccion(ByVal eOpciones As Opciones)
Porfavor alguien podría poner un claro ejemplo?