Estilos y Convenios en VB6Cuestión de Buenos Modales, Mañas, y MásPor Harvey Triana, Mayo 1998 Visual Basic clásico siempre ha sido víctima del dilema de « sé sencillo y a la vez potente ». Para ser franco, deberíamos llamar a esto La Entropía del Basic. Si nos detenemos a analizar, sencillo o avanzado son conceptos subjetivos y, hoy día, lo importante es lo ponente que sea el lenguaje. Como caso particular, por ejemplo, me perdonaran los programadores avanzados, - No considero como avanzado la utilización de la API en Visual Basic. Para explicarme mejor, es cuestión de conocer, de saber donde están las cosas y de como usarlas, - de hecho esto lo hace sencillo. ¿Llamaríamos al idioma Chino avanzado?, Para un niño Chino es natural el idioma y no tiene nada de avanzado, mientras que el Español debe parecerle un mar de confusiones. Supongo que me hice entender. Si me preguntas ¿qué es avanzado?, Diré que avanzado es idear algoritmos y llevarlo al código, ya sea que escribas en C++, Visual Basic, Delphi, etc. No es mi intensión ni quiero plantear una discusión que indudablemente tiene puntos de vista personales. Bien dicho Nietzsche, - somos hiperboreos. Después de esta irreverente introducción, les presentaré mi estilo y conveniencias para programar con Visual Basic. Tendamos a ser formales pero no formalistas. Existe una convención que tiene como mil años y le llama norma Húngara. A grosso modo, la norma Húngara (dicen que la creo un desarrollador Húngaro de MS) es un conjunto de normas que todos seguimos más o menos y se aplica en cada lenguaje de programación moderna. No voy a exponer esta norma ni mucho menos, daré mis retoques que les pueden servir para entender mejor mis códigos, seguir mis buenas mañas, o simplemente para nada.
. Primer mandamiento: Option Explicit. ¿Por qué aun no es una norma predeterminada en Visual Basic?, O quizá aún ¿obligatoria? - Si, por aquello del abuelo Basic y el ribete de fácil, a estas alturas no merece suficiente justificación. Creo que programador Visual Basic que se respete usa Option Explicit, aunque hay casos de casos. Creo que se sabe de sobra los beneficios de usar la directiva Option Explicit. Valga mencionar que Option Explicit no te asegura que avisará de inmediato cuando una variable no ha sido declarada, Visual Basic lo hará cuando se intente usar la variable no declarada, no obstante el compilador verificará por completo la orden Option Explicit (la compilación completa en el entorno de desarrollo se logra con Ctrl+F5). . Declaro por defecto todas las variables de tipo entero corto, es decir, al principio de cada modulo uso DefLng A-Z. Así como C, me gustaría que Visual Basic lo usara como norma predeterminada, aunque sé que nunca será una norma Basic. La razón básica es que usamos muchas variables es de tipo entero y bastará un Dim miVar, Private miVar, Static miVar, etc. Sobra decir que un entero ya sea largo o corto tiene una eficiencia abismalmente superior frente a un Variant que apunta a un Integer, y más aun en el código compilado (modo nativo). NOTA. DefLng A-Z es preferible a DefInt A-Z en sistemas de 32 Bits (el sistema nativo de memoria para 32 Bist agrega complejidad al tipo Integer, lo que lo hace menos eficiente). En sistemas de 16 Bits DefInt A-Z es el indicado.
Private UserEntry As Boolean Private Reposition As Boolean Private Records As Variant Private JumpResize As Boolean Private AutoDefaults() As Integer
'//Configuración DBGrid Private ColDescrip() As String '//Mantiene los textos de la línea Estado Private ColAncho() As Integer '//Mantiene el ancho de las columnas Private IndiceDeLista As Integer '//Indice actual de una lista desplegable
Bien, si desean seguir al pie de la letra la norma Húngara he aquí lo básico:
La documentación visual Basic trae algunos convenios para componentes en los temas "Directrices ara asignación de nombres de objetos"y en "Estándares y directrices". Creo que los documentos también se encuentran en Libros en Pantalla.
Visual Basic dentro de su inconmensurable elegancia, es permisible y deja que se le den patadas como estas:
Rem
Este es un comentario de muchas
Líneas
End Rem
Carencia de Iniciación de Variables . A estas alturas ya deberian porder hacerse cosas como esta:
Aunque siempre existe la posibilidad de iniciar variables en código aparte, es una carencia que no perdonamos los programadores de recorrido. Visual Basic es el único lenguaje que le hace falta esto, pero ya casi. While...Wend . Tendremos que hacer un exorcismo para librarnos de este bloque estructurado. Do...Loop esta tan elegante y potente que según he leído es envidiado por otros lenguajes, incluyendo C y Pascal.Dim a Nivel de Modulo . Dim a nivel de modulo me parece obsoleto y poco formal. Global es cuento parte y deberá olvidarse por completo (Visual Basic está tan apenado con Global que ni siquiera lo documenta en las ultimas versiones). Por simple estética, usemos Private o Public en este caso.Goto en Contextos fuera de Captura de Errores y el viejo Gosub . Goto será perpetuo mientras existan errores inevitables. Creo que ya no existen programadores Visual Basic que usen Goto en otro contexto. Respeto a Gosub, tengo que ser sincero y confesar que aunque pocas veces lo uso, aun me hace falta; el caso particular es cuando dentro de un procedimiento la identación me lleva a extremos, entonces bifurcó con a una subrutina con Gosub, en otro caso tendría que llamar a un procedimiento con todas las variables declaradas en el que trabajo, y esto sinceramente me parece tonto. La salida con Gusub...Return en este caso me parece limpia y útil (le da lectura fácil al código). De otra parte, On Gosub realmente paso a la historia (gracias a Select Case).El Operador Diferente. Afortunadamente en muy pocas ocasiones del código moderno Basic he visto el operador: <>. Es tan poco estético que ha sido reemplazado por la palabra clave Not, es decir, Exp1<>Exp2, por Not Exp1 = Exp2. La segunda sintaxis es más inteligente y clara. ¿Cuál es más eficiente, probablemente la diferencia sea ínfima, sin embargo si le preocupa Not esta documentado como un operador y no como una función. El operador <> no lo uso desde que tengo memoria. El Pecado Let. Visual Basic arrastra el pecado de Basic de no usar un operador diferente para igualdad y para asignación. Me explico, para un compilador comparar y asignar son dos ordenes distintas, esto lo entendieron los demás lenguajes como C y Pascal desde su nacimiento, desafortunadamente Basic por hacer fácil e intuitivas las cosas dejo correr el operador = para ambos casos, y optó por una sentencia Let como una alternativa para asignaciones. La pregunta importante es: cual es más eficiente: (1) x = 1, y (2) Let x = 1. La respuesta le sorprenderá, pues (2) es mejor interpretado por el compilador. ¿Pero quien se va a ponerse a usar Let en algo tan lógico como una asignación?, Simplemente nadie, Visual Basic llevara su pecado siempre. Caracteres de Tipo. Creo que ya di una buena disertación de los dichosos caracteres de tipo. Me queda la esperanza que en futuras versiones Visual Basic los elimine del lenguaje.Option Base. Una buena norma en Visual Basic es siempre declarar los arreglos especificando las dimensiones inferior y superior, es decir Dim x(IndiceInicio To IndiceFinal) As Typo. Me confieso, ni siquiera me acuerdo para que es Option Base ni me interesa.Líneas de Código con Números. ¿Por que es posible hacer esto?, ¿Qué pretenden los desarrolladores de Visual Basic manteniendo este legado totalmente obsoleto?. No hay más que decir.Tienen que haber más cosas obsoletas en Visual Basic, que en este momento no recuerdo. Creo que es suficiente. Para no comprometerme negativamente, diré que hablar de los aciertos de Visual Basic seria interminable, y solo basta leer los manuales para salir de dudas. Pienso que Visual Basic seguirá evolucionando de tal manera que será el lenguaje de programación para aplicaciones de gestión más potente que exista, ¿O no lo es ya?. Cada uno tiene su estilo y es válido. Simplemente, si nos ponemos de acuerdo en ciertas cosas, los programadores Visual Basic lograremos comunicarnos mejor. Mi estilo y convenios no son una panacea pero me ayudan bastante y me siento satisfecho con la formalidad y estética del código, así de esta manera pienso que les puede suceder a otros. |