Errores comunes programando en Autohotkey

Hablar de cualquier cosa

Moderator: Flipeador

devnullsp
Posts: 73
Joined: 21 Nov 2017, 09:00

Errores comunes programando en Autohotkey

Post by devnullsp » 06 Feb 2019, 14:57

Buenas,

No encuentro donde se hable de la herramienta así que lo pego aqui y luego si no es que el moderador lo mueva.

Estoy trabajando con gente y como vengo de C y de Javascript (ademas de otras decenas de lenguajes) estoy acostumbrado a no tener autocompletar. Pero reconozco que la mayoria de la gente tiene bastantes problemas para encontrar problemas en el codigo debido a la falta no ya de tipos, sino simplemente a poder controlar que no te hayas equivocado al escribir una variable o bien que las asignaciones en vez de := hayas puesto =

No se si existirá pero hay alguna manera de poner un tag #strict o algo similar que identifique como erroneas variables que no hayan sido definidas con anterioridad? aunquesea cargando con global y local ( o con var si fuese).

El problema es que en tiempo de ejecución no da problemas hasta que has detectado un comportamiento anómalo o algo no te funciona bien.

Yo a mis chicos les digo que antes cualquier error busquen estas dos cosas una variable mal escrita o bien una asignación erronea.

Es que incluso una variable usada como parametro de llamada a a una función si no existe es creada (supongo que con "") por lo que no te enteras hasta mucho más tarde y en algunos casos cuando ya es tarde la has liado....

Por otra parte ver que opinais sobre la versión 2, merece la pena hacer el esfuerzo en cambiarse o bien mejor esperar a que esté "madura" lo digo en entornos productivos. O simplemente lo que funciona funciona y lo que no, no por lo que si te va mejor pasar a al 2 y dejar la 1.

Un Saludo,

User avatar
Flipeador
Posts: 1204
Joined: 15 Nov 2014, 21:31
Location: Argentina
Contact:

Re: Errores comunes programando en Autohotkey

Post by Flipeador » 06 Feb 2019, 17:22

Hola,
controlar que no te hayas equivocado al escribir una variable
Pienso que es un error muy común, me ha ocurrido muchas veces al escribir rápido. En el editor que utilizo, cuando seleccionas una palabra automáticamente te marca las otras idénticas, eso me ah ayudado mucho para controlar que los nombres sean los correctos, sobre todo cuando contiene las letras Li.
que las asignaciones en vez de := hayas puesto =
Esto no ocurre en v2. Algo como a = 2 genera un mensaje de error. Es una de las tantas cosas malas de v1.
No se si existirá pero hay alguna manera de poner un tag #strict o algo similar que identifique como erroneas variables que no hayan sido definidas con anterioridad?
Yo siempre utilizo la directiva #Warn (todas las advertencias) en todos mis scripts, ayuda ah detectar ciertos errores y pienso a utilizar mejores prácticas de programación. Como a la hora de utilizar variables que no hayan sido declaradas e inicializadas con un valor antes. En la documentación hay ejemplos.
Considero muy buena práctica de programación definir las variables que se van a utilizar antes, y especificar local si solo van a ser utilizadas dentro de la función.
Por otra parte ver que opinais sobre la versión 2, merece la pena hacer el esfuerzo en cambiarse o bien mejor esperar a que esté "madura" lo digo en entornos productivos. O simplemente lo que funciona funciona y lo que no, no por lo que si te va mejor pasar a al 2 y dejar la 1.
v2 funciona, y muy bien, considero que lo suficiente como para ser utilizada como la v1. Actualmente se encuentra en fase Alpha, sin embargo yo la vengo utilizando durante mas de 2 años, y jamás me encontré con problemas graves específicos de esta versión (por el hecho de ser Alpha).
El único problema que le veo a v2, son los cambios drásticos necesarios que pueden venir con las próximas actualizaciones (si es que se sigue actualizando), lo que significaría reescribir gran parte de tu código si quieres seguir recibiendo actualizaciones y mejoras. Uno de los cambios más esperados, por ejemplo (dejando de lado el multi-hilo, que probablemente nunca llegue a la versión de lexikos), es uno que se esta discutiendo aquí, junto con la posibilidad de crear estructuras, algo múy útil si por ejemplo trabajamos con Direct2D/3D.
Dos buenas razones para utilizar v2: tiene un mejor rendimiento, no recuerdo ahora que tema, pero vi uno donde v1 no funcionaba correctamente, creo que dejaba de responder, y en v2 si funcionaba sin problemas. Además, nos alejamos de todas esas malas practicas de programación qué, de alguna manera, promueve v1.

Pienso que el uso del operador % actualmente no favorece en nada a la hora de detectar errores y escribir un código limpio. Preferiría que este operador sea cambiado para realizar la operación módulo en su lugar.

Sobre de si merece la pena o no, diría que depende del script que vayas a escribir, uno que utilice la funcionalidad principal o simple, como es la asignación de teclas y esas cosas, diría que sí, no me imagino que clase de cambios podrían romper estos scripts a futuro. Pero si se van a utilizar DllCall, mucho lo que es Gui, VarSetCapacity, ahí la cosa ya cambia, y podría ser necesario reescribir la gran parte, o todo. Relacionado: https://jacksautohotkeyblog.wordpress.com/2018/01/08/autohotkey-version-2-0-should-i-wait-for-it/.

devnullsp
Posts: 73
Joined: 21 Nov 2017, 09:00

Re: Errores comunes programando en Autohotkey

Post by devnullsp » 12 Feb 2019, 12:35

Gracias,

Sobre el multihilo, habia visto con anterioridad una versión que soporta algo similar... o que estaba en alfa. La verdad es que una de las cosas que más me lia son las versiones en este producto, que si _L que si _A.... Lo cierto es que la mitad del tiempo tengo dudas sobre de qué versión están tratando.

Creo que por ahora nos quedaremos con la v1 ya que no puedo andar pidiendole a la gente que cambie y esperar y rezar para que la v2 no tarde 500 años....

Por cierto, me ha sido muy util el consejo del #warn, aunque con "all" se queja por todo XD

Saludos,

Post Reply

Return to “General”