You are on page 1of 5

16/10/12

Estilos y Convenios

Estilos y Convenios en VB6


Cuestin de Buenos Modales, Maas, y Ms
Por Harvey Triana, Mayo 1998 Visual Basic clsico siempre ha sido vctima del dilema de s sencillo y a la vez potente . Para ser franco, deberamos llamar a esto La Entropa del Basic. Si nos detenemos a analizar, sencillo o avanzado son conceptos subjetivos y, hoy da, lo importante es lo ponente que sea el lenguaje. Como caso particular, por ejemplo, me perdonaran los programadores avanzados, No considero como avanzado la utilizacin de la API en Visual Basic. Para explicarme mejor, es cuestin de conocer, de saber donde estn las cosas y de como usarlas, - de hecho esto lo hace sencillo. Llamaramos al idioma Chino avanzado?, Para un nio Chino es natural el idioma y no tiene nada de avanzado, mientras que el Espaol 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 cdigo, ya sea que escribas en C++, Visual Basic, Delphi, etc. No es mi intensin ni quiero plantear una discusin que indudablemente tiene puntos de vista personales. Bien dicho Nietzsche, - somos hiperboreos. Despus de esta irreverente introduccin, les presentar mi estilo y conveniencias para programar con Visual Basic. Tendamos a ser formales pero no formalistas. Existe una convencin que tiene como mil aos y le llama norma Hngara. A grosso modo, la norma Hngara (dicen que la creo un desarrollador Hngaro de MS) es un conjunto de normas que todos seguimos ms o menos y se aplica en cada lenguaje de programacin moderna. No voy a exponer esta norma ni mucho menos, dar mis retoques que les pueden servir para entender mejor mis cdigos, seguir mis buenas maas, o simplemente para nada.

Del Estilo
Declaracin de Variables. Primer mandamiento: Option Explicit. Por qu aun no es una norma predeterminada en Visual Basic?, O quiz an obligatoria? - Si, por aquello del abuelo Basic y el ribete de fcil, a estas alturas no merece suficiente justificacin. 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 compilacin completa en el entorno de desarrollo se logra con Ctrl+F5). Tipo Predeterminado. 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 gustara que Visual Basic lo usara como norma predeterminada, aunque s que nunca ser una norma Basic. La razn bsica 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 ms aun en el cdigo 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. Contadores e Indices de Matriz. Adopte una vieja norma de FORTRAN (mi primer lenguaje) y es que mis contadores son i, j, k, l, m, n (para lo nico que se uso estas variables), i-l para ndices de arreglo (array) y n-m para nmero de elementos de los arreglos,. Nunca he prescindido de esta regla. La norma Hngara dice que un contador se precede con i, p.e. iContadorX, - esto es demasiado para m, aunque cumplo la regla para un tipo definido, he aqu un ejemplo: PiaeTp utIFed rvt ye d_Dil INm A Srn *2 Dae s tig 4
vexpert.mvps.org/articles/estilos.htm

IVleA Ln Dau s og

1/5

16/10/12

Estilos y Convenios

