Вы находитесь на странице: 1из 9

Estándar de Codificación para Visual Basic

para Aplicaciones
Departamento de Ciencias
Computacionales
Escuela de Ingeniería y Tecnologías de
Información
Campus Monterrey
Comité de Programación
Tecnológico de Monterrey Campus
Monterrey

Antecedentes

Entre los principales propósitos de tener una convención de código están: entender el código más
rápidamente; tener una visión consistente del código de manera que el lector pueda enfocarse en el
contenido; facilitar el mantenimiento y aplicar las mejores prácticas del desarrollo.

Lineamientos

Los lineamientos de codificación son:

Tema Lineamiento
El código de VBA está incluido en el libro de Excel. El nombre del archivo
Nombre del que contiene al libro debe cumplir las siguientes reglas:
archivo que ● Debe ser un nombre descriptivo del propósito del modelo de Excel
almacena el libro que almacena.
● Debe iniciar con mayúscula y contener solamente letras y dígitos.
No se debe emplear las letra “ñ” ó “Ñ” ni letras acentuadas.
● Si requiere el uso de dos o más palabras, cada una debe iniciar con
mayúscula.
● Debe terminar con guión bajo y un dígito que indique la versión del
programa.
● Se debe utilizar la extensión xlsm
Ejemplos con estándar:
CalculoHipotenusa_1.xlsm
ConversionesNumericas101_2.xlsm
Ejemplos sin estándar:
calculo_1.xlsm
Calculo_Área.xlsm
Cálculo%Impuesto version 3.xlsm
Contenido del Un libro de Excel almacena un modelo que es construído empleando hojas
libro de cálculo y módulos. En las hojas de cálculo se guardan los datos y
fórmulas correspondientes al modelo y en los módulos se colocan las
funciones y subrutinas que amplían la funcionalidad del modelo.
El libro de Excel sólo deben contener datos y módulos correspondientes al

1
modelo que está implementando.
Contenido del Un módulo debe almacenar la documentación y el código
módulo correspondiente (funciones y/o subrutinas) a una funcionalidad específica
del modelo.
El contenido del módulo debe ser:
● Comentarios de inicio.
● Para cada función/subrutina:
o Comentarios de función o subrutina con parámetros (si los
requiere) y regreso
o Instrucciones de función o subrutina con comentarios
Cada módulo debe contener la siguiente estructura:
Orden de los ● Comentarios de inicio.
elementos de un ● Para cada subrutina o función:
módulo o Comentarios de subrutina o función
o Instrucciones de subrutina o función con comentarios
El nombre de una variable debe cumplir con las siguientes reglas:
Nombre de ● Debe estar compuesto por una letra minúscula que indique el tipo
variables de valor que contendrá seguida de una o más palabras que
describan su contenido.
● Si el valor representa un número entero el nombre debe iniciar con
la letra ‘i’ minúscula.
● Si el valor representa un número con decimales el nombre debe
empezar con la letra ‘d’ minúscula.
● Si el valor representa una cadena de caracteres el nombre debe
empezar con la letra 's' minúscula.
● Cada palabra de descripción debe iniciar con una letra mayúscula
seguida por letras y dígitos. No se debe emplear la letra “ñ” ó “Ñ” ni
letras acentuadas.
● El conjunto de palabras debe ser descriptivo del dato que contiene.
● El nombre de una variable no debe ser igual al nombre asignado a
alguna celda del libro de Excel.
Ejemplos con estándar:
Asumiendo que se requieren valores para fuerza, edad y nombre:
dFuerza
iEdad
sNombre
Ejemplos sin estándar:
Asumiendo que se requieren valores para la edad y la temperatura:
edad
t
i4
En relación a constantes se deben cumplir las siguientes reglas:
Uso de valores ● Una constante debe ser asignada a una variable del mismo tipo.
constantes ● Una constante entera solo especifica su signo cuando sea
negativo.
● Una constante con decimales, debe contener al menos un dígito
antes del punto y al menos un decimal después del punto.
● Las constantes alfanuméricas deben encerrarse entre comillas

