Nomenclature de programmation

Humansoft

XLDnaute Occasionnel
Bonjour à tous, bonjour le forum

Voilà quelque temps que je navigue sur le forum, puisant çà et là des informations me permettant d’améliorer mes connaissances en Excel.

J’ai moi-même développé et posté quelques fichiers sur le dit forum afin d’apporter des nouveautés aux lecteurs de ce forum.

Toutefois, en toute humilité, je souhaiterais vous faire une proposition.
Nous développons tous de notre côté et avec bonheur, la seule lecture de vos post le prouvent, mais nous utilisons tous une forme de programmation aléatoire, ne laissant que peu de chance aux débutants de s’améliorer ou aux développeurs du forum de relire et retravailler des formules et des macros.
J’ai eu la chance de travailler dans une petite société de développement, où nous travaillions essentiellement sur Visual Basic et l’anarchie qui régnait dans la programmation nous a poussé à concevoir une charte de développement, permettant à tous les acteurs de prendre la suite de n’importe qui.

L’idée :
1- Paramétrer les variables de façon claire.
2- Utiliser la même façon de nommer tous les éléments constitutifs d’une application.
3- Ne mettre du code que dans les modules.

LES VARIABLES LOCALES
Nous avions décidé de les faire commencer par une lettre, le « z » puis une seconde lettre identifiant le type « i » puis un tiret bas (underscore) soit :
s pour String, i pour Integer, l pour Long etc …
Ainsi une variable de compteur nommé (zi_Nbr) était immédiatement identifié comme une variable locale et integer.
Pour le nom de la variable, en prenant exemple sur l’écriture Egyptienne, nous avons supprimé les voyelles. Nous essayons de conserver une lecture immédiate en ne conservant que les consonnes.
Exemple :
AVANT APRES
Dim boucle as string Dim zs_Bcl as string
Dim numero as integer Dim zi_Nmr as integer
Dim tableau as variant Dim zv_Tbl as variant
Etc …

Ainsi, nous conservions une bonne lecture et une dimension identique ou presque d’une variable à l’autre.
L’utilité des variables n’est plus à démontrer et doit être le plus souvent possible utilisé en développement, je sais que c’est bateau de dire cela mais il existe quelque irréductibles qui n’utilise pas les variables.
Enfin, lors de l’utilisation des paramètres dans les programmes et fonctions, on utilise la lettre « p » à la place du « z », la seconde lettre sera l’identifiant du type.

LES VARIABLES GLOBALES
Pour ces variables, déclarées en Public, la lettre utilisée était le « v » afin de l’identifier dans un programme.
Ainsi, lorsque l’on voit « vs_Ttr », on sait qu’il s’agit d’une variable globale déclarée dans un en-tête de module, de type « String » et vraisemblablement indiquant un titre de l’application. Pour les fenêtres, on utilisera plutôt vs_Cpt « caption ».

LES ELEMENTS DE L’APPLICATION
Dans l’application, nous avions l’habitude de nommer tous les éléments de celle-ci.
Ainsi ai-je gardé cette habitude pour le VBA, ce qui me permet de retrouver facilement mes marques lorsque je reprends une application longtemps après son développement initial.

Pour les feuilles du classeur, elles se nomment toutes en commençant par Sht_NomDeLaFeuille.
Les « Form » sont nommées « Wnd_NomDeLaForme ».
Les modules commence par « Mod_NomDuModule ».

Pour les autres éléments, je reprends dans le tableau suivant les noms que j’attribue à ces éléments :

Textbox Txt_Nom
Label Lbl_Nom
ComboBox Cbo_Nom
Form Wnd_Nom
ListBox Lst_Nom
Calendar Cld_Nom
Button Cmd_Nom
OptionButton Opt_Nom
Checkbox Chk_Nom
Frame Frm_Nom
Image Img_Nom
Etc …

LES MODULES
J’ai gardé également l’habitude de ne faire du code que dans les modules. Dans chaque feuille, seules les propriétés sont modifiées. Puis, on lance l’appel du code afin de ne pas surcharger la feuille.
Le second avantage de ce procédé est, bien sur, de pouvoir appeler ce code depuis tout emplacement de l’application et donc de le réutiliser autant que besoin.

Ainsi donc, la nomenclature permet un suivi plus simple pour son développeur mais également pour celui qui doit intervenir après lui ou en même temps.

