Re: Nombre De Las Variables.Traducciones Y Demas Palabras Rebuscadas
Hola Shell, viene bien tu consulta para revisar un poco este tema.
Este tipo de notaciones o convenciones de nombre en las que se pone énfasis en que el nombre contenga prefijos que indiquen su tipo de datos, proviene de lenguajes como C que son débilmente tipificados y en los que el ámbito de una variable puede ser muy amplio.
Si en un programa se usan variables globales resulta muy importante saber con sólo leer su nombre qué tipo de datos se pueden almacenar en ella, porque la declaración de las variables no suele estar a la vista del programador cuando éste escribe código que las usa.
Si lenguaje es débilmente tipificado o directamente no tipificado, puede resultar aún más importante porque de lo contrario el programador podría guardar datos de tipos incorrectos en la variable y ello llevaría a un error que sólo se manifestaría en tiempo de ejecución.
Ahora bien, en
gambas las variables globales no existen y si el programador comprende mínimamente que la mejor forma de tratar con la complejidad es hacer que las unidades de programa (módulos, funciones, procedimientos, clases, métodos) sean realmente lo más pequeñas e independientes que sea posible, entonces, el problema desaparece.
Veamos, si al escribir un método o función el programador sabe que ese código debe ser breve (entre 15 y 20 líneas para dar una métrica fácilmente comprensible), entonces siempre tendrá a la vista la declaración de las variables locales, por lo que no es necesario usar prefijos que indiquen su tipo de datos.
Si al escribir una clase el programador aplica la misma idea (no más de 50 líneas) resulta que la declaración de las variables también queda a la vista. Además fácilmente puede utilizar la característica de ocultamiento del editor de código para sólo ver las signaturas de los métodos y la declaración de variables de la clase. Lo mismo aplica si lo que está escribiendo es un módulo.
Entonces, no es necesaria una convención de nombres compleja. Lo más importante usar UpperCamelCase o lowerCamelCase para que los nombres sean fácilmente legibles.
Hay otra cuestión y es que
gambas no maneja espacios de nombres. El problema se da, por ejemplo, cuando se debe declarar una propiedad y una variable privada asociada o un parámetro real cuyo valor se debe asignar a una variable privada, porque no pueden tener el mismo nombre y no se pueden distinguir usando una letra mayúscula o minúscula en una de ellas (porque
gambas no es "case sensitive"):
Entonces, estamos obligados a escribir dos identificadores diferentes y aprovechando esa situación lo que solemos hacer es colocar como prefijo de la variable privada un signo pesos:
Pero tal convención no es necesaria realmente para indicar el ámbito de la variable (que en este caso es privada) sino para evitar la doble declaración del mismo identificador.
Otro ejemplo típico es:
El caso anterior es problemático porque gambas no lo maneja bien. gambas no nos advertirá de ningún problema, pero lo que obtendremos es un error lógico: al ejecutar el método DiTuNombre la variable Nombre contiene una cadena vacía.
En conclusión, las convenciones de nombres que utilizan prefijos para indicar el tipo de datos de una variable o su ámbito no son realmente necesarias si el programador escribe código bien modularizado. Sin embargo, necesitamos recordar que debemos usar identificadores distintos para una propiedad y su variable privada asociada o para un parámetro cuyo valor inicializará a una varible privada.
Un caso en que sí puede ser útil utilizar un prefijo es para distinguir arrays o colecciones de variables simples porque distinguirlas sólo con Plural/Singular puede ser propenso a errores.
Private $Persona AS Persona
'La a significa Array, si fuera una colección usaríamos $cPersonas
Private $aPersonas AS Persona[]
Public sub HagoAlgo()
...
'Ahora es un poquito más difícil cometer este error:
$Persona.Count
End
Saludos.
PD: este tema deberías haberlo puesto en el foro General no en OffTopic