|
Site |
Cours VB.net |
|
|
|
Rendre le code lisible: commentaires, nommage des variables et objets visuels, notation hongroise. |
|
|
Mise à jour: 5/2/2008
Pour faire un code lisible:
Mettre des commentaires.
Aérer le code.
Choisir de bons noms de variable.
Utiliser la 'Notation hongroise'
Ajouter des commentaires.
Pour vous; pour les autres.
Au début de chaque routine, Sub, Function, Classe , noter en commentaire ce qu'elle fait et quelles sont les caractéristiques des paramètres:
- Le résumé descriptif de la routine, la Sub ou Function.
- Une description de chaque paramètre.
- La valeur retournée s'il y en a une.
- Une description de toutes les exceptions..
- Un exemple d'utilisation
- Une explication sur le fonctionnement de la routine.
Ne pas ajouter de commentaire en fin de ligne (une partie ne sera pas visible) mais plutôt avant la ligne de code. Seule exception ou on utilise la fin de ligne: les commentaires après les déclarations de variable.
Dim i As Integer 'Variable de boucle
'Parcours du tableau à la recherche de..
For i=0 To 100
...
Paradoxalement, trop de commentaires tue le code autant que le manque de commentaires. Pour éviter de tomber dans le tout ou rien, fixons nous quelques règles:
Commentez le début de chaque Sub, Fonction, Classe
Commentez toutes les déclarations de variables
Commentez toutes les branches conditionnelles
Commentez toutes les boucles
Commentaire en Xml
On peut ajouter des commentaires en xml dans VB2005.
Exemple:
Pour une Sub: Sur une ligne blanche au dessus de la Sub Calcul, tapez "'''" (3 "'").
ou
Pour une variable: Curseur sur la variable, bouton droit puis 'Insérer un commentaire' dans le menu.
Un bloc Xml <Summary> se crée automatiquement; pour l'exemple de la Sub, ajouter 'Fonction Calculant le total'
Quand ensuite on tape le nom de la Sub , le commentaire s'affiche.
De plus Visual Basic génère automatiquement un fichier de documentation XML lorsque vous créez le projet. Ce fichier apparaît dans le répertoire de sortie de l'application sous le nom AssemblyName.xml.
Éclaircir, aérer le code:
Ajouter quelques lignes blanches.
Décaler à droite le code contenu dans une boucle ou une section If.. End If:
Une mise en retrait simplifie la lecture du
code, par exemple :
If ... Then
If ... Then
...
Else
...
End If
Else
...
End If
Éviter plusieurs instructions par ligne.
A= 2 : B= 3 : C=5 est à éviter.
Pas plus de 80 caractères par ligne.
Avant, on avait des écrans ou les lignes faisaient 80 caractères; maintenant on n'a pas de limitation mais:
Si on veut imprimer le source et que les lignes sont très longues, l'impression est illisible.
Pas plus de 50 lignes par fonction.
Cela permet de faire défiler rapidement la fonction et de la voire en totalité.
Mais parfois une fonction doit comporter un grand nombre de lignes, mais cette fonction est un tout et le 'découpage' en sous-fonctions est impossible (variable locale multiple) ou ce découpage augmente la complexité.
Choisir les noms de procédures et de variables avec soins:
On concatène plusieurs mots pour former un nom de fonction, de variable de Classe..
Il y a 3 manières d'utiliser les lettres capitales dans ces mots (on appelle cela la capitalisation!)
-Pascal Case:La première lettre de chaque mot est en majuscule:
CalculTotal()
-Camel Case:La première lettre de chaque mot est en majuscule, sauf la première:
iNombrePatient
-UpperCase: Toutes les lettres sont en majuscule:
MACONSTANTE
De plus le nom doit être explicite.
Microsoft propose quelques règles:
Sub , Fonctions
Utilisez la 'case Pascal' pour les noms de routine (la première lettre de chaque mot est une majuscule).
Exemple:
CalculTotal()Évitez d'employer des noms difficiles pouvant être interprétés de manière subjective, notamment
Analyse()pour une routine par exemple.Utilisez les verbe/nom pour une routine :
CalculTotal().Variables
Pour les noms de variables, utilisez la 'case Camel' selon laquelle la première lettre des mots est une majuscule, sauf pour le premier mot.
Exemple:
iNombrePatientnoter ici que la première lettre indique le type de la variable (Integer), elle peut aussi indiquer la portée(gTotal pour une variable globale).
Évitez d'employer des noms difficiles pouvant être interprétés de manière subjective,
'YYB8' ou 'flag'pour une variable.Ajoutez des méthodes de calcul (
Min,Max,Total) à la fin d'un nom de variable, si nécessaire.Les noms de variable booléenne doivent contenir
Isqui implique les valeurs True/False, par exemplefileIsFound.Évitez d'utiliser des termes tels que
Flaglorsque vous nommez des variables d'état, qui différent des variables booléennes car elles acceptent plus de deux valeurs. Plutôt quedocumentFlag, utilisez un nom plus descriptif tel quedocumentFormatType.Même pour une variable à courte durée de vie utilisez un nom significatif.
Utilisez des noms de variable d'une seule lettre, par exemple
iouj, pour les index de petite boucle uniquement.Paramètre
Pour les noms de paramètres, utilisez la 'case Camel' selon laquelle la première lettre des mots est une majuscule, sauf pour le premier mot.
Exemple:
typeNameConstantes
Utiliser les majuscules pour les constantes: MYCONSTANTE
N'utilisez pas des nombres ou des chaînes littérales telles que
For i = 1 To 7. Utilisez plutôt des constantes par exempleFor i = 1 To DAYSINWEEK, pour simplifier la maintenance et la compréhension.Objet, Classe
Pour les noms de Classe, utiliser le case Pascal:
Exemple Class MaClasse
Idem pour les évènement, espace de nom, méthodes:
Exemple: System.Drawing, ValueChange..
Dans les objets, il ne faut pas inclure des noms de classe dans les noms de propriétés Patient.PatientNom est inutile, utiliser plutôt Patient.Nom.
Les interfaces commencent par un I
Exemple: IDisposable
Pour les variables privées ou protégées d'une classe utilisez le case Camel:
Exemple: lastValue (variable protégée)
En plus pour les variables privées d'une classe mettre un "_" avant:
Exemple: _privateField
Pour une variable Public d'une classe utiliser le 'case Pascale':
Exemple TotalAge
Tables
Pour les tables, utilisez le singulier. Par exemple, utilisez table '
Patient'plutôt que 'Patients'.N'incorporez pas le type de données dans le nom d'une colonne.
Divers
Minimisez l'utilisation d'abréviations.
Lorsque vous nommez des fonctions, insérez une description de la valeur retournée, notamment
GetCurrentWindowDirectory().Évitez de réutiliser des noms identiques pour divers éléments.
Évitez l'utilisation d'homonymes et des mots qui entraînent souvent des fautes d'orthographe.
Évitez d'utiliser des signes typographiques pour identifier des types de données, notamment
$pour les chaînes ou%pour les entiers.Un nom doit indiquer la signification plutôt que la méthode.
Notation hongroise:
La notation hongroise est une convention de nommage qui met en avant , par l'utilisation d'un préfixe, des informations sur l'objet nommé.
La qualification de "hongroise" vient du pays d'origine de Simonyi, le créateur de ce nommage qui a travaillé chez Xerox puis Microsoft.
Il y a 2 sortes de notation hongroise:
Notation Apps:
On préfixe le nom des variables de manière a indiquer leur utilisation :
rwPosition : est une variable représentant la position d'une ligne (row en anglais)
Notation Systems:
Cette notation consiste à faire précéder le nom de la variable d'un préfixe reflétant son type. Ce préfixe est toujours écrit en minuscule puis la première lettre suivante en majuscule.
Par exemple, la variable booléenne 'ouvert' est préfixée par un b pour indiquer un booléen : 'bOuvert'.
On peut préfixer avec le type et (ou) la portée.
Type:
i Integer (entier)
n Short int (entier court)
l Long (entier long)
f float= Single (nombre a virgule flottante)
d Double (float double)
c Char (caractère)
by Byte (caractère non signe)
b Boolean (booleen true/false)
s String (chaîne de caractères)
h Handle
file File (fichier)
et non utilisé en VB:
v void
w word (mot = double octet)
dw double word (double mot)
sz zero-terminated string (chaine de caracteres terminee par un char zero)
str string object (objet String)
pt point
rgb rgb triplet
Portée:
g : variable globale à une application
s : variable locale à un module.
p : variable passée en paramètre d’une fonction ou d’une méthode de
classe.
Si une variable est un tableau, on ajoute le préfixe « a ».
Exemple:
Préfixe avec le type: variable nommée Ouvert de type boolean:
bOuvert.
Préfixe avec la portée: variable nommée Nom de portée globale:
gNom ou g_Nom
Variable nommée Position qui est une variable globale et une Integer.
g_iPosition
On voit qu'on peut utiliser ou non le caractère""_".
Cette notation hongroise a ses partisans et ses adversaires (nom trop complexe).
Nommage des objets visuels:
Les objets visuels sont les boutons, les TextBox....
Il est conseillé par Microsoft de débuter le nom d’un objet visuel par un mot évoquant sa nature:
Microsoft conseille:
btn pour les Boutons
lst pour les ListBox
chk pour les CheckBox
cbo pour les combos
dlg pour les DialogBox
frm pour les Form
lbl pour les labels
txt pour les Textbox
tb pour les Toolsbar
rb pour les radiobutton
mm pour les menus
tmr pour les timers
Exemple:
btnOk par exemple pour un bouton sur lequel il y a 'Ok'.
|
|
|
|
|