IVleA Ln Dau s og EdTp n ye PiaeI( A utIFed nD iD rvt D) s d_Dil, I, I Nota. El prefijo udt es User Define Type (norma Hngara). La variable nID contendr el nmero de elementos del arreglo ID, mientras iID ser el contador de incide (ambos enteros cortos dada la clusula DefInt A-Z). Caracteres de Tipo. Olvidmonos de usar caracteres para definir tipos primitivos (norma que sigo desde mis primeros pasos con QuickBasic). Son horriblemente feos y recuerdan los tiempos en que Basic era negro y estrenaban Nosferatu. Ni siquiera recuero los caracteres. Valga aclarar que las funciones intrnsecas para sartas tienen un rendimiento ligeramente mejor cuando empleas su carcter de tipo $, es decir, Mid$(...) es ms rpida que Mid(...) (para variantes y sartas). Para ser franco ni siquiera uso el tal $ en este caso. Pienso de Visual Basic debiera ser estricto y suministrar StrMid(...) y VarMid(...); Tal vez esta seria la nica manera para enterrar ese fantasma de los caracteres para tipos. Nombres y Declaracin de Variables. No uso prefijos para los tipos primitivos (bsicos). Posiblemente esta sea mi peor mana, pero no dar marcha atrs. Me basta con la declaracin de la variable. Pienso que es ms elegante Dim MyWord que Dim strMyWord o Dim sWyWord. Adems, si la variable empieza con una mayscula, s que es un tipo bsico (vaya, me lleve un punto a favor). Respecto a la declaracin de variables, siempre uso una identacin especial para alinear el As Tipo, por ejemplo: PiaeUeEty rvt srnr A Boen s ola PiaeRpsto rvt eoiin A Boen s ola PiaeRcrs rvt eod A Vrat s ain PiaeJmRsz rvt upeie A Boen s ola PiaeAtDfut( A Itgr rvt uoeals) s nee Esto da mucha elegancia al cdigo, y por dems facilidad de lectura. Por lo menos me gustara que los programadores siguieran esta norma. Los Comentarios. Esta si es bien particular. Si han seguido mis lneas, habrn notado que precedo los comentarios con doble barra o Slash. La historia de esto es la siguiente. Hace como un ao o ms estudie J++ para ver que era el alboroto. Recuerdo que hice una aplicacin sencilla y una dos miniaplicaciones (applets), no sin intentar y depurar mucho y recompilar mil veces (nada menos que acceso a datos usando un COM de Java). Bien, en esta tarea imprima el cdigo de vez en cuando para leerlo cmodamente, y de pronto me di cuenta de algo especial, cmo resaltan y se ven de bonitos los comentarios con esas dos patitas ! - Desde ese momento uso doble barra en los comentarios Visual Basic, para darle apoyo a esa estpida comillita que nos dejaron. A veces uso '** en vez de '// para recordarme que debo revisar este bloque, y regresar al rpidamente con comandos de Bsqueda en el IDE. Otra cosa que me parece muy bien presentada es alinear los comentarios cuando se escriben a la derecha, p.e.: '/ofgrc DGi /Cniuain Brd PiaeCleci( A Srn '/ateelstxo d l lnaEtd rvt oDsrp) s tig /Mnin o ets e a e sao PiaeClnh( rvt oAco) A Itgr'/ateee acod lsclma s nee /Mnin l nh e a ouns PiaeIdcDLsaA Itgr'/nieata d ualsadslgbe rvt nieeit s nee /Idc cul e n it epeal Nombres de Objetos. Este es mi ms cercano encuentro con la norma Hngara (en general he visto que la mayora de los programadores Visual Basic la siguen). La norma dice que por ejemplo un TextBox se bebiera bautizar txtNombre, pero en mi rebelda adopte un txt_Nombre. Para ser franco algo me dice que ese txt, pegado, mancha mi nombre del control y en cierta manera lo tergiversa. Bendito seas Visual Basic que nos dejaste incluir subrayado en los nombres de variables aunque no sea desde el principio. La regla aplica a cualquier objeto, por supuesto incluidos los controles, y son tres caracteres mnemotcnicos en minscula para el nombre del objeto. Generalmente uso esta misma nemotecnia para declarar variables generales de objeto, por ejemplo, Dim frm As Form, Dim ctl as Control, Dim tbr As ToolBar, etc. Como una excepcin, me paso por la faja la regla del prefijo con algunos objetos DAO. Por ultimo, por favor, jamas dejar nombres como Text1, salvo para ejemplos muy sencillos, porque pobre del que quiera leer su cdigo. Clases. En general, sigo las normas muy similares a las de Java (y en cierta manera Visual Basic) cuando creo
vexpert.mvps.org/articles/estilos.htm 2/5

16/10/12

Estilos y Convenios

Clases. En general, sigo las normas muy similares a las de Java (y en cierta manera Visual Basic) cuando creo clases. Como una particularidad, nunca precedo el nombre de una clase con la letra C. En particular mis nombres de clases tienen el estilo cls_NombreDeClase, y para el componente com_NombreDeComponente. Existen michos otros detalles menores que no merece nombrar. Como podrn deducir, hay que hacer las cosas sencillas pero no ms (sabia frase).

Resumen de Norma Hngara


Bien, si desean seguir al pie de la letra la norma Hngara he aqu lo bsico: Convenio Los nombres de clases empiezan con letra capital. Los datos miembro son precedidos con m_ Ejemplo MathComplex Private m_Text

