"¿Cómo dejar que ole controle el bucle hasta la mitad?
3. Desarrolle los siguientes buenos hábitos de "convenciones de nomenclatura de objetos" 4. Cuando hay una elección simple. Si existen condiciones, use la función IIf()
5. Intente usar Debug.Print para depurar 6. Cuando modifique repetidamente las propiedades de un objeto, intente usar With. ...Termina con
p>7. Intente usar íconos de mensajes en MsgBox para que el programa esté más estandarizado 8. Use enumeraciones cuando sea posible
1. Use "amp;" en lugar de ""
En los lenguajes de programación de muchas personas, " " se usa para concatenar cadenas. Esto puede llevar fácilmente a la ambigüedad. Es una buena práctica utilizar "&" para concatenar cadenas.
Incorrecto:
Atenuar sMessage como cadena
sMessage = "1" "2"
Correcto:
Dim sMessage As String
sMessage = "1" amp "2"
Nota: Hay un espacio después de "amp; "
2. Variable Situación de nombres, entrelazado de declaraciones, mantenimiento del código fuente
Comparemos los siguientes dos fragmentos de código:
Código que es difícil de leer:
Dim SNAME As String
Atenuar NTURN como entero
Si NTURN = 0 entonces
Si SNAME = "vbeden" entonces
Hacer mientras NTURN lt;
NTURN = NTURN 1
Bucle
End If
End If
Código fácil de leer:
Atenuar sName como cadena
Atenuar nTurn como entero
Si nTurn = 0 entonces
Si sName = "vbeden" entonces
Hacer mientras nTurn lt 4
nTurn = nTurn 1
Bucle
Finalizar si
Finalizar si
[Volver al índice]
3. Desarrolle los siguientes buenos hábitos de "convención de nomenclatura de objetos"<
Prefijos de control recomendados
Ejemplos de prefijos de tipo de control
Panel 3D pnl pnlGroup
Datos ADO ado adoBiblio
Botón de animación ani aniMailBox
Casilla de verificación chk chkReadOnly
Cuadro combinado, cuadro de lista desplegable cbo cboEnglish
Botón de comando cmd cmdSalir
Cuadro de diálogo común dlg dlgFileOpen
Comunicación con comFax
Control (utilizado en procedimientos cuando se desconoce el tipo específico) ctr ctrCurrent
data dat datBiblio
cuadro combinado enlazado a datos cuadro combinado enlazado a dbcbo dbcbo dbcboLanguage
Cuadrícula enlazada a datos dbgrd dbgrdQueryResult
Datos-
Cuadro de lista enlazado a datos dblst dblstJobType
Combinación de datos dbc dbcAuthor
Cuadrícula de red de datos dgd dgdTitles
Lista de datos dbl dblPublisher
Repetidor de datos drp drpLocation
Selector de fecha dtp dtpPublished
Cuadro de lista de directorio dir dirSource
Cuadro de lista de controladores drv drvTarget
Cuadro de lista de archivos fil fi
lFuente
barra de desplazamiento plana fsb fsbMove
tabla frm frmEntry
marco fra fraLanguage
instrumento gau gau gauStatus
Gráfico gra graRevenue
Cuadrícula grd grdPrecios
Cuadrícula flexible jerárquica flexflexOrders
Barra de desplazamiento horizontal hsb hsbVolume
Imagen img imgIcon
Combinación de imágenes imgcbo imgcboProduct
Lista de imágenes ils ilsAllIcons
Etiqueta lbl lblHelpMessage
Casilla de verificación ligera lwchk lwchkArchive
Cuadro combinado ligero lwcbo lwcboAlemán
Botón de comando liviano lwcmd lwcmdRemove
Marco liviano lwfra lwfraSaveOptions
Desplazamiento horizontal liviano lwhsb lwhsbVolume
Cuadro de lista liviano lwlst lwlstCostCenters
Botón de opción ligero lwoptlwoptIncomeLevel
Cuadro de texto ligero lwtxt lwoptStreet
Barra de desplazamiento vertical ligero lwvsb lwvsbYear
Línea lin linVertical
Cuadro de lista lst lstPolicyCodes
Vista de lista lvw lvwHeadings
Mensaje MAPI mpm mpmSentMessage
Sesión MAPI mps mpsSession
MCI mci mciVideo
Menú mnu mnuFileOpen
Vista mensual mvw mvwPeriod
MS Chart ch chVentasporRegión
MS Flex grid msg msgClients
MS Tab mst mstFirst
Contenedor OLE ole oleWorksheet
Botón de opción opt
Cuadro de imagen pic picVGA
Clip de imagen clp clpToolbar
ProgressBar prg prgLoadFile
Datos remotos rdrdTitles
RichTextBox rtf rtfReport
Forma shp shpCircle
Control deslizante sld sldScale
Girar spn spnPages
StatusBarsta staDateTime
SysInfo sys sysMonitor
Pestaña TabStrip tabOptions
Cuadro de texto txt
txtApellido
Temporizador tmr tmrAlarma
Barra de herramientas tlb tlbAcciones
TreeView tre treOrganización
ArribaAbajo upd updDirection
Desplazamiento vertical barra frente a barra de desplazamiento vertical
Barra de desplazamiento vertical frente a barra de desplazamiento vertical
Barra de desplazamiento vertical frente a barra de desplazamiento vertical
Barra de desplazamiento vertical frente a desplazamiento vertical barp> Barra de desplazamiento vertical vsb vsbRate
------------------------------------ ---- ---------------------------------------------- -
Prefijos recomendados de objetos de acceso a datos (DAO)
Los siguientes prefijos se utilizan para representar objetos de acceso a datos
Ejemplos de prefijos de objetos de base de datos
Contenedor con conReports
Base de datos db dbAccounts
DBEngine dbe dbeJet <
Documento doc docSalesReport
Fieldfld fldAddress
Grupo grp grpFinance
Índice ix idxAge
Parámetro prm prmJobCode
QueryDef qry qrySalesByRegion
Recordsetrec recForecast
Relación rel relEmployeeDept
TableDef tbd tbdCustomers
Usuario usr usrNew
Espacio de trabajo wsp wspMine
---------- -------- ------------------------------------------ -------- ------------
Las aplicaciones suelen utilizar muchos controles de menú y es útil desarrollar una convención de nomenclatura única para estos controles. Además de la etiqueta "mnu" en la parte superior, el prefijo del control del menú también debe expandirse: se agrega un prefijo adicional para cada nivel de anidamiento y el título del menú final se coloca al final de la cadena de nombre. La siguiente tabla enumera algunos ejemplos.
Prefijo de menú recomendado
Secuencia de títulos del menú Nombre del controlador de menú
Archivo Abrir mnuFileOpen
Archivo Enviar correo electrónico mnuFileSendEmail
Archivo Enviar Fax mnuFileSendFax
Formato de carácter mnuFormatCharacter
Contenido de ayuda mnuHelpContents
Cuando se utiliza esta convención de nomenclatura, en la ventana Propiedades de Visual Basic, todos los miembros de un grupo específico grupo de menús se enumeran uno tras otro. Además, los controles de menú tienen nombres que indican claramente el elemento del menú al que pertenecen.
Elija un prefijo para otros controles.
Los controles que no figuran en la lista anterior deben utilizar un prefijo único de dos o tres caracteres para mantener la coherencia. Utilice prefijos de más de tres caracteres sólo si se requiere una aclaración.
Convenciones de nomenclatura para constantes y variables
Además de los objetos, las constantes y variables también requieren convenciones de nomenclatura bien formateadas. Esta sección enumera las convenciones recomendadas para constantes y variables que admite Visual Basic. Esta sección también analiza las cuestiones relacionadas con la identificación de tipos y alcances de datos.
Las variables siempre deben definirse en el menor alcance posible. Las variables globales (públicas) pueden conducir a mecanismos de estado extremadamente complejos y hacer que la lógica de la 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
El alcance es visible donde se declara
Un procedimiento, subprocedimiento o función a nivel de procedimiento es visible donde se declara Usar "Privado" en procedimientos
Usar "Privado" en la sección de declaración de formularios a nivel de módulo o módulos de código (.frm, .bas). bas) Cada procedimiento almacenado en un formulario o módulo de código
Global 'Público' (global) en la sección de declaraciones de un módulo de código (.bas) En todas partes de la aplicación
Público ' Public' (global) en la sección de declaraciones del módulo de código
Global
En una aplicación de Visual Basic, no existe otro método conveniente excepto en la forma Las variables globales se usan solo cuando los datos se comparten entre los usuarios. Cuando debas utilizar variables globales, declaralas en un solo módulo y agrúpalas por funcionalidad. Asigne al módulo un nombre significativo que indique lo que hace, como Public.bas.
Una mejor práctica de codificación es escribir código modular siempre que sea posible. Por ejemplo, si su aplicación muestra un cuadro de diálogo, coloque todos los controles y el código necesarios para completar las tareas del cuadro de diálogo en un formulario. Esto ayuda a organizar el código de su aplicación en componentes útiles y reduce la sobrecarga del tiempo de ejecución.
Con la excepción de las variables globales (que no deben pasarse), los procedimientos y funciones almacenados solo deben operar en los objetos que se les pasan. Las variables globales utilizadas dentro de un procedimiento almacenado deben identificarse en la sección de declaración al comienzo del procedimiento almacenado. Además, debe utilizar ByVal para pasar parámetros a subprocedimientos y procedimientos de función a menos que exista una clara necesidad de cambiar el valor de un parámetro pasado.
A medida que se expande la escala del proyecto, también aumenta la carga de trabajo de las variables de alcance. Colocar un prefijo de alcance de una sola letra antes 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 alcance
Global g gstrUserName
Nivel de módulo m mblnCalcInProgress
Local a Procedimiento Ninguno dblVelocity
Una variable tiene alcance global si se declara Pública en un módulo estándar o de formularios. Una variable tiene alcance a nivel de módulo si se declara "privada" en un módulo estándar o en un módulo de formularios, respectivamente.
Nota: La coherencia es clave para utilizar esta técnica de manera efectiva; el verificador de sintaxis en Visual Basic no captura las variables a nivel de módulo que comienzan con "p".
Constante
El texto 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 ayudan a comprender el valor y el rango de la constante. Los nombres de constantes siguen las mismas reglas que las variables. Por ejemplo:
mintUserListMax 'Límite máximo de la lista de usuarios
' (valor entero, utilizado localmente por el módulo)
gstrNewLine 'Carácter de nueva línea
' (Cadena, utilizada globalmente por la aplicación)
Variables
Declarar todas las variables ahorrará tiempo de programación porque habrá menos errores causados al escribir (por ejemplo, aUserNameTmp , sUserNameTmp o sUserNameTemp). En la pestaña Editor del cuadro de diálogo Opciones, seleccione la opción Requerir declaración de variable. La opción de declaración explícita requiere que todas las variables se declaren en el programa Visual Basic.
Las variables deben tener un prefijo para indicar su tipo de datos. Los prefijos se pueden ampliar para especificar el alcance de una variable, especialmente para programas grandes.
Utilice los siguientes prefijos para especificar el tipo de datos de la variable.
Tipo de datos variable
Ejemplo de prefijo de tipo de datos
Cadena str strFName
Entero int intCantidad
Long lng lngDistance
Single
Single (tipo de punto flotante de precisión simple) sng sngAverage
Doble (tipo de punto flotante de doble precisión double (tipo de punto flotante de doble precisión) dbl dblTolerance
Booleano (tipo booleano) bln blnFound
Byte (tipo de byte) byt bytRasterData
Fecha dte dteNow
Moneda cur curRevenue
p>
Objeto obj objCurrent
Tipo de variante) vnt vntCheckSum
Descripción de nombres de variables y procedimientos almacenados
El cuerpo de la variable o el nombre del procedimiento almacenado debe be Escribe una mezcla que sea lo suficientemente larga para describir su efecto. Además, los nombres de las funciones deben comenzar con un verbo, como InitNameArray o CloseDialog.
Para proyectos largos o de uso frecuente, se recomienda utilizar abreviaturas estándar para organizar razonablemente la longitud del nombre. En términos generales, los nombres de variables de más de 32 caracteres son difíciles de leer en una pantalla VGA.
Al utilizar abreviaturas, asegúrese de que sean coherentes en toda la aplicación.
Si usa Cnt por un momento y Count por otro en su proyecto, creará confusión innecesaria.
Tipos definidos 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 los tipos definidos por el usuario al trabajar con ellos. Por ejemplo, ucli se puede utilizar como prefijo para variables de tipo de cliente definidas por el usuario.
[Volver al índice]
4. En el caso de condiciones de selección simples, utilice la función IIf()
Código de Rosso:
Si nNum = 0 Entonces
sName = "sancy"
De lo contrario
sName = "Xu"
Finalizar si p >
Código simple:
sName=IIf(nNum=0, "sancy", "Xu")
5. Print no sólo logra el mismo efecto, sino que también se ignora cuando finalmente se compila el programa. MsgBox debe comentarse o eliminarse manualmente.
Normalmente:
MsgBox nName
debe ser:
Debug.Print nName
6. cambiando las propiedades de un objeto, intente usar With.....Fin con
Normalmente:
Form1.Height = 5000
Form1. 6000
Form1.Caption = "Esta es MiEtiqueta"
Debe ser:
Con Form1
.Height = 5000
.Width = 6000
.Caption = "Esta es MyLabel"
Finalizar con
La ejecución del programa con esta estructura es más eficiente, especialmente en declaraciones de bucle.
7. MsgBox debería intentar utilizar iconos de mensajes para que el programa esté más estandarizado.
Generalmente,
vbInformation se utiliza para solicitar mensajes de confirmación o de éxito de la operación.
p >
vbExclamation se usa para generar mensajes de advertencia
vbCritical se usa para generar mensajes de crisis
vbCritical se usa para generar mensajes de crisis críticos
vbQuestion. los mensajes se utilizan en la consulta rápida
[Índice de retorno]
8 Utilice enumeraciones tanto como sea posible
El formato de las enumeraciones es
[Público | Privado] Nombre de enumeración
nombre de miembro [= expresión constante]
nombre de miembro [= expresión constante]
....
End Enum
La declaración Enum contiene las siguientes partes:
Descripción de la parte
Pública Opcional. Indica que el tipo de enumeración es visible en todo el proyecto. El valor predeterminado para los tipos de enumeración es Público. 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 utilizado para especificar el tipo al definir una variable o parámetro del tipo de enumeración.
el nombre del miembro es obligatorio. Un identificador legal de Visual Basic que especifica el nombre de los elementos componentes de este tipo de enumeración.
expresiónconstante opcional. El valor del elemento (de tipo Long). Pueden ser otros tipos de enumeración. Si no se especifica constantexpression, el valor asignado es 0 (si el elemento es el primer nombre de miembro) o 1 mayor que el valor del elemento anterior.
Descripción
Lo que llamamos variables de enumeración se refiere a variables definidas en el tipo Enum. Tanto las variables como los parámetros se pueden definir como tipos de enumeración. Los elementos de un tipo de enumeración se inicializan con el valor constante especificado en la declaración de enumeración. El valor asignado puede ser positivo o negativo 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 Enum solo pueden aparecer en el nivel del módulo. Una vez definido un tipo Enum, puede usarlo para definir variables, parámetros o procedimientos almacenados que devuelven ese tipo. No puede utilizar el nombre de un módulo para calificar un tipo de enumeración. Los tipos de enumeración pública en los módulos de clase no son miembros de la clase; simplemente se escriben en la biblioteca de tipos. Los tipos de enumeración definidos en los módulos estándar no se escriben en la biblioteca de tipos. No se puede definir un tipo de enumeración pública con el mismo nombre en un módulo estándar y en un módulo de clase porque comparten el mismo espacio de nombres. Si dos tipos de enumeración en bibliotecas de tipos diferentes tienen el mismo nombre pero miembros diferentes, entonces una referencia a la variable de tipo dependerá de qué biblioteca de tipos tiene la mayor prioridad de referencia.
No puedes utilizar tipos de enumeración como objetivos en bloques With.
Ejemplo de declaración Enum
El siguiente ejemplo demuestra el uso de la declaración Enum para definir una colección de constantes con nombre. En este ejemplo, puede seleccionar algunas constantes de color para diseñar un formulario de entrada de datos para una base de datos.
Colores de interfaz de enumeración pública
icMistyRose = amp;HE1E4FFamp;
icSlateGray = amp;H908070amp
icDodgerBlue = amp.HFF901Eamp; /p>
icDeepSkyBlue = HFFBF00amp;
icSpringGreen = H7FFF00amp;
icForestGreen = H228B22amp
icGoldenrod = H20A5DAamp; icFirebrick = amp; H2222B2amp;
End Enum
El beneficio es una programación más rápida