J’espère ne pas avoir été trop long mais il me semblait intéressant de vous faire part de cette proposition.

Bonne continuation et longue vie au Forum

Vincent.
 

Humansoft

XLDnaute Occasionnel
Bonjour le forum, Bonjour Chartman

Tout dabord, je te remercie d'avoir pris le temps de lire ma prose.
Toutefois, un petit bonjour aurait été le bienvenu.

Pour en revenir à ta phrase sybilinne, les formules restent les formules. elles se développent dans les différentes feuilles d'Excel.

tu peux, bien evidemment, les programmer pour les faire évoluer en fonction de tes besoins à l'intérieur de ton application mais elles suivent elles-mêmes, une règle bien définie.
Une erreur de lettre ou de chiffre ou de signe dans une formule la rend caduque.
On le voit tous les jours sur le forum.

Par contre, un code mal bati ou mal renseigné a du mal a être lu et compris par tous. Aussi,ai-je suggéré cete nomenclature.

Cette suggestion n'est en aucun cas, a prendre ua pied de la lettre mais un aide supplémentaire pour tout ceux qui se lancent dans l programmation.

Bonne journée et bonne lecture du forum.

Vincent
 

Robert

XLDnaute Barbatruc
Repose en paix
Bonjour Vincent, CharteMan, bonjour le forum,

Heu... un peu musicien à mes heures de loisir j'aime bien quand c'est carré. C'est vrai que quand chaque instrumentiste joue sa partition en harmonie avec les autres le plaisir est intense. Mais de là à demander à chaque musicien de tenir son instrument comme ci ou comme ça... Halte !
Depuis que je connais le VBA je n'ai plus du tout envie de jouer à un quelconque jeu sur mon ordi. Prorgrammer une application est un plaisir tellement plus 'bandant'. C'est de loin le meilleur jeu que je connaisse. Ses règles sont complexes mais sans pitiés, si tu t'es planté ton appli ne tourne pas.
Alors je me demande si en rigidifiant à l'extrême en imposant des codes j'aurais le même plaisir à jouer. J'adore quand sur une requête je lis plusieurs propositions qui y répondent. Cela montre que il y a plusieurs chemins pour aboutir au résultat.
Bien sûr Vincent, comme toi j'ai acquis des automatismes et grâce à ce forum corrigées de nombreuses erreurs de débutant. Je me souviens encore d'une eugueulade de Ti ou Zon (chais pû) parce que je ne déclarais pas mes variables. Je n'en comprenais pas l'intêret... Aujkourd'hui je recommande toujours de le faire mais je trouve qu'il serait dommage de les codifier. Argh ! Laissons encore un peu d'espace de liberté et pourquoi des codes du style:

Dim Liberté As Range
Dim Robot as Boolean

If Liberté is Nothing Then Robot = True


Message édité par: Robert, à: 13/09/2005 11:58
 

PascalXLD

XLDnaute Barbatruc
Modérateur
Bonjour

Juste pour préciser que ce système de nommer les variables avec comme préfixe le type de variable s'appelle la 'notation hongroise'

Cette convention a ses défenseurs et ses détracteurs.

Je lis ceci sur un site :
'Utiliser une convention permet de faire moins d'erreurs de syntaxe, d'assurer une meilleure compréhension du code par d'éventuels collègues et une plus grande facilité de maintenance.'

Je lis par exemple dans un livre sur .NET :
'Je n'ai jamais aimé la notation hongroise, qui à mon avis, rend le code moins lisible. De plus, le fait de de ne pas avoir préfixé les noms de variables m'a permis de faire migrer mes applications Visual Basic 6 vers .NET sans avoir à modifier les préfixes des variables Integer, Long et Variant.' (fin de citation)

Voilà une autre citation trouvé sur un site d'aide javascript :
'A mon humbre avis, il est préférable de ne pas systématiser la notation hongroise et de l’utiliser à bon escient pour ne pas compliquer les scripts. Principalement pour les tableaux ou les objets, par exemple. Mais c’est à chacun de voir, pour que son code soit le plus clair possible.'

Voilà juste quelques citations intéresantes, n'est-il pas ???

