Page 1 of 1

Acerca variables locales

Posted: Wed Jun 06, 2012 12:41 am
by Raymundo Islas M.
Antonio,

En algunas funciones ( no muchas ) de la app veo que tengo ya varias variables locales definidas ( 50-60 aprox ), queriendo hacer una depuracion del codigo, pienso crear una sola usando la clase tPublic de Daniel e ir agregandolas como datas.

Mi preguntas serian :

- Tener muchas locales definidas en el codigo afecta al desempeno de la app ?
- Usar una sola usando la clase, se gana algo en el desempeno ?
- O simple y sencillamente es indistinto ?

Gracias y Saludos

Re: Acerca variables locales

Posted: Wed Jun 06, 2012 11:19 am
by hmpaquito
Raymundo,

Sin ser especialista yo no veo el problema cuando una funcion es llamada pocas veces; otra cosas es cuando es llamada en multiples iteraciones; en ese caso, creo que lo mejor, cuando hay muchos parametros o muchas Local es usar un array: sera mas rapido que cualquier clase.

El array se usaria con translates que faciliten la comprension.


#Define MAX_LOCAL 2
#Translate .cCodigo => \[01\]
#Translate .cVar => \[02\]


Uso:

FUNCTION MyFun()
Local aLocal:= Array(MAX_LOCAL)

aLocal.cCodigo:= "000003"
aLocal.cVar := 123.4

...........

Espero que te pueda servir. Saludos

Re: Acerca variables locales

Posted: Wed Jun 06, 2012 11:53 am
by Antonio Linares
Raymundo,

Permíteme una reflexión :-)

Cuando se programa, uno comienza con unas ideas en la mente, y al ir desarrollando, el modelo va tomando forma al mismo tiempo que en nuestra mente se va delimitando con más detalle nuestra idea inicial. Yo soy contrario a un exhaustivo análisis inicial, creo que lo más hermoso es que el mismo programa te indique el camino, y a esto voy:

Las variables y las funciones te van a ir "diciendo" lo que necesitas, y como tienes que hacerlo. Yo no suelo empezar usando clases, sino que espero a que el programa me indique cuales son y como quiere ser modelado :-)

Cuanto más claro esté en tu mente el modelo que estas construyendo, más y más podrás avanzar en su desarrollo. Y es aqui en donde entra la programación orientada al objeto. Cuando aumentan el numero de variables y de funciones en realidad ya puedes empezar a identificar los objetos que estas usando en tu programa, y esta es la clave para simplificarlo y que asi puedas continuar su desarrollo más y más.

No hay problema por el numero de variables que uses, los ordenadores actuales tienen recursos de sobra, la cuestión es: no pueden agruparse esas variables en datos de distintos objetos ? Las funciones que usas no son en realidad métodos de esas clases de objetos ?

No se trata de ocultarlas, sino de agruparlas en los distintos objetos que estamos usando realmente. Dejar que el código te indique lo que hay que hacer :-)

Re: Acerca variables locales

Posted: Wed Jun 06, 2012 1:56 pm
by Raymundo Islas M.
Antonio,
Gracias por el comentario, de hecho, de esa manera ha sido la forma en que han sucedido las cosas :
Empiezo con un proceso base y conforme se requiere o los clientes solicitan algo, voy haciendo los ajustes pertinentes y por ende se incrementa el numero de variables y funciones.
No utilizo la forma de programacion tipo OOP, se me cruzan _ por tantos :: :wink: me apego a la "tradicional" : Una funcion Main, un Init Procedure, un Exit Procedure y las demas son Static Functions. Tienes razon, la mayoria de los clientes tiene pcs "aceptables" salvo raras ocasiones que todavia te encuentras alguno con una pc que tiene solo 512 mb de ram :|

Paquito,
Gracias por tu sugerencia, ese metodo lo uso actualmente con las varibles Static, creo un arreglo y en el meto todas las que uso.

Y sip, las que mas me preocupa optimizar son las funciones de mayor uso, les agradezco a ambos sus opiniones.

Saludos

Re: Acerca variables locales

Posted: Wed Jun 06, 2012 6:21 pm
by carlos vargas
Raymundo, me parece que Daniel habia realizado un clase similar para manejo de variables, y creo era mas eficiente, si no estoy mal creo que usaba hash.
podrias buscarla aca en el foro.

Re: Acerca variables locales

Posted: Wed Jun 06, 2012 7:46 pm
by Daniel Garcia-Gil
Hola

Aqui esta el link a la clase

http://forums.fivetechsupport.com/viewt ... 78#p124578
hmpaquito wrote:Sin ser especialista yo no veo el problema cuando una funcion es llamada pocas veces; otra cosas es cuando es llamada en multiples iteraciones; en ese caso, creo que lo mejor, cuando hay muchos parametros o muchas Local es usar un array: sera mas rapido que cualquier clase.
para tu caso usaria un hash, que son mas rapidos que los arrays y no tendria que usar los translate

ejemplo

FUNCTION MyFun()
Local hLocal := { => }

hLocal[ "CODIGO" ] := "000003"
hLocal[ "VAR" ] := 123.4

aqui les dejo mis dos centavos

Re: Acerca variables locales

Posted: Wed Jun 06, 2012 9:47 pm
by Raymundo Islas M.
Carlos,
De esa clase es la que me refiero, tPublic que internamente usa hash y que es la misma del link que pone Daniel.

Daniel,
Muchas gracias por la clase y la aclaracion de los hash vs arrays. Hasta donde lei los hash solo aplica a Character, Numeric y Date cierto ? Aun siendo asi, estoy del otro lado ya que con eso abarco casi todo lo quiero optimizar.

Gracias y saludos a ambos