Guide de développement VB

 

Table des matières

 

1. - Représentation des formats

2. - Règles de nommage Visual Basic

2.1 - Choix des préfixes de contrôles.

2.2 - Choix des préfixes d’objets d’accès aux données

2.3 - Choix des préfixes de menus

2.4 - Choix des préfixes pour les autres contrôles

2.5 - Portée des variables

2.6 - Préfixes de portée de variables

2.7 - Constantes

2.8 - Variables

2.9 - Type de données des variables

2.10 - Noms de procédures et de variables descriptifs

2.11 - Types définis par l'utilisateur

 

 

 

1 - Représentation des formats

Le tableau suivant présente les types de données reconnus en précisant la taille des enregistrements et la plage des valeurs.

Type de données

Taille d’enregistrement

Plage

Byte 1 octet 0 à 255
Boolean 2 octets True ou False
Integer 2 octets -32 768 à 32 767
Long (entier long) 4 octets -2 147 483 648 à 2 147 483 647
Single (à virgule flottante en simple précision) 4 octets -3,402823E38 à -1,401298E-45 pour les valeurs négatives ;

1,401298E-45 à 3,402823E38 pour les valeurs positives

Double (à virgule flottante en double précision) 8 octets -1,79769313486232E308 à
-4,94065645841247E-324 pour les valeurs négatives ;

4,94065645841247E-324 à 1,79769313486232E308 pour les valeurs positives

Currency (entier à décalage) 8 octets -922 337 203 685 477,5808 à 922 337 203 685 477,5807
Decimal 14 octets +/-79 228 162 514 264 337 593 543 950 335 sans séparateur décimal ;
+/-7,9 228 162 514 264 337 593 543 950 335 avec 28 chiffres à droite du séparateur décimal  ;

le plus petit nombre différent de zéro est +/-0.0000000000000000000000000001.

Date 8 octets 1er janvier 100 au 31 décembre 9999
Object 4 octets Toute référence à des données de type Object
String
(longueur variable)
10 octets + longueur de la chaîne 0 à environ 2 milliards
String
(longueur fixe)
Longueur de la chaîne 1 à environ 65  400
Variant (nombres) 16 octets Toute valeur numérique, avec la même plage de valeurs qu’une donnée de type Double
Variant (caractères) 22 octets + longueur de la chaîne Même plage de valeurs qu’une donnée de type String de longueur variable
Type défini par l’utilisateur
(avec Type)
En fonction des éléments La plage de valeurs de chaque élément correspond à celle de son type de données.

Note Quel que soit le type de données, les tableaux nécessitent 20 octets de mémoire, auxquels viennent s’ajouter quatre octets pour chaque dimension et le nombre d’octets occupés par les données. L’espace occupé en mémoire par les données peut être calculé en multipliant le nombre d’éléments par la taille de chacun d’eux. Par exemple, les données stockées dans un tableau unidimensionnel constitué de quatre éléments de type Integer de deux octets chacun occupent huit octets. Ajoutés aux 24 octets d’espace mémoire de base, ces huit octets de données portent la mémoire totale nécessaire pour le tableau à 32 octets.

Une variable de type Variant contenant un tableau nécessite 12 octets de plus qu’un tableau seul.

 

2 - Règles de nommage Visual Basic

Les noms d'objets doivent comporter un préfixe cohérent, permettant d'identifier facilement leur type. Vous trouverez ci-dessous la liste des conventions relatives à certains objets pris en charge par Visual Basic.