Message édité par: Pascal76, à: 13/09/2005 12:29
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonjour Vincent, Pascal, Robert, 'CharteMan' (c'est qui ça encore ?), le Forum


Moi je nomme tout 'TheChose' que ce soit des Constantes 'ThePath', des Variables 'TheString', des Procédure 'TheRunner'... Comme ça au moins quand je vois mes codes sur le Forum Ze les reconnais !!! lol

Non plus sérieuZement, je ne nomenclature que les Controls ActiveX de mes UserForms quand ils y en a beaucoup.

A cette occasion il m'arrive d'utiliser une convention utilisée à l'époque sur le MPFE,

Pour les plus courants :
TextBox = Tbx....
Label = Lbl...
ComboBox = Cbx...
ListBox = Lbx...
CommandButton = Cmb...
CheckBox = Cbx...
OptionButton Opb...


Par contre pour les contôles plus 'exotiques'
Frame = Frame...
Image = Image...
Calendar = Calendar...

Bon Après Midi

[ol]The@+Thierry[/ol]

PS Robert, c'est probablement (aussi) moi-même qui t'ai attrapé pour des Variables non déclarées... On va pas laisser passer les 'Karma Killers' comme ça !!!
 

Robert

XLDnaute Barbatruc
Repose en paix
Bonjour le fil, bonjour le forum,

Oui Thierry mais toi tu ne comptes pas, tu m'as engueulé tout le temps... et je profite pour t'en remercier encore une fois.
 

Humansoft

XLDnaute Occasionnel
Bonjour à tous, Bonjour le Forum,

Merci à tous de m'avoir donné vos impressions.

Elles sont toutes frappées du bon sens. C'est vrai que le VB nous donne cette possibilité de conserver nos propres automatismes sans tout rigidifier.

Je comprends et respecte tous vos points de vues.

C'était une petite question qui m'était venue, comme çà au détour d'un post où les noms exotiques fleurissaitent et où les variables n'était pas déclarées.

j'espère simplement ne pas vous avoir froissé ou déçu par cette proposition. Il est vrai queles temps changent et savoir s'adapter, c'est faire preuve d'évolution, je crois.

En tout cas, je continue de penser que ce forum est habité par des gens bien, qui se dévouent sur leur temps libres pour permettre à tous d'avancer, de progresser et de comprendre.

Alors gratuitement, MERCI

Vincent
 

Robert

XLDnaute Barbatruc
Repose en paix
Bonjour le fil, bonjour le forum,

Et paf dans la gueule ! Moi qui suis un mec toujours à râler, sûr de mes certidutes... et souvent autosatisfait, quelle claque devant autant d'ouverture d'esprit. Chapeau Vincent ! Merci, belle leçon.
 

Brigitte

XLDnaute Barbatruc
Bonsoir à tous,

Moi aussi j'abonde dans le sens de Robert, je dis : Vincent, quelle classe !

C'est bien rare de notre époque autant d'humilité, d'ouverture d'esprit, d'acceptation de la critique. CHAPEAU !

Je ne suis pas étonnée de ta réaction mais je l'admire.

Bises pour la circonstance à tous les intervenants...
 

mutzik

XLDnaute Barbatruc
Bonjour à tous, gros :kiss: aux filles, le fil, le forum ...

Mon opinion, et je la partage (lol)

Il va sans dire qu'il n'a pas tout à fait tort, notre ami Vincent. Cependant, il est force de constater que personne (en tous cas je ne l'ai jamais vu sur ce forum) n'utilise ce genre de notation SAUF !

Quand je réponds à un post, je ne le fais pas non plus
par contre
Quand je développe une application au sein de mon entreprise, je le fais toujours, et ceci pour deux raisons
- quand je devrais ajouter ou debugger le code par la suite, cela sera beaucoup plus facile
- par égard à quelqu'un qui devra le faire et qui abandonnera de suite si c'est l'anarchie complète dans le code (style pas d'explications ni de déclaration de variable ...)

Voila, sinon je dirais que c'est une très bonne reflexion et qu'elle a toute sa place sur ce forum

Merci Vincent, bonne journée à toutes et tous
 

Hellboy

XLDnaute Accro
Bonsoir a tous

J'ai le gout de dire mon Opinion et bien mon Opinion.

Sans farce, je ne défend pas les nomenclaturiste de droite ou de gauche, mais je dis ceci:

Imaginer que vous avez Dix enfant( je ne dirai pas que c'est de l'abus, mais...) et que vous leur avez tous donner des noms différents (j'espère, sinon lorsqu'il y a une bêtise de comise, tous passe au cash ! ou si vous préférez on droit a la fessé, enfin...).
Supposon que vous connaisser déjà leur orientation euh ! dison attirance. Donc vous avez des G au F des F au G des G au G et des F au F. éTant donnée que vous avez choisi l'habillement en bleu pour les gas et le noir pour les filles (il dise que ça aminci une silouette, ben voyon !, ça fait juste la rendre noire !). Comment faire pour distinguer l'attirance vs le genre ? A part le concepteur, qui peut dire ?

Si vous décider d'ajuster les couleurs en fonction de l'attirance et du genre, alors vous pourrez mieux vous y retrouver. Ansi, lorsque vous arriverer en public (sur le site de XLD), vous faites preuve de clairté et de discipline familliale envers la communauté. Elle s'en portera des plus enrichies. Je rajoute en disans que le grade de la tinte de bleu ou de rose importe peu, d'abord qu'il y est concensus sur le vouloir de distinction. Je suis pour la liberté d'expression, mais imaginé vous dans le trafic a Paris et dites vous qu'il y a des règles en places. Maintenant, Imaginez vous la même chose, mais sans les règles !!! Epeurant non ?

p.s. Mon exemple est purement fictif et ne se veut en aucun cas préjudicier envers qui ou quoi que se soit.
 

Gibson94

Nous a quitté
Repose en paix
Bonjour Vincent, le fil, le forum,

Lorsque j'ai lu ton post la 1ère fois, je me suis dis qu'il allait créer la zizanie sur le forum et qu'on risquait d'avoir un fil où les avis seraient tellement partagés qu'il nous rappellerait certains fils dont David avait du mettre un terme (voir le fil sur les 'bonjour' et 'merci' etc...). Et donc , j'avais préférais ne pas donner mon avis.

Mais aujourd'hui, je m'apperçois que tout se passe bien et j'aimerais vous faire part de mon opinion sur ce sujet.

Depuis plus de 20 ans, j'ai toujours utilisé les variables 'i' et 'j' pour les boucles, et je crois que je ne suis pas prêt de les abandonner pour des variables 'boucle' ou autre dénominatifs correspondants. Chacun de nous a son style perso dans la programmation et surtout chacun de nous possède un niveau différent. Je suis loin d'être un pro, mais j'arrive toujours à mes fins lorsque je créais une application, seulement, je vais écrire 50 lignes pour une routine, là où il n'en faudrait que 10.

Dans mon dernier programme, j'ai déclaré une bonne cinquantaine de variables et je suis bien sûr que je pourrais en utiliser beaucoup moins, mais malgré tout, je m'y retrouve beaucoup mieux (avec bien entendu le nom que je leurs ai donné).

Sur le forum, on est pas au boulot, c'est un divertissement et une passion, et chacun de nous progresse à son rythme. Beaucoups d'entre nous sommes loin de maîtriser le VBA. Pour moi, le forum est beaucoup mieux que les stages, ici, on avance à grands pas vers cette maîtrise d'Excel, et un jour, lorsqu'un certain niveau sera atteint, nous pourrons effectivement commencer à nous intéresser à la mise en forme de nos procédures afin que notre VBA ressemble plus à du professionalisme, mais pour l'instant, on en ait bien loin (surtout moi...lol).

Conclusion: Lorsqu'un programme du forum vous intéresse et que vous désirez le garder, rien ne vous empêche de le réécrire à votre goût... sinon, la moitié du forum va arrêter de répondre aux questions et çà serait bien dommage. C'est aussi en décortiquant les programmes des autres que l'on trouve des formules et des définitions de variables qui sont souvent reprises et que l'on finit par adopter (je pense notamment à 'Derlign' par exemple). Voilà... on y arrivera tout seul, tranquillement et sans se prendre la tête...

Allez.......J-3.....çà ne rigole plus.....çà devient plus que sérieux....

Bonne journée tout le monde.
 

Discussions similaires

Réponses
29
Affichages
925

Membres actuellement en ligne

Statistiques des forums

Discussions
312 229
Messages
2 086 425
Membres
103 206
dernier inscrit
diambote