PDA

Ver la Versión Completa : Reutilizar codigo


Perio
17-11-2005, 16:38:32
Hola, como estan todos:

Les comento mi situación, estoy creando un proyecto de "units base" para usarlo como molde para futuros proyectos. Consiste basicamente en un modulo de Datos, units de Sistema, y ventanas base como alta-baja-modificacion, listado, resumenes y demas (las ventanas con el fin de usar herencia ya que agiliza mucho el trabajo).

Yo tenia la idea inicial de hacer de todo esto un paquete para su posterior reutilizacion (se que tienen muchas ventajas), pero no se si es la mejor solucion y ademas tengo muchos problemas a la hora de compilarlo (estoy usando componentes extra y esto me acarrea muchos inconvenientes).

Estube buscando en el foro temas relacionados con la rutulizacion de codigo pero no encontre nada sobre el uso de paquetes o alguna forma uso de templates de proyecto. Hay un hilo interesante pero esta mas orientado a base de datos. Estaria bueno hablar de algo mas generico.

La idea de este hilo es discutir como es que ustedes reutilizan codigo y agilizan su trabajo.
Perio

jachguate
17-11-2005, 16:56:04
Para la "base" de formularios/reportes basados en herencia visual, en lugar de un paquete, yo he preferido simplemente agregarlos al repositorio y tenerlos alli disponibles cuando haga falta.

Hasta luego.

;)

Perio
17-11-2005, 17:04:05
Jachguate:

Yo era perseverante con la idea del paquete ya que los .exe se optimizan mucho.

http://www.clubdevelopers.com/delphi/articulos/lenguaje/dindpk/index.php

Este ejemplo es bien sencillo, lo probe y se reduce el tamaño del exe de 250kb a 14Kb. Eso esta interesante no?

Perio

jachguate
17-11-2005, 19:16:32
claro. El tamaño del exe se reduce, pero igualmente el código debe estar en algún lugar, y en memoria resultará todo cargado al momento de ejecutarse el programa. Así, en ese sentido, no veo mucha ventaja de poner todo en un paquete. De hecho, nunca me planteado ni he probado el usar herencia visual con ancestros en paquetes. Supongo que funcionará y puede haber ganancia si varias aplicaciones usan el mismo "core" de formularios/reportes.

En todo caso, el problema entonces es de resolver y tratar las dependencias dentro de los paquetes, ya que al parecer es el uso de componentes de terceros el que está dando el problema.

Saludos.

Lepe
17-11-2005, 19:27:51
Lo de usar paquetes yo al menos no lo veo claro.

Realmente no estas reduciendo tamaño; al fin y al cabo tienes que distribuir los paquetes y el exe, y normalmente una modificación requiere que toques más de un paquete (opinión personal y seguro que debatible ;)) así que estas en las mismas.

Por otra parte los paquetes son dependientes de la versión de delphi usada, ¿no sería mejor una dll ? es un solo archivo, aunque puedes crear varias.

La memoria y recursos usados, siempre serán los mismos, sin paquetes, con paquetes, con dlls, con compresores de ejecutables, etc.

saludos

mamcx
17-11-2005, 19:49:07
Te pueden servir las ideas de los 3 ultimos artículos de mi blog:

http://solucionesvulcano.com/blog/blog.html

El tema de distribucion fisica es relativamente simple. Se hace con paquetes o plugins o dll o ActiveX o Servicios Web, dependiendo de lo que este de moda ;)

Pero mas critico es la separacion logica y de codigo...

Para empezar, seriamente hablando, debes empezar por montar un software de control de codigo como Subversion y hacer unit testing. Sin eso, es demasiado dificil lograrlo.

roman
17-11-2005, 20:48:20
Realmente no estas reduciendo tamaño; al fin y al cabo tienes que distribuir los paquetes y el exe, y normalmente una modificación requiere que toques más de un paquete (opinión personal y seguro que debatible ;)) así que estas en las mismas.

Si lo que se quiere es reducir el tamaño del ejecutable entonces ciertamente el uso de paquetes es irrelevante. Incluso me atrevería a decir que el tamaño global es mucho mayor. Cuando se compila todo en un solo ejecutable, el linker de Delphi agrega sólo lo que realmente se está usando. Al distribuir los paquetes por separado se incluye todo el código del paquete, se use o no en la aplicación.

Pero por otra parte, yo sí veo ventaja de usar paquetes. Posiblemente se requiera retocar más de uno, dependiendo de las dependencias que tengas, pero no todos. Y al momento de distribuir las actualizaciones es donde apreciarás la reducción de tamaño.

Si el objetivo no está en la distribución, ni en plig-ins, o cosas por el estilo, entonces yo creo que optaría por lo que dice Juan Antonio, simple herencia visual y repositorio.

Lo de usar dlls en lugar de bpls yo no lo consideraría a no ser que tenga la intención de usar su código en otros lenguajes. Vamos, que uno no cambia de versión de Delphi todos los días, y usar dlls sobre bpls es, pienso, desaprovechar las bondadndes de Delphi.

EDITO

¡Ah! Y es que esto de "al fin y al cabo tienes que distribuir los paquetes y el exe" es justamente lo que no es cierto. Al usar paquetes logras distribuir sólo los que hayan cambiado y no el ejecutable principal.

// Saludos

jachguate
17-11-2005, 21:26:24
La memoria y recursos usados, siempre serán los mismos, sin paquetes, con paquetes, con dlls, con compresores de ejecutables, etc.

Al menos este punto es discutible. Tenes el caso de los compresores de ejecutables. Si tenes dos instancias de un exe comprimido, en realidad vas a ocupar casi el doble de memoria (al menos para almacenar el código).

Saludos.