Código y Datos: Privado o Público
En los
proyectos
visuales, todos los datos y constantes de los objetos Window,
MDIWindow
o DialogBox
son privados, es decir, sólo accesibles al propio objeto y a
sus
controles hijo.
Para compartir los datos con otros objetos del proyecto,
puede agregar archivos Include
u objetos Módulo.
Los Módulos
son objetos de código, que significa que no tienen ninguna
ventana ni pueden contener controles, pero todo las variables y
procedimientos que hay en ellos es Public
por defecto, es decir, comunes a todo el proyecto. Esto NO
es aplicable a las macros ni a las estructuras,
que solamente son visibles dentro de la ventana
o módulo donde están
definidas (a menos que se definan en un archivo include
como se detalla a continuación).
Los archivos Include también pueden ser
comunes
a todo el proyecto si se agregan del modo correcto. Si desea
que un archivo Include sea común a todo
el
proyecto, haga lo siguiente:
Para archivos
include de MASM32 SDK o de programación
de
drivers, use la opción de
menú
"Proyecto=>Agregar archivos Include
(*.inc)..."
Si se agregan de este modo, los archivos include
se incluyen siempre cuando se compilan todos los
demás
archivos del proyecto (ventanas y módulos), por
consiguiente,
no pueden tener procedimentos ni declaraciones de variables,
de lo contrario, se producirán errores de
redefinición (unos buenos ejemplos de archivos include
son los que vienen con MASM32 SDK). Por otra parte,
los archivos include son muy útiles para
definir
macros y/o estructuras que deban ser comunes a todo
el proyecto (por ejemplo, el archivo Common.inc del
proyecto NetMon, en la carpeta Examples).
Para cualquier otro tipo de archivo include, use la opción
de
menú "Proyecto=>Agregar
Archivos..." (si el archivo está en otra
carpeta,
será copiado a la carpeta del proyecto)
Los objetos Módulo son propios de
Easy Code y deben estar estructurados correctamente para
evitar errores de programación. Para que los
módulos funcionen debidamente, debe
tenerse
en cuenta una regla muy importante:
Las
secciones .Const,
.Data?
y .Data,
deben estar
SIEMPRE antes de la sección .Code de la
siguiente manera:
Un módulo puede ser muy útil
para
contener variables y procedimientos que sean referenciados
por cualquier otro objeto (ventana o módulo), puesto que
todas sus variables y procedimientos son comunes a todo el
proyecto. Sin embargo, si desea que los datos de un
módulo sean privados, haga lo siguiente:
.Const
De hecho, el orden de las secciones .Const,
.Data?
y .Data
no tiene
importancia alguna, lo que es imprescindible
es que solamente haya una sección .Code
en un módulo y que ésta
sea la última de todas las secciones.
.Data?
.Data
.Code
Para proyectos visuales:
Ponga la propiedad PublicData a FALSE
Para proyectos clásicos:
Desmarque la opción Hacer globales todas las variables de las Propiedades del proyecto
Para los objetos Window,
MDIWindow
y DialogBox,
Easy Code declara los procedimientos como Private
por defecto, mientras
que para los objetos Module
los declara como Public.
Puesto que
Easy Code ignora la directiva Option
Proc,
todos los procedimientos
son Public,
si no se declaran explícitamente como Private,
para que puedan ser accedidos por cualquier otro objeto del proyecto.
De hecho, todos los procedimientos son Public
por defecto si no se
declaran Private
ni Public,
por
lo que los procedimientos siguientes son exactamente iguales:
AnyName Proc
Ret
AnyName EndP
y
AnyName Proc Public
Ret
AnyName EndP
Si desea que un procedimiento sea privado, debe añadirle la
correspondiente palabra reservada (Private),
y entonces sólo
será accessible dentro del objeto en el que se encuentra:
AnyName Proc Private
Ret
AnyName EndP
Por consiguiente, si pone la propiedad PublicData a FALSE (proyectos visuales), o desmarca la opción Hacer globales todas las variables (proyectos clásicos), y todos los procedimientos son declarados como Private, tendrá un módulo privado, es decir, sólo accessible desde el propio módulo. Por otra parte, poniendo la propiedad PublicData a TRUE (proyectos visuales), o marcando la opción Hacer globales todas las variables (proyectos clásicos), y no declarando como Private ninguno de sus procedimientos, dará como resultado un módulo público, donde los datos y el código serán accessibles desde cualquier otro objeto del proyecto.
Es una buena práctica mantener como Private todos los procedimientoss de un objeto ventana (proyectos visuales) y agregar uno o más archivos Include (o módulos) para compartir el código y los datos que sean comunes. De esta manera su código será mas claro, parecido a lengujes de mas alto nivel, y menos expuestos a errores. Así funciona Easy Code cuando escribe código para un procedimiento: todos los procedimientos de un objeto ventana son declarados Private (a menos que usted los haga Public), mientras que todos los procedimientos de un objeto módulo son declarados Public (a menos que usted los haga explícitamente Private). De hecho, Easy Code no escribe ni Public ni Private, lo cual significa que son Public.
OBSERVACIONES: Easy Code se cuida de los prototipos de todos los procedimientos existentes en el proyecto. Por lo tanto, NO HACE FALTA que escriba ni incluya ninguna sentencia Proto, puesto que no se necesitan en los proyectos de Easy Code.
IMPORTANTE:
Recuerde que Easy Code ignora la directiva Option
Proc,
por lo tanto, para que un procedimiento sea privado, debe
incluir la palabra
reservada correspondiente (Private).
Si no lo declara ni
Public
ni Private,
el
procedimiento será considerado Public.