IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Voir le flux RSS

MarcelG

Déclarer ses paramètres pour gagner en rigueur et lisibilité

Noter ce billet
par , 06/10/2020 à 11h31 (492 Affichages)
Bonjour à tous,

Que ce soit pour une fonction ou une procédure, pour ma part, la complète déclaration des paramètres est, pour ainsi dire, obligatoire.

En effet, l'on voit trop de lignes de code contenant ce type de syntaxe

Code : Sélectionner tout - Visualiser dans une fenêtre à part
macel = laplage.fonctionx(« Toto », , , , False)
De quoi se gratter la tête !!

Si les paramètres ont été définis, alors la lecture du code est d’autant plus facilitée lorsqu’ils sont mentionnés
Exemple :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
Dim lemessage As Variant         
lemessage = MsgBox( _
                    Prompt:="Une extraction est possible" & Chr(13) & _
                                   "Souhaitez-vous la créer?", _
                    Buttons:=vbYesNo, _
                    Title:="Tableau récapitualatif.")
        
If lemessage = vbYes Then……
Pour une procédure (ou une fonction) paramétrée, cela devient encore plus évident.

Supposons une procédure - basique - ayant pour objet la protection de certaines cellules d’une feuille de travail à définir.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Option Explicit

Public Sub protéger(lafeuil As String, motpasse As String, celdep As String, laprotection As Boolean, Optional nblignes As Long, Optional nbcolonnes As Integer)

With Worksheets(lafeuil)
        
        .Unprotect Password:= motpasse
        .Cells.Locked = False
        
        'Pour contrôle
         Debug.Print .Range(celdep).Resize(IIf(nblignes = 0, 1, nblignes), IIf(nbcolonnes = 0, 1, nbcolonnes)).Address
        
        .Range(celdep).Resize(IIf(nblignes = 0, 1, nblignes), IIf(nbcolonnes = 0, 1, nbcolonnes)).Locked = laprotection
        .Protect Password:= motpasse

End With

End Sub
Il est certain que le code suivant est effectif

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
Sub essai()

protéger "VENETA", "PUGLIA", "A1", True, , 10

End Sub
L’on remarquera au passage
Ce qui signifie qu’un paramètre optionnel n’a pas été informé.

Mais que voit-on ?
Un mot « protéger » qui signifie sans-doute qu’une procédure est appelée, 2 chaînes de caractères, une adresse, une valeur booléenne, un blanc et un nombre.

Explicite, non ?
Réponse: non!

De – très - loin, ma préférence va à

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
Sub essai()

Call protéger(lafeuil:="VENETA", motpasse:="PUGLIA",  celdep:="A1", laprotection:=True, nbcolonnes:=10)

End Sub
Et ce d’autant plus que la saisie semi-automatique au sein de l’éditeur VBE reporte, en info-bulle, les paramètres à considérer

Dès que l’appel de procédure suivi d’une parenthèse est saisi, alors l’éditeur reportera successivement, comme pour toute propriété ou méthode natives de VBA, la nature des paramètres à considérer, chacun en caractères gras. Les paramètres optionnels figurent entre crochets.
Il suffit alors, comme ci-dessus, de les reporter, suivis de « := »

Certes, pour des méthodes simples (Offset...), la lisibilité n'est pas affectée si ces paramètres (RowOffset, ColumnOffset) sont implicites.

Une exception, qui est pour ma part, un anomalie.
La précision des paramètres ne peut être effectuée dès lors que l'un d'eux est de nature Paramarray
Voir l'explication de Microsoft.

Au demeurant, pour des procédures comme pour des fonctions (personnalisées ou non), il ne faut pas perdre de vue qu’un code peut être consulté (d’abord à postériori pour soi-même) et peut évoluer.

Pour un code VBA, rigueur et lisibilité vont de pair.
La déclaration des paramètres est donc un apport constructif pour pouvoir facilement se repérer dans nos développements, surtout s’ils sont complexes.

Voilà.
C’était l’humeur du jour.

Par avance, je vous remercie pour vos remarques constructives.

Envoyer le billet « Déclarer ses paramètres pour gagner en rigueur et lisibilité » dans le blog Viadeo Envoyer le billet « Déclarer ses paramètres pour gagner en rigueur et lisibilité » dans le blog Twitter Envoyer le billet « Déclarer ses paramètres pour gagner en rigueur et lisibilité » dans le blog Google Envoyer le billet « Déclarer ses paramètres pour gagner en rigueur et lisibilité » dans le blog Facebook Envoyer le billet « Déclarer ses paramètres pour gagner en rigueur et lisibilité » dans le blog Digg Envoyer le billet « Déclarer ses paramètres pour gagner en rigueur et lisibilité » dans le blog Delicious Envoyer le billet « Déclarer ses paramètres pour gagner en rigueur et lisibilité » dans le blog MySpace Envoyer le billet « Déclarer ses paramètres pour gagner en rigueur et lisibilité » dans le blog Yahoo

Mis à jour 20/10/2020 à 16h58 par MarcelG

Catégories
Programmation

Commentaires