2.1 - choix des préfixes de contrôles.

 

  1. Objet

    Nom

    Prefixe

    Exemple

    Barre de défilement verticale (VscrollBar) vsb vsbRate
    Bouton animé (AniPushButton) ani aniMailBox
    Bouton de commande (CommandButton) cmd cmdExit
    Cadre (Frame) fra fraLanguage
    Case à cocher (CheckBox) chk chkReadOnly
    Boites de dialogue communes (CommonDialog) dlg dlgFileOpen
    Communications (MSComm) com comFax
    Plan (Outline) out outOrgChart
    Contrôle (Control) (type spécifique inconnu) ctr ctrCurrent
    Contrôle de données (Data) dat datBiblio
    État (CrystalReport) rpt rptQtr1Earnings
    État de la touche (Mhstate) key keyCaps
    Étiquette (Label) lbl lblHelpMessage
    Feuille (Form) frm frmEntry
    Feuille MDI fille (MDI child form) mdi mdiNote
    Forme (Shape) shp shpCircle
    Graphique (Graph) gra graRevenue
    Grille (Grid) grd grdPrices
    Grille dépendante (DBGrid) dbgrd dbgrdQueryResult
    Image   img imgIcon
    Image (Picture) pic picVGA
    Liste d’images (ImageList) ils ilsAllIcons
    Indicateur (Gauge) gau gauStatus
    Ligne (Line) lin linVertical
    Liste de fichiers (FileListBox) fil filSource
    Liste de dossiers (DirListBox) dir dirSource
    Liste de lecteurs (DriveList Box) drv drvTarget
    Liste modifiable dépendante (DBCombo) dbcbo dbcboLanguage
    Affichage de listes (ListView) lvw lvwHeadings
    Multimédia MCI   mci mciVideo
    Menu   mnu mnuFileOpen
    Message MAPI (MAPI message) mpm mpmSentMessage
    Minuterie (Timer) tmr tmrAlarm
    MS Flex grid   msg msgClients
    Onglet (MSTab) mst mstFirst
    OLE   ole oleWorksheet
    Panneau 3D (3D Panel) pnl pnlGroup
    Pen Bedit   bed bedFirstName
    Pen Hedit   hed hedSignature
    Pen ink   ink inkMap
    Jeu d’image (PictureClip) clp clpToolbar
    Barre de progression (ProgressBar) prg prgLoadFile
    Éditeur RTF (RichTextBox) rtf rtfReport
    Session MAPI (MAPI session) mps mpsSession
    Curseur (Slider) sld sldScale
    Compteur (SpinButton) spn spnPages
    Barre d’état (StatusBar) sta staDateTime
    Barre d’onglets (TabStrip) tab tabOptions
    Barre d’outils (Toolbar) tlb tlbActions
    Affichage de l’arborescence (TreeView) tre treOrganization
    Barre de défilement (UpDown) upd updDirection
    Zone de liste (ListBox) lst lstPolicyCodes
    Zone de liste dépendante (Dblist) dblst dblstJobType
    zone de liste déroulante (ComboBox) cbo cboEnglish
    Zone de texte (TextBox) txt txtLastName

 

2.2 - Choix des préfixes d’objets d’accès aux données (DAO)

Utilisez les préfixes suivants pour signaler des objets d’accès aux données.

Objet de base de données Préfixe Exemple
Container con conReports
Database db dbAccounts
DBEngine dbe dbeJet
Document doc docSalesReport
Field fld fldAddress
Group grp grpFinance
Index idx idxAge
Parameter prm prmJobCode
QueryDef qry qrySalesByRegion
Recordset rec recForecast
Relation rel relEmployeeDept
TableDef tbd tbdCustomers
User usr usrNew
Workspace wsp wspMine

Exemples :

Dim dbBiblio As Database
Dim recPubsInNY As Recordset, strSQLStmt As String
Const DB_READONLY = 4’ Définit la constante.
‘Ouvre la base de données.
Set dbBiblio = OpenDatabase(" BIBLIO.MDB ")
‘ Définit le texte de l’instruction SQL.
StrSQLStmt = " SELECT * FROM Publishers WHERE State = ‘NY’ "
‘ Crée l’objet Recordset.
Set recPubsInNY = db.OpenRecordset(strSQLStmt, dbReadOnly)

 

2.3 - Choix des préfixes de menus

Les applications utilisent généralement de nombreux contrôles de menus ; il est donc utile d'adopter pour ces contrôles un ensemble unique de conventions d'affectation de noms. Nous vous conseillons d'ajouter à l'étiquette initiale "mnu " des préfixes de contrôles de menus un préfixe supplémentaire pour chaque niveau d'imbrication, le libellé de menu final figurant à la fin de la chaîne de nom. Le tableau suivant fournit quelques exemples.

