Ahorrando espacio con las etiquetas
La ventana típica de una típica aplicación para bases de datos contiene montones de controles de edición, quizás organizados por páginas, si el programador ha sido misericordioso con sus usuarios ... y decenas de inertes etiquetas de texto que se asocian a dichos controles para hacer mínimamente comprensible su significado.
Este truco puede ayudarle a ganar espacio y a hacer más legible el código fuente:
- Elimine el nombre de todos sus componentes TLabel.
- Una por una, seleccione las etiquetas existentes y, con la ayuda del Inspector de Objetos, borre el contenido de la propiedad Name.
¿Qué ganamos con ésto? Vaya al código fuente del formulario después de realizar la transformación. Notará que, en la declaración de la clase del formulario ya no aparecen las declaraciones correspondientes a las etiquetas. Esto implica que ya no podremos modificar en tiempo de ejecución las características de estos componentes, pero ¿a quién le importa eso? En compensación, un listado impreso del código fuente se acorta en un número de líneas idéntico al número de TLabels que han perdido su honor en el proceso. Desde mi punto de vista ésta es la principal ventaja del truco.
Pero hay más: también se gana espacio en el fichero DFM. Antes de aplicar el truco, cada etiqueta comenzaba su declaración dentro del DFM más o menos de este modo:
object Label1: TLabel
Left = 164
Top = 108
Width = 32
Height = 13
Caption = 'Indice de Mala Leche Equivalente (%):'
end
Ahora la declaración se queda así:
object TLabel
Left = 164
Top = 108
Width = 32
Height = 13
Caption = 'Indice de Mala Leche Equivalente (%):'
end
Nos hemos ahorrado tantos bytes como caracteres tenía el nombre de la etiqueta. Por supuesto, da lo mismo que el fichero DFM esté en formato binario o en el formato de texto de Delphi 5.
Cuando creemos la ventana en tiempo de ejecución también estaremos ahorrando espacio. Aunque muchos programadores prefieren ignorarlo, lo cierto es que el contenido de las propiedades Name de sus componentes existe también en tiempo de ejecución; he ahí la importancia de evitar componentes con nombres como ElCabronDeFulano ó QueBuenaEstaMengana. ¿Una etiqueta sin nombre? Espacio ahorrado en tiempo de ejecución.
Sin embargo, hace poco me di cuenta que hay una pequeña ganancia adicional en espacio que muchas veces ignoramos; este "descubrimiento" me ha impulsado a escribir este truco. Primero una pregunta. Observe la siguiente declaración, y dígame a qué sección (private, protected o public) cree usted que pertenece la declaración de la etiqueta:
type
TForm1 = class(TForm)
Label1: TLabel;
private
{ Private declarations }
public
{ Public declarations }
end;
Pues ni pública ni privada ni protegida: la sección que sigue inmediatamente a la palabra class ¡es published! Y las declaraciones en published generan estructuras de datos asociadas a la clase que también ocupan espacio en tiempo de ejecución. No sólo ahorraremos este espacio, sino que también aceleraremos algo la carga de la ventana y la asociación de objetos persistentes a los campos de la clase del formulario.
|
En algún punto del programa, preferiblemente en el fichero de proyecto, antes de comenzar la carga de ventanas, llame a la función RegisterClasses, mencionando todas las clases de componentes que han perdido su nombre y su alma.
|
Este punto es muy importante. Si todas las referencias a la clase TLabel desaparecen del código fuente de nuestro proyecto, el enlazador inteligente de Delphi llegará a la conclusión de que no necesita incluir el código binario correspondiente en el ejecutable. La llamada a RegisterClasses evita el problema.
Tome nota de que, aunque durante toda esta página me he referido a la clase TLabel, todo lo dicho se aplica también a otras clases "pasivas" como TBevel, TPanel, e incluso a determinados TDBEdit.
|