2
dobles.
Ejemplos con estándar:
iEdadInicial = 10
iDecremento = -5
sTituloTabla = "Análisis de Varianzas"
dPresion = 0.5
dFuerza = 3.0
Ejemplos sin estándar:
iEdad = +10
sTitulo = 'Análisis de Varianzas'
dPresion = .5
dFuerza = 3
El encabezado de una función debe cumplir las siguientes reglas:
Encabezado de ● Debe iniciar con la palabra reservada Function.
una función ● El nombre de la función debe iniciar con mayúscula.
● Si se requiere dos palabras o más para el nombre, éstas deben
iniciar con mayúscula.
Ejemplos con estándar:
Function CalculaImpuesto(dValor)
Function CuentaRenglones()
Ejemplos sin estándar:
Function calcula_Impuesto(dValor)
Function promedioTemperatura()
Function Despliega(Fuerza)
El encabezado de una subrutina debe cumplir las siguientes reglas:
Encabezado de ● Debe iniciar con la palabra reservada Sub.
una subrutina ● El nombre de la subrutina debe de Iniciar con mayúscula.
● Si se requiere dos palabras o más para el nombre, éstas deben
iniciar con mayúscula.
Ejemplos con estándar:
Sub EliminaContenidos(iRenglonInicial,iRenglonFinal)
Sub TablaCoseno()
Ejemplos sin estándar:
Sub eliminaContenidos(renglonIni,renglonFin)
Sub TABLACOSENO()
Los comentarios de inicio deben estar dentro de un marco formado por el
carácter ' (comilla sencilla) y contener la siguiente información: descripción,
Comentarios de
autor/autores, fecha y versión.
inicio
Ejemplo con estándar:
''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Este módulo calcula la hipotenusa de un triángulo
' con las medidas de los lados proporcionadas por el
' usuario
' Juan Pérez
' 2/2/2016 versión 1.0
''''''''''''''''''''''''''''''''''''''''''''''''''''''
Ejemplo sin estándar:
3
' calcula hipotenusa
' Juan Pérez
Los comentarios de las funciones se colocan antes de las mismas. Deben
Comentario de estar dentro de un marco formado por el carácter ' (comilla sencilla) y
funciones contener: el nombre de la función, su propósito, los parámetros que
requiere y el dato de retorno que se asigna al nombre de la función.
Ejemplo con estándar:
''''''''''''''''''''''''''''''''''''''''''''''''''''''
' AreaCirculo
' Calcula el área de un círculo dado el radio
' Parámetros:
' dRadio radio del círculo
' Regreso:
' AreaCirculo área del círculo
''''''''''''''''''''''''''''''''''''''''''''''''''''''
Ejemplo sin estándar:
' AreaCirculo
' Calcula el área de un círculo dado el radio
Comentario de Los comentarios de las subrutinas se colocan antes de las mismas. Deben
subrutinas estar dentro de un marco formado por el carácter ' (comilla sencilla) y
contener: el nombre de la subrutina, su propósito y los parámetros que
requiere.
Ejemplo con estándar:
''''''''''''''''''''''''''''''''''''''''''''''''''''''
' DespliegaInformacionTriangulo
' Despliega los valores de los lados de un triángulo.
' Parámetros:
' dLado1 lado 1 del triángulo
' dLado2 lado 2 del triángulo
' dLado3 lado 3 del triángulo
''''''''''''''''''''''''''''''''''''''''''''''''''''''
Ejemplo sin estándar:
' CalculoFuerza
' Calcula la fuerza de un objeto en movimiento
' Parámetros:
' dMasa y dAceleracion
Se recomienda agregar comentarios a las instrucciones o bloques de
Comentarios instrucciones para facilitar su comprensión.
Los comentarios deben cumplir las siguientes reglas:
● Deben iniciar con el caracter ' (comilla sencilla).
● Deben colocarse antes de la instrucción o bloque a documentar.
Ejemplos con estándar:
' Solicitar y leer el valor el radio
dRadio = InputBox("Radio del circulo:")

' Se calcula el área del circulo


dArea = 3.1416 * dRadio ^ 2.0

' Inicializar el contador de repeticiones


iContador = 0

4
Ejemplos sin estándar:
' leo
dRadio = InputBox("Da el radio:")

' calculo
dArea = 3.1416 * dRadio ^ 2.0

' ceros
iContador = 0
Las piezas del módulo se deben escribir con suficiente espacio para que no
Espacios en aparezcan amontonadas. Por lo tanto se deben cumplir los siguientes
blanco lineamientos:
● Dejar un espacio en blanco entre cada operador.
● Dejar una línea en blanco antes de cada bloque de instrucciones
con un propósito.
Ejemplo con estándar:
dAcumulado = dValor1 + dValor2 + 5.0
dPorcentaje = dAcumulado * 0.25
dVoltaje = dCorriente * dResistencia
Ejemplo con estándar:
'Solicitar datos al usuario
dA = InputBox ("Dame el coeficiente A:")
dB = InputBox ("Dame el coeficiente B:")
dC = InputBox ("Dame el coeficiente C:")

'Obtener las raíces de la ecuación


dDiscriminante = dB ^ 2.0 – 4.0 * dA * dC
dRaiz1 = (-dB + Sqr(dDiscriminante)) / (2.0 * dA)
dRaiz2 = (-dB - Sqr(dDiscriminante)) / (2.0 * dA)

'Desplegar las raíces de la ecuación


MsgBox ("Raices = " & dRaiz1 & " " & dRaiz2)

Ejemplo sin estándar:


dAcumulado = dValor1+dValor2 +5.0
dPorcentaje=dAcumulado* 0.25
dVoltaje=dCorriente*dResistencia
dDiscriminante=dB^2.0–4.0*dA* dC
Ejemplo sin estándar:
'Solicitar datos al usuario
dA = InputBox("Dame el coeficiente A:")
dB = InputBox("Dame el coeficiente B:")

dC = InputBox("Dame el coeficiente C:")


'Obtener las raíces de la ecuación
dDiscriminante = dB ^ 2.0 – 4.0 * dA * dC

5
dRaiz1 = (-dB + Sqr(dDiscriminante)) / (2.0 * dA)

dRaiz2 = (-dB - Sqr(dDiscriminante)) / (2.0 * dA)


Las instrucciones deben estar indentadas con una sangría creada con la
Sangría tecla Tab para mostrar la jerarquía de las instrucciones por bloque:
● Condicionales if / select
● Repetición for / while
● Subrutinas y funciones
Ejemplo con estándar:
Do
If (iContador Mod 2 = 0) Then
iTotal = iTotal + iContador
End If
iContador = iContador + 2
Loop While (iContador < 10)
Ejemplo con estándar:
Function Raiz1(dA, dB, dC)
dDiscriminante = dB ^ 2.0 – 4.0 * dA * dC
Raiz1 = (-dB + Sqr(dDiscriminante)) / (2.0 * dA)
End Function
Ejemplo sin estándar:
Do
If (iContador Mod 2 = 0) Then
iTotal = iTotal + iContador
End If
iContador = iContador + 2
Loop While (iContador < 10)

Ejemplo sin estándar:


Function Raiz1(dA, dB, dC)
dDiscriminante = dB ^ 2.0 – 4.0 * dA * dC
Raiz1 = (-dB + Sqr(dDiscriminante)) / (2.0 * dA)
End Function

Sólo debe haber una instrucción por renglón.


Número de
instrucciones por
línea

6
Ejemplo con estándar:
If dAngulo = 45.0 Then
MsgBox ("Dentro del Cuadrante I")
Else
MsgBox ("Fuera del Cuadrante I")
End IF
Ejemplo sin estándar:
If dAngulo = 45.0 Then MsgBox ("Si") Else MsgBox("No")
End If

Casos de Elaborar todos los casos de prueba que se deben emplear para verificar
prueba que el programa da solución al requerimiento para el cual fue
desarrollado. Para cada caso de prueba, se debe detallar él o los valores
y/o acciones a verificar y el resultado esperado.

Ejemplo de requerimiento
Desarrolla un programa que le permita calcular el valor de la fuerza de un objeto,
según la fórmula de la segunda ley de Newton, en base a los datos de masa y
aceleración que el usuario proporcione.

Solución al requerimiento, cumpliendo el estándar de codificación.


''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Este módulo calcula la fuerza de un cuerpo en movimiento
' utilizando sus valores de masa y aceleración, proporcionados
' por el usuario y según la fórmula de la Segunda Ley de Newton.
'
' Juan Perez
' 31/12/2016 versión 1.0
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' CalcularFuerza
'
' Calcular el valor de fuerza a partir de los valores de
' masa y aceleración, utilzando la fórmula de la Segunda
' Ley de Newton.
'
' Parametros:
' dMasa es la masa del cuerpo
' dAceleracion es la aceleración que lleva el cuerpo
' Regreso:
' CalcularFuerza calculo de la fuerza = masa * aceleracion
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Function CalcularFuerza(dMasa, dAceleracion)
CalcularFuerza = dMasa * dAceleracion
End Function

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Principal
'
' Solicitar los valores de masa y aceleración para
' calcular el valor de fuerza, de un cuerpo en movimiento,
' y mostrarlo en pantalla.
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Sub Principal()

7
'Pido los datos de la masa y la aceleracion
dMasa = InputBox("Da la masa:")
dAceleracion = InputBox("Da la aceleracion:")

'Despliego la fuerza utilizando la funcion Fuerza


MsgBox ("Fuerza = " & CalcularFuerza(dMasa, dAceleracion))
End Sub

Casos de Prueba

Caso de Prueba 1

Caso de Prueba 2
Da la masa: 50
Da la aceleracion: -3.7
Fuerza = -185

Caso de Prueba 3
Da la masa: -50
Da la aceleracion: 3.7
Fuerza = -185

8
Caso de Prueba 4
Da la masa: ABC
Da la aceleracion: -3.7

Referencias bibliográficas
Coding Standard Template, Ó 2007 by Carnegie Mellon University

Microsoft Visual Basic Typographic and Code Conventions


http://msdn.microsoft.com/en-us/library/1s46s4ew.aspx

Documento escrito por: Comité del Área de Programación, Ciencias Computacionales, Campus
Monterrey.
Autores: Armandina Leal, Antonio Mejorado, Luis R. Salgado.

Вам также может понравиться