Séquence de libellés de menu Nom du gestionnaire de menu
Fichier Ouvrir mnuFileOpen
Fichier Envoyer Email mnuFileSendEmail
Fichier Envoyer télécopie mnuFileSendFax
Format caractère mnuFormatCharacter
Index d'Aide mnuHelpContents

Si vous utilisez cette convention d'affectation de noms, tous les membres d'un menu donné figurent les uns à côté des autres dans la fenêtre Propriétés de Visual Basic. De plus, les noms de contrôles de menus permettent d'identifier facilement les éléments de menu auxquels ils sont associés.

 

2.4 - Choix de préfixes pour les autres contrôles

Pour les contrôles qui ne figurent pas ci-dessus, utilisez un préfixe standard, constitué de deux ou trois caractères. Utilisez plus de trois caractères uniquement si cela s’impose pour des raisons de clarté.

Pour les contrôles dérivés ou modifiés, par exemple, ajoutez des lettres aux préfixes ci-dessus afin d’éviter toute confusion quant au contrôle réellement utilisé. Pour les contrôles provenant de fournisseurs tiers, ajoutez au préfixe une abréviation en minuscules du nom du fournisseur. Par exemple, une instance d’un contrôle créé à l’aide du cadre 3D Visual Basic Édition Professionnelle peut être signalée par le préfixe fra3d afin d’éviter toute confusion quant au contrôle réellement utilisé.

Outre les objets, les constantes et les variables nécessitent également l’adoption de conventions d’affectation de noms standard. Cette section présente les conventions prises en charge par Visual  Basic que nous vous recommandons d’utiliser. Elle traite également des problèmes d’identification du type de données et de la portée.

Il est conseillé de toujours définir les variables avec la plus petite portée possible. Les variables globales (Public) peuvent entraîner des situations d’une complexité extrême et rendre la logique d’une application très difficile à comprendre. Elles peuvent également rendre la réutilisation et la gestion de votre code beaucoup plus délicates.

 

2.5 - Portée des variables

Dans Visual Basic, les variables peuvent être dotées de la portée suivante :

Portée de la Déclaration

Visible dans