Los objetos comienzan con letra minscula y tienden a Dim my MathComplex As New MathComplex incluir el nombre de la clase. Los tipos primitivos preceden con un carcter convenido. Dim bFlag As Boolean Dim yByte As Byte Dim sWord As String Dim lCount As Long Dim nCount As Integer Dim fValue As Single Dim dValue As Double Dim vPointer As Variant Public Const Pi As Double = 3.14159

Las constantes se escriben en formato combinado maysculas minsculas. Excepto en el caso de constantes para funciones API en que el nombre de la constante va en maysculas. Los Mtodos y Propiedades inician con mayscula y no usan caracteres de tipo. Variable global (de mdulo) Formulario Dialogo Modal

Public Property Let Text(New_Text As String) Public gsMyString As String Private dlgNombreForm As frmNombreForm

Una parte que encontr un poco diferente de la norma Hngara es la siguiente. Prefijos: C: Clase, F: Formulario, T: Tipo, X: Control ActiveX, D: Documento ActiveX, P: Pgina de Propiedades, E: Enumeracin, Y: Clase de interfaz para Implements, M: Mdulo estndar, G: Mdulo de clase de objeto global. Datos de Programacin Avanzada con Visual Basic de McKinney. La documentacin visual Basic trae algunos convenios para componentes en los temas "Directrices ara asignacin de nombres de objetos"y en "Estndares y directrices". Creo que los documentos tambin se encuentran en Libros en Pantalla.

Pecados de Visual Basic


Visual Basic dentro de su inconmensurable elegancia, es permisible y deja que se le den patadas como estas: Rem. La lista la cabeza Rem, posiblemente los jvenes no sepan que Rem es un comando para comentarios (que vergenza). No obstante, seria genial si Visual Basic en futuras versiones nos entregara la siguiente posibilidad: Rm e Et e u cmnai d mca se s n oetro e uhs Lna es

vexpert.mvps.org/articles/estilos.htm

3/5

16/10/12

Estilos y Convenios

Lna es EdRm n e Carencia de Iniciacin de Variables. A estas alturas ya deberian porder hacerse cosas como esta: DmxA Snl =311 i s ige .46 Aunque siempre existe la posibilidad de iniciar variables en cdigo 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 segn he ledo 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 esttica, 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 identacin me lleva a extremos, entonces bifurc con a una subrutina con Gosub, en otro caso tendra 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 fcil al cdigo). De otra parte, On Gosub realmente paso a la historia (gracias a Select Case). El Operador Diferente. Afortunadamente en muy pocas ocasiones del cdigo moderno Basic he visto el operador: <>. Es tan poco esttico que ha sido reemplazado por la palabra clave Not, es decir, Exp1<>Exp2, por Not Exp1 = Exp2. La segunda sintaxis es ms inteligente y clara. Cul es ms eficiente, probablemente la diferencia sea nfima, sin embargo si le preocupa Not esta documentado como un operador y no como una funcin. 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 asignacin. Me explico, para un compilador comparar y asignar son dos ordenes distintas, esto lo entendieron los dems lenguajes como C y Pascal desde su nacimiento, desafortunadamente Basic por hacer fcil 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 ms 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 lgico como una asignacin?, Simplemente nadie, Visual Basic llevara su pecado siempre. Caracteres de Tipo. Creo que ya di una buena disertacin 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. Lneas de Cdigo con Nmeros. Por que es posible hacer esto?, Qu pretenden los desarrolladores de Visual Basic manteniendo este legado totalmente obsoleto?. No hay ms que decir. Tienen que haber ms 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 programacin para aplicaciones de gestin ms potente que exista, O no lo es ya?.

Corolario
Cada uno tiene su estilo y es vlido. 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
vexpert.mvps.org/articles/estilos.htm 4/5

16/10/12

Estilos y Convenios

lograremos comunicarnos mejor. Mi estilo y convenios no son una panacea pero me ayudan bastante y me siento satisfecho con la formalidad y esttica del cdigo, as de esta manera pienso que les puede suceder a otros.

vexpert.mvps.org/articles/estilos.htm

5/5

You might also like