un /Cry por las variables

Hablar de cualquier cosa
devnullsp
Posts: 5
Joined: 21 Nov 2017, 09:00

un /Cry por las variables

08 Jun 2018, 06:19

Buenas,

Llevo ya varios meses programando con el autohotkey y la verdad es que estoy encantado, al igual que otros lenguajes como el JavaScript el no tener que definir la variable puede parece que acelera el desarrollo....

Aqui quiero hacer un punto y aparte (.)

La gente mezcla el concepto de variable sin tipo con no identificar la creación de la variable.

En mi experiencia el echo de no permitir definir una variable con antelación (con independencia de su contenido) hace que el numero de errores aumente considerablemente, simplemente con una cambio de una "letrita" al escribir el nombre de la variable.
El problema es mayor aqui, en el autohotkey, ya que muchas veces no genera error sino que te das cuenta que algo va mal, por que en algún momento hay un comportamiento "erratico" que hay que investigar. Yo particulamente ante un error lo primero que hago es mirar muy muy despacio los nombres de las variables.

Si ya se que existe el #Warn pero no da para mucho la verdad....

Tengamos en cuenta que el editor como el SCITE tampoco puede saber si algo es una variable o no por lo que en tiempo de diseño tampoco podemos darnos cuenta del error....

¿Tanto cuesta? la verdad yo pienso que no... simplemente con un #strict (opcional) al principio y que las variables vayan definidas con algo como var xxxxxx o lo que de la gana ya me valdria, o sea que esto fuese opcional.

Esto creo que no afecta a dinamismo y ayudaria a los editores como el Scite y a nosotros para no tener tantos errores en la escritura.

Se que es un imposible, pero permitidme que esto sea un /cry en un general.

Un Saludos,
User avatar
Flipeador
Posts: 959
Joined: 15 Nov 2014, 21:31
GitHub: Flipeador
Location: Argentina
Contact:

Re: un /Cry por las variables

08 Jun 2018, 19:01

Hola devnullsp,
Te entiendo, AutoHotkey v1.x hereda todas las cosas horribles de AutoHotkey Basic, la primera versión de AHK, inicialmente desarrollada por Chris, la cual cuenta con muchas cosas que repelerían a cualquier programador mínimamente decente. Chris tenía buenas intenciones, su objetivo era claro, hacer un lenguaje extremadamente sencillo que cualquier persona sin ningún tipo de conocimientos de programación podría manejar, pues bien, ¿cual es el problema?, el objetivo de Chris de hacer un lenguaje super-sencillo terminó convirtiéndose en algo "asqueroso", donde los errores no existen (son mínimos) siendo completamente omitidos (claro, total, a quien le gusta ver errores, mejor quitémonos y omitamos todos devolviendo una cadena vacía permitiendo al usuario hacer cualquier cosa) y las malas practicas de programación a las que inicialmente te obligaba utilizar el propio lenguaje.

Utilizar la directiva #Warn es algo que recomiendo fuertemente a los usuarios, como así también utilizar la versión 2 de AutoHotkey, en donde la mayoría de estos problemas son resueltos, alejando al usuario de todos estos malos hábitos de programación.
Yo entiendo que, cuando uno inicia en esto de la programación, es completamente normal "enamorarse" de cosas como var=%var2%, de hecho yo empecé con AHK, y mis scripts estaban llenos de este tipo de cosas, me gustaba, pero con el paso del tiempo cuando fui entendiendo realmente la programación (aprendiendo c++), me di cuenta lo mal que estaba esto. Actualmente solo utilizo la versión 2 de AutoHotkey, jamás volví a tocar AutoHotkey v1, salvo para ayudar a otros usuarios.

Otra cosa que recomiendo es definir e inicializar siempre las variables con un valor, como así también declarar el ámbito de las variables en funciones, por ejemplo:

Code: [Select all] [Download] (Untitled.ahk)GeSHi © Codebox Plus

Funcion()
Funcion()
{
MsgBox
Local Variable := "Mi cadena"
MsgBox Variable
}

Como podrás observar, el código de arriba devuelve un error en AutoHotkey v1, no te deja definir una variable como local y asignarle un valor... esto no pasa en la versión 2.
Esto de declarar el ámbito de una variable es para evitar la interferencia con variables globales, definidas como global o la declaración de una clase.
Windws 1♂ Pro 64-Bits I make scripts for AHKv2 (my v2 compiler) & WIN_7+ Spanish Argentina SublimeText 3 & AHKv2 My GDI+ Library

Return to “General”

Who is online

Users browsing this forum: No registered users and 1 guest