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 objeto y sus controles hijo. Para compartir los datos con otros objetos del proyecto, agregue 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 el código que hay en ellos es público por defecto, es decir, común a todo el proyecto (esto NO es aplicable a las macros, que solamente son visibles dentro de la ventana o módulo donde están definidas). Si desea que los datos de un módulo sean privados, haga lo siguiente:

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


Por otra parte, los archivos Include también son comunes a todo el proyecto si se agregan usando las opciones de menú correspondientes. Es decir, para los archivos include petenecientes al MASM32 SDK o a la programación de drivers, use la opción de menú "Proyecto->Agregar archivos Include (*.inc)...", mientras que para otros archivos include que desee incluir (y que deberán estar en la carpeta del proyecto) use la opción de menú "Proyecto->Agregar Archivos...". Los archivos include son los más apropiados para contener macros y/o estructuras que deban ser globales a todo el 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 mas 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.