De niveau procédure
  • ‘Private’ dans la procédure, la Sub ou la Fonction
  • La procédure dans laquelle elle est déclarée
    De niveau module
  • ‘Private’ dans la section des déclarations d’une feuille ou d’un module de code (.frm, .bas)
  • Toute procédure dans la feuille ou le module de code
    Déclarations
  • Globale’Public’ dans la section des déclarations d’un module de code
  • Partout dans l’application

    Dans une application Visual Basic, il est conseillé de n’utiliser des variables globales que s’il n’existe aucun autre moyen adéquat de partager des données entre des feuilles. Si vous devez utiliser des variables globales, il est recommandé de les déclarer toutes dans un seul module, regroupées par fonction. Attribuez au module un nom évocateur, indiquant son but, tel que Public.bas.

    Il est conseillé d’écrire un code modulaire chaque fois que cela est possible. Par exemple, si votre application affiche une boîte de dialogue, placez la totalité des contrôles et du code nécessaires à la tâche prévue pour la boîte de dialogue dans une feuille unique. Vous pouvez ainsi organiser le code de l’application en composants significatifs et gagner du temps au moment de l’exécution.

    À l’exception des variables globales (qui ne doivent pas être passées), les procédures et les fonctions ne doivent traiter que des objets qui leur sont transmis. Les variables globales utilisées dans des procédures doivent être indiquées dans la section des déclarations au début de la procédure. De plus, il est conseillé de transmettre des arguments aux procédures Sub et aux fonctions à l’aide du mot clé ByVal, à moins que vous ne soyez obligé de modifier explicitement la valeur de l’argument transmis.

     

    2.6 - Préfixes de portée de variables

    Plus le projet grandit, plus il est important de déterminer rapidement la portée des variables. Un préfixe de portée constitué d'une lettre précédant le préfixe de type permet d'arriver à ce résultat sans pour autant augmenter de manière significative la taille des noms de variables.

    Portée

    Préfixe

    Exemple

    Globale g gstrUserName
    De niveau module m mblnCalcInProgress
    Locale à une procédure Aucun dblVelocity

    Une variable est dotée d'une portée globale si elle est déclarée comme Public dans un module standard ou un module de la feuille. Une variable est dotée d'une portée de niveau module si elle est déclarée comme Private, respectivement dans un module standard ou un module de feuille.

    Note : Pour que cette technique vous apporte tous les avantages escomptés, il est absolument nécessaire d'être cohérent ; en effet, le vérificateur de syntaxe de Visual Basic ne s'arrêtera pas sur des variables de niveau module commençant par la lettre "p".

     

    2.7 - Constantes

    Le corps des noms de constantes doit être constitué de lettres de casse différente, chaque mot commençant par une lettre majuscule. Bien que les constantes Visual Basic standard ne comprennent pas d'informations sur le type de données et la portée, des préfixes tels que i, s, g et m peuvent s'avérer très utiles pour comprendre la valeur et la portée d'une constante. Pour les noms de constantes, respectez les mêmes conventions que pour les variables. Exemple :

    mintUserListMax'Limite d'entrée maximale de la liste des utilisateurs (nombre entier, local à un module)

    gstrNewLine'Caractère de saut de ligne (chaîne, globale à une application)

     

    2.8 - Variables

    Le fait de déclarer toutes les variables réduit le temps de programmation en limitant le nombre d'erreurs causées par des fautes de frappe (par exemple : aUserNameTmp, sUserNameTmp et sUserNameTemp). Dans l'onglet Éditeur de la boîte de dialogue Options, cochez l'option Requiert la déclaration de variables. L'instruction Option Explicit vous oblige à déclarer toutes les variables dans votre programme Visual Basic.

    Les variables doivent comporter un préfixe indiquant leur type de données. Ce préfixe peut éventuellement être complété pour indiquer la portée de la variable, en particulier dans le cas de programmes volumineux.

     

    2.9 - Type de données des variables

    Utilisez les préfixes suivants pour indiquer le type de données d’une variable.

    Type de données

    Préfixe

    Exemple

    Boolean bln blnFound
    Byte byt bytRasterData
    Collection (Objet) col colWidgets
    Currency cur curRevenue
    Date (Time) dtm dtmStart
    Double dbl dblTolerance
    Error err errOrderNum
    Integer int intQuantity
    Long lng lngDistance
    Object obj objCurrent
    Single sng sngAverage
    String str strFName
    Type défini par l’utilisateur udt udtEmployee
    Variant vnt vntCheckSum

     

    2.10 - Noms de procédures et de variables descriptifs

    Le corps d'un nom de variable ou de procédure doit comporter des lettres de casse différente et être aussi long que la description de sa fonction le demande. De plus, les noms de fonction doivent commencer par un verbe, tel que InitNameArray ou CloseDialog.

    Pour les termes fréquemment utilisés ou particulièrement longs, nous vous recommandons d'utiliser des abréviations standard afin de réduire la longueur des noms. En règle générale, des noms de variables supérieurs à 32 caractères peuvent devenir difficiles à lire en affichage VGA.

    Si vous utilisez des abréviations, vérifiez qu'elles sont cohérentes dans la totalité de l'application. Par exemple, l'utilisation de Cnt et Count indifféremment dans un projet risque de semer la confusion.

     

    2.11 - Types définis par l'utilisateur

    Dans un gros projet comportant de nombreux types définis par l'utilisateur, il est très utile d'attribuer à chacun d'entre eux un préfixe de trois caractères distincts. Si ces préfixes commencent par la lettre "u", ils seront aisément identifiables lorsque vous travaillerez avec un type défini par l'utilisateur. Par exemple, le préfixe "ucli" peut être utilisé pour les variables dotées du type défini par l'utilisateur Client.