Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Normas de Codificación en Visual FoxPro
Normas de Codificación en Visual FoxPro
Resumen
Estas normas o pautas se basan en años de desarrollo de aplicaciones con Visual FoxPro
y de aprendizaje de cuáles técnicas de codificación trabajan mejor. Además, muchos
conceptos han sido adaptados a partir de Code Complete (Microsoft Press, ISBN 1-
55615-484-4) escrito por Steve McConnell. Este libro, es considerado una de las guías
más importantes en prácticas de codificación. Puede que usted no esté de acuerdo con
éstas normas, no hay problemas. Para mí, estas normas han funcionado bien.
Normas de codificación
Convenciones de variables.
l - Local
g - Global
p - Private
t - Parameter
c - Character
n - Numeric
d - Date
t - DateTime
l - Logical
m - Memo
a - Array
o - Object
x - Indeterminate
lcFirstName
tdBeginDate
Tenga en mente el alcance de la variable. Preferiblemente deben utilizarse variables
locales (LOCAL). Las variables públicas (PUBLIC) deben evitarse tanto como sea
posible. Las declaraciones de variables, tales como: LOCAL lcMyVar se deben colocar
todas al inicio de la rutina a ejecutar, en lugar de dispersarlas por el código. Declare
todas las variables al inicio de la rutina, en lugar de entremezclarlas por todo el código y
asigne su valor predeterminado.
Forma incorrecta:
LOCAL lnMyNum
lnMyNum = 12
LOCAL lcMyString
lcMyString = "ABCD"
LOCAL lnCounter
lnCounter = 0
Forma correcta:
lnMyNum = 12
lcMyString = "ABCD"
lnCounter = 0
Las primeras tres letras del nombre de un objeto deben ser utilizadas para indicar el tipo
del objeto.
Forma incorrecta:
DO CASE
* Este es el comentario para el caso 1
CASE lnCount = 1
lcRetVal = "Uno"
* Este es el comentario para el caso 2
CASE lnCount = 2
lcRetVal = "Dos"
* Este es el comentario para otherwise
OTHERWISE
lcRetVal = "Otro"
ENDCASE
Forma correcta:
DO CASE
CASE lnCount = 1
* Este es el comentario para el caso 1
lcRetVal = "Uno"
CASE lnCount = 2
* Este es el comentario para el caso 2
lcRetVal = "Dos"
OTHERWISE
* Este es el comentario para otherwise
lcRetVal = "Otro"
ENDCASE
<ol start="5">
Trate de evitar macro sustitución. A veces la macrosutitución es la única vía para
lograr algo. Asegúrese de documentar, por qué utiliza macrosustitución y cuál es el
propósito del código. En la mayoría de los casos, la macrosustitución hace que el código
sea menos legible. Utilice la función EVALUATE(). Si es posible, pero nuevamente los
comentarios son importantes para ayudar a leer el código.
Evite utilizar STORE.
Utilice "[]" en lugar de paréntesis en los arreglos. Así, el código es más legible.
Coloque espacios entre los operadores matemáticos. Esto mejora la legibilidad.
Utilice paréntesis cuando llame métodos o funciones, incluso, si no pasa ningún
parámetro.
Evite el uso de m. a la izquierda del signo igual. Esto mejorará el rendimiento.
Al concatenar cadenas, coloque la variable a la izquierda del signo +. Esto mejorará
el rendimiento.
No emplee comentarios al final de las líneas con &&. Cada comentario debe ocupar una
línea propia.
*********************************************************
* Método........: frmQueue.cmdNext.Click
* Descripción...: Displays the next item in the selected queue
* Fecha.........: 01-Oct-2001
* Autor.... ....: Fred Flintstone
*********************************************************
* Modification Summary
*
*********************************************************
Ejemplo 2:
*********************************************************
* Función......: CalcIntrest
* Descripción...: Calculate the interest in dollars on the loan
* Parámetros....: tnBalance: Required: The balance amount
* : tnRate: Required: The interest rate to apply
* Devuelve......: Numeric: The dollar amount of the interest
* Fecha.........: 01-Oct-2001
* Autor.........: Bullwinkle J. Moose
*********************************************************
* Modification Summary (Resumen de modificaciones)
*
*********************************************************
Comentar modificaciones
Es importante poner comentarios al hacer modificaciones para saber cuáles fueron las
modificaciones realizadas, y por qué las realizó. La sección Modification Summary
(Resumen de modificaciones) en el encabezado explicará por qué, cuándo y por quién
fueron realizadas las modificaciones. En cada lugar del código, donde fue realizada una
modificación, debe comentar el código viejo e indicar cuál es el código nuevo que fue
añadido. Cada modificación debe ser numerada. Los cambios pueden ser borrados
después de un año; pero el Resumen de modificaciones debe permanecer.
Ejemplo:
*********************************************************
* Modification Summary
*
* /01 05-Oct-2001 George Jetson
* Changed interest calculation to include a date range factor.
* /02 10-Oct-2001 Tennessee Tuxedo
* 1. Added code to handle interest on widgets. The calculation is
different.
* 2. Changed the return value from numeric to character.
*********************************************************
*/01 lcNote = "This is the old line commented out "
*/01
lcNote = "This is the new line of code. "
*/02-1 lnInterest = a * b
*/02-1 lnInterest = lnInterest / 43
*/02-1 - Begin - Multiple lines are being added, so indicate they
start here
IF UPPER(tcIntType) = "WIDGETS "
lnInterest = a * c
ELSE
lnInterest = a * b
lnInterest = lnInterest / 43
ENDIF
*/02-1 - End
IF lnTotalInterest = 0
*/01 � Begin
FOR lnCount = 1 TO lnTotal
lnTotalInterest = lnTotalInterest + laLoans[lnCount, 2]
ENDFOR
*/02 � End
ENDIF
IF lnTotalInterest = 0
*/01 � Begin
FOR lnCount = 1 TO lnTotal
lnTotalInterest = lnTotalInterest + laLoans[lnCount, 2]
ENDFOR
*/02 � End
ENDIF
Al comentar líneas que continúan, hay que comentar cada línea física.
Incorrecto:
Correcto:
Cuando sea posible, la interfaz de usuario debe cumplir con las directivas de Windows
Standards descritas en el libro "Microsoft Windows User Experience ", Microsoft
Press, ISBN 0-7356-0566-1. Este libro se encuentra disponible en:
http://msdn.microsoft.com/library/en-us/dnwue/html/welcome.asp. Tenga en mente
todo el tiempo al usuario. Mientras más sencilla sea la funcionalidad para el usuario,
mejor será la aplicación. Esto puede significar que el código que está detrás de esta
funcionalidad es más complejo.
Mensajes
Objetos de formulario