1. "&" reemplaza "+"
2. Los nombres de las variables deben distinguir entre mayúsculas y minúsculas, las declaraciones deben estar bien organizadas y se debe realizar el mantenimiento del código fuente.
3. Desarrolle los siguientes buenos hábitos de "convención de nomenclatura de objetos"
4. En el caso de condiciones de selección simples, utilice la función IIf()
5. Intente utilizar Debug.Print para depurar
6. Cuando modifique repetidamente las propiedades de un objeto, intente usar Con....Finalizar con
7. Intente utilizar iconos de mensajes en MsgBox para que el programa esté más estandarizado. 8. Utilice enumeraciones cuando sea posible.
1. "&" reemplaza "+"
En los lenguajes de programación de muchas personas, "+" se utiliza para conectar cadenas, lo que fácilmente puede generar ambigüedad. Una buena práctica es utilizar "&" para concatenar cadenas.
Incorrecto:
Dim sMessage como cadena
sMensaje = "1" + "2"
correcto:
Dim sMessage como cadena
sMensaje = "1" y "2"
Nota: hay un espacio después de "&"
2. Los nombres de las variables deben distinguir entre mayúsculas y minúsculas, las declaraciones deben estar bien organizadas y se debe realizar el mantenimiento del código fuente.
Comparemos los siguientes dos fragmentos de código:
Leer código difícil:
Atenuar SNAME como cadena
Atenuar NTURN como número entero
Si NTURN = 0 Entonces
Si SNAME = "vbeden" Entonces
Hacer mientras NTURN < 4
NTURNO = NTURNO + 1
Bucle
Terminar si
Terminar si
Código fácil de leer:
Dim sName como cadena
Atenuar nTurn como entero
Si nTurno = 0 Entonces
Si sName = "vbeden" Entonces
Hacer mientras nTurn < 4
nGiro = nGiro + 1
Bucle
Terminar si
Terminar si
[volver al índice]
3. Desarrolle los siguientes buenos hábitos de "convención de nomenclatura de objetos"
Prefijos de control recomendados
Ejemplo de prefijo de tipo de control
Panel 3D pnl pnlGrupo
ADO Datos ado adoBiblio
Botón animado ani aniMailBox
Casilla de verificación chk chkReadOnly
Cuadro combinado, cuadro de lista desplegable cbo cboEnglish
Botón de comando cmd cmdSalir
Diálogo común dlg dlgFileOpen
Comunicaciones con comFax
Control (utilizado en procedimientos cuando se desconoce el tipo específico) ctr ctrCurrent
Datos dat datBiblio
Cuadro combinado vinculado a datos dbcbo dbcboLanguage
Cuadrícula enlazada a datos dbgrd dbgrdQueryResult
Cuadro de lista enlazado a datos dblst dblstJobType
Combinación de datos dbc dbcAuthor
Cuadrícula de datos dgd dgdTitles
Lista de datos dbl dblPublisher
Repetidor de datos drp drpLocation
Selector de fecha dtp dtpPublicado
Cuadro de lista de directorio dir dirSource
Cuadro de lista de unidades drv drvTarget
Cuadro de lista de archivos fil filSource
Barra de desplazamiento plana fsb fsbMove
Formulario desde entrada desde entrada
Marco fra fraIdioma
Calibre gau gauEstado
GraphgragraIngresos
Grid grd grdPrecios
Flexgrid jerárquico flex flexOrders
Barra de desplazamiento horizontal hsb hsbVolumen
Imagen img imgIcono
Imagen combinada imgcbo imgcboProducto
ImageList o AllIcons
Etiqueta lbl lblMensaje de ayuda
Casilla de verificación ligera lwchk lwchkArchive
Caja combinada ligera lwcbo lwcboAlemán
Botón de comando ligero lwcmd lwcmdRemove
Marco ligero lwfra lwfraSaveOptions
Barra de desplazamiento horizontal ligera lwhsb lwhsbVolume
Cuadro de lista ligero lwlst lwlstCostCenters
Botón de opción ligero lwopt lwoptIncomeLevel
Cuadro de texto ligero lwtxt lwoptStreet
Barra de desplazamiento vertical ligera lwvsb lwvsbYear
Línea lin linVertical
Cuadro de lista lst lstPolicyCodes
ListView lvw lvwEncabezados
Mensaje MAPI mpm mpmSentMessage
Sesión MAPI mps mpsSession
MCI mci mciVideo
Menú mnu mnuArchivoAbrir
Vista mensual mvw mvwPeriod
Gráfico MS ch chVentasporRegión
MS Flex grid msg msgClients
Pestaña MS mst mstFirst
Contenedor OLE ole oleWorksheet
Botón de opción optar por género
Cuadro de imagen pic picVGA
Clip de imagen clp clpBarra de herramientas
Barra de progreso prg prgLoadFile
Datos remotos rd rdTítulos
RichTextBox rtf rtfReport
Forma shp shpCírculo
Control deslizante sld sldScale
Girar spn spnPáginas
Barra de estado sta staDateTime
SysInfo sistema sysMonitor
Opciones de pestaña de pestaña TabStrip
Cuadro de texto txt txtApellido
Temporizador tmr tmrAlarm
Barra de herramientas tlb tlbAcciones
TreeView tre treOrganización
ArribaAbajo upd updDirección
Barra de desplazamiento vertical vsb vsbRate
-------------------------------------------------- ----------------------------------
Prefijos recomendados para objetos de acceso a datos (DAO)
Utilice los siguientes prefijos para indicar objetos de acceso a datos
Ejemplo de prefijo de objeto de base de datos
Informes de conconcontenedores
Base de datos db dbCuentas
DBEngine dbe dbeJet
Documento doc docInformeVentas
Campo fld fldDirección
Grupo grp grpFinanzas
Índice ix idxEdad
Parámetro prm prmJobCode
QueryDef qry qryVentasPorRegión
Recordset rec recForecast
Relación rel relEmployeeDept
TableDef por determinar por determinar Clientes
Usuario usr usrNuevo
Espacio de trabajo wsp wspMine
-------------------------------------------------- ----------------------------------
Las aplicaciones utilizan con frecuencia muchos controles de menú y es útil tener un conjunto único de convenciones de nomenclatura para estos controles. Además de la etiqueta "mnu" inicial, se debe ampliar el prefijo del control del menú: se agrega un prefijo adicional para cada nivel de anidamiento, colocando el título del menú final al final de la cadena de nombre. La siguiente tabla enumera algunos ejemplos.
Prefijos de menú recomendados
Título del menú Secuencia Nombre del controlador del menú
Archivo Abrir mnuArchivoAbrir
Archivo Enviar correo electrónico mnuFileSendEmail
Archivo Enviar Fax mnuFileSendFax
Formato de carácter mnuFormatCharacter
Contenido de ayuda mnuHelpContents
Cuando utiliza esta convención de nomenclatura, todos los miembros de un grupo de menú específico aparecen uno tras otro en la ventana Propiedades de Visual Basic. Además, los nombres de los controles de menú indican claramente los elementos del menú a los que pertenecen.
Elija un prefijo para otros controles
Los controles que no figuran en la lista anterior deben estandarizarse con un prefijo único de dos o tres caracteres para mantener la coherencia. Utilice prefijos de más de tres caracteres sólo cuando se requiera una aclaración.
Convenciones de nomenclatura de constantes y variables
Además de los objetos, las constantes y variables también requieren convenciones de nomenclatura bien formadas. Esta sección enumera las convenciones recomendadas para constantes y variables que admite Visual Basic. y analiza cuestiones relacionadas con la identificación de tipos y rangos de datos.
Las variables siempre deben definirse en el ámbito más pequeño posible. Las variables globales (públicas) pueden conducir a estructuras de estado extremadamente complejas y hacer que la lógica de una aplicación sea muy difícil de entender. Las variables globales también dificultan la reutilización y el mantenimiento del código.
Las variables en Visual Basic pueden tener los siguientes alcances
posición de declaración de alcance posición visible
'Privado' en un procedimiento a nivel de procedimiento, subprocedimiento o procedimiento de función en el procedimiento en el que se declara
'Privado' en la sección de declaración de un formulario a nivel de módulo o módulo de código (.frm, .bas) Cada procedimiento en un formulario o módulo de código
'Público' en la sección de declaraciones del módulo de código global (.bas) en toda la aplicación
En una aplicación de Visual Basic, utilice variables globales sólo cuando no exista otra forma conveniente de compartir datos entre formularios. Cuando se deban utilizar variables globales, declararlas en un solo módulo y agruparlas por función. Asigne a este módulo un nombre significativo para indicar su función, como Public.bas.
Una buena práctica de codificación es escribir código que sea lo más modular posible. Por ejemplo, si su aplicación muestra un cuadro de diálogo, coloque todos los controles y el código necesarios para completar el cuadro de diálogo en un solo formulario. Esto ayuda a organizar el código de la aplicación en componentes útiles y reduce su sobrecarga de tiempo de ejecución.
Con la excepción de las variables globales (que no deben transmitirse), los procedimientos y funciones sólo deben operar en los objetos que se les pasan. Las variables globales utilizadas dentro de un procedimiento deben identificarse en la sección de declaración al comienzo del procedimiento. Además, ByVal debe usarse para pasar parámetros a procedimientos Sub y procedimientos de función, a menos que exista una necesidad obvia de cambiar el valor del parámetro pasado.
A medida que crece el tamaño del proyecto, el trabajo de determinar el alcance de las variables aumenta rápidamente. Colocar un prefijo de rango de una sola letra delante del prefijo de tipo marca este crecimiento, pero la longitud del nombre de la variable no aumenta mucho.
prefijo de alcance variable
Ejemplo de prefijo de rango
global gstrNombre de usuario
Nivel de módulo mmlnCalcInProgress
Local para procesar sin dblVelocity
Si una variable se declara como Pública en un módulo estándar o en un módulo de formulario, entonces la variable tiene alcance global. Si una variable se declara Privada en un módulo estándar o en un módulo de formulario respectivamente, entonces la variable tiene alcance a nivel de módulo.
Nota: La coherencia es clave para utilizar esta técnica de forma eficaz; el comprobador de sintaxis de Visual Basic no detectará variables a nivel de módulo que comiencen con "p".
constante
El cuerpo de un nombre constante está compuesto por mayúsculas y minúsculas, con la primera letra de cada palabra en mayúscula. Aunque las constantes estándar de Visual Basic no contienen información sobre el tipo de datos ni el rango, los prefijos como i, s, g y m son útiles para comprender el valor y el rango de una constante. Para los nombres de constantes, se deben seguir las mismas reglas que para las variables. Por ejemplo:
mintUserListMax 'Límite máximo en la lista de usuarios
'(valor entero, local al módulo)
gstrNewLine 'Carácter de nueva línea
'(Cadena, utilizada globalmente por la aplicación)
variable
Declarar todas las variables ahorrará tiempo de programación porque habrá menos errores causados por las operaciones de escritura (por ejemplo, es aUserNameTmp, sUserNameTmp o sUserNameTemp). En la pestaña Editor del cuadro de diálogo Opciones, marque la opción Requerir declaración de variable. La declaración Option Explicit requiere que todas las variables se declaren en el programa Visual Basic.
Las variables deben tener un prefijo para indicar su tipo de datos. Y el prefijo se puede ampliar para indicar un alcance variable, especialmente para programas grandes.
Utilice los siguientes prefijos para indicar el tipo de datos de una variable.
Tipo de datos variables
Ejemplo de prefijo de tipo de datos
Cadena (tipo de cadena) str strFName
Entero (tipo entero corto) int intQuantity
Long (tipo entero largo) lng lngDistance
Single (tipo de número de punto flotante de precisión simple) sng sngAverage
Doble (tipo coma flotante de doble precisión) dbl dblTolerance
Booleano (tipo booleano) bln blnEncontrado
Byte (tipo de byte) byt bytRasterData
Fecha (tipo de fecha) dte dteNow
Moneda (cálculo de moneda y tipo de cálculo de punto fijo) cur curRevenue
Objeto (tipo de objeto) obj objCurrent
Variante vnt vntCheckSum
Describir nombres de variables y procedimientos.
El cuerpo de una variable o nombre de procedimiento debe estar en mayúsculas y minúsculas y debe ser lo suficientemente largo para describir su propósito. Además, el nombre de la función debe comenzar con un verbo, como InitNameArray o CloseDialog.
Para términos largos o de uso frecuente, se recomienda utilizar abreviaturas estándar para racionalizar la longitud del nombre. En términos generales, los nombres de variables de más de 32 caracteres son difíciles de leer en un monitor VGA.
Cuando utilice abreviaturas, asegúrese de que sean coherentes en toda la solicitud. En un proyecto, si usa Cnt por un tiempo y Count por un tiempo, generará confusión innecesaria.
tipo definido por el usuario
En un proyecto grande con muchos tipos definidos por el usuario, a menudo es necesario darle a cada tipo su propio prefijo de tres caracteres. Si estos prefijos comienzan con "u", es fácil identificar rápidamente estos tipos cuando se trabaja con un tipo definido por el usuario. Por ejemplo, ucli se puede utilizar como prefijo para una variable de tipo de cliente definida por el usuario.
[volver al índice]
4. En el caso de condiciones de selección simples, utilice la función IIf()
El código de Rosso:
Si nNúm = 0 Entonces
sNombre = "sancy"
Demás
sNombre = "Xu"
Terminar si
Código sencillo:
sNombre=IIf(nNum=0,"sancy","Xu")
5. Intente utilizar Debug.Print para depurar
En la depuración de muchos principiantes, MsgBox se usa para rastrear valores de variables. De hecho, Debug.Print no solo puede lograr el mismo efecto, sino que también será ignorado durante la compilación final del programa y deberá comentarse o eliminarse manualmente.
generalmente:
MsgBox nNombre
debería:
Depurar.Imprimir nNombre
6. Cuando modifique repetidamente las propiedades de un objeto, intente usar Con....Finalizar con
generalmente:
Formulario1.Altura = 5000
Formulario1.Ancho = 6000
Form1.Caption = "Esta es MiEtiqueta"
debería:
Con Form1
.Altura = 5000
.Ancho = 6000
.Caption = "Esta es MiEtiqueta"
Terminar con
La eficiencia de ejecución del programa de esta estructura es relativamente alta, especialmente en declaraciones de bucle.
7. Intente utilizar íconos de mensajes en MsgBox para que el programa esté más estandarizado.
En términos generales
vbInformation es un mensaje que se utiliza para solicitar confirmación o operación exitosa.
vbExclamation se utiliza para generar mensajes de advertencia
vbMensajes críticos utilizados para provocar situaciones de crisis.
vbQuestion es un mensaje utilizado para generar preguntas.
[volver al índice]
8. Utilice enumeraciones siempre que sea posible
El formato de la enumeración es
[Público | Privado] Nombre de enumeración
nombre de miembro [= expresión constante]
nombre de miembro [= expresión constante]
....
Enumeración final
La declaración Enum contiene las siguientes partes:
descripción parcial
Público Opcional. Indica que el tipo Enum es visible en todo el proyecto. El valor predeterminado para los tipos de enumeración es Público.
Privado Opcional. Indica que el tipo Enum solo es visible en el módulo declarado.
nombre requerido. El nombre de este tipo de enumeración. El nombre debe ser un identificador legal de Visual Basic que se utiliza para especificar el tipo al definir una variable o parámetro de este tipo Enum.
nombre de miembro requerido. Un identificador legal de Visual Basic que especifica el nombre de los elementos constituyentes de este tipo Enum.
expresión constante opcional. El valor del elemento (de tipo Long). Pueden ser otros tipos de Enum. Si no se especifica constantexpression, el valor asignado es 0 (si el elemento es el primer nombre de miembro) o uno mayor que el valor de su predecesor inmediato.
ilustrar
Las llamadas variables de enumeración se refieren a variables definidas con el tipo Enum. Tanto las variables como los parámetros se pueden definir como tipo Enum. Los elementos del tipo Enum se inicializan con el valor constante especificado en la declaración Enum. El valor asignado puede incluir números positivos y negativos y no se puede cambiar en tiempo de ejecución. Por ejemplo:
Enum SecurityLevel IllegalEntry = -1 SecurityLevel1 = 0 SecurityLevel2 = 1 End Enum
Las declaraciones de enumeración solo pueden aparecer a nivel de módulo. Después de definir el tipo Enum, puede usarlo para definir variables, parámetros o procedimientos que devuelven ese tipo. Los tipos de enumeración no se pueden calificar con nombres de módulos. Los tipos de Public Enum en un módulo de clase no son miembros de la clase; simplemente se escriben en la biblioteca de tipos. Los tipos de enumeración definidos en módulos estándar no se escriben en la biblioteca de tipos. Los tipos de enumeración pública con el mismo nombre no se pueden definir tanto en un módulo estándar como en un módulo de clase porque comparten el mismo espacio de nombres. Si hay dos tipos Enum en bibliotecas de tipos diferentes con el mismo nombre pero miembros diferentes, la referencia a una variable de este tipo dependerá de qué biblioteca de tipos tenga una mayor prioridad de referencia.
No puede utilizar el tipo Enum como objetivo en un bloque With.
Ejemplo de declaración de enumeración
El siguiente ejemplo demuestra el uso de la declaración Enum para definir una colección de constantes con nombre. En este caso, se utilizan algunas constantes de color seleccionables para diseñar el formulario de entrada de datos para la base de datos.
Colores de la interfaz de enumeración pública
icMistyRose = &HE1E4FF&
icPizarraGris = &H908070&
icDodgerBlue = &HFF901E&
icDeepSkyBlue = &HFFFF00&
icPrimaveraVerde = &H7FFF00&
icForestGreen = &H228B22&
icVara de oro = &H20A5DA&
icLadrillo refractario = &H2222B2&
Enumeración final
La ventaja es que acelera la programación.