Utilisation du préfix g_ pour les id et handle

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
jpascal
Niveau 5
Niveau 5
Messages : 138
Enregistré le : jeu. 16 oct. 2008 16:21
Status : Hors ligne

Utilisation du préfix g_ pour les id et handle

#1

Message par jpascal »

Bonjour à tous,

J'ai pour habitude d'écrire mon code en suivant les recommandations de cette page : https://www.autoitscript.com/wiki/Best_coding_practices
J'ai donc appliqué à la lettre le fait d'écrire des variables globales avec $g_

Cependant je me dis aujourd'hui que cela n'a pas vraiment de sens avec les id et les handle.
C'est d'autant plus pénible que lors de la création d'id, s'ils ont une portée locale, il arrive fréquemment que je doive les renommer en ajoutant le préfixe g_ pour m'en servir de façon globale.
Mais dans la documentation officielle c'est utilisé.

Avant de changer ma façon de coder, pouvez-vous m'indiquer si vous utilisez des $g_hGUI, et autres $g_idButton et pourquoi ce choix ?
AutoIt 3.3.15.1 / SciTE 4.1.0 / Windows 7 & 10 x64

Avatar du membre
Nine
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 22
Enregistré le : ven. 17 avr. 2020 01:23
Status : Hors ligne

Re: Utilisation du préfix g_ pour les id et handle

#2

Message par Nine »

Personnellement, je n'utilise jamais le préfix $g_. Comme tu l'as constaté, la modification d'une variable de local à global implique de changer le nom de la variable partout dans le script. C'est pas si grave, mais je préfère la nommer avec la déclaration Global ou Local même si je suis dans le scope général. De la sorte, si une variable est nommée Local dans le scope global, je sais que je ne l'ai pas utilisé dans des functions à titre global. Une question de discipline et de principe.

Avatar du membre
mikell
Modérateur
Modérateur
Messages : 5994
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: Utilisation du préfix g_ pour les id et handle

#3

Message par mikell »

jpascal a écrit :
jeu. 16 avr. 2020 11:23
C'est d'autant plus pénible que lors de la création d'id, s'ils ont une portée locale, il arrive fréquemment que je doive les renommer en ajoutant le préfixe g_ pour m'en servir de façon globale.
De toute façon, ce n'est pas considéré comme une bonne pratique. Changer le scope d'une variable en cours de script, ou déclarer une variable en Global dans une fonction, c'est pô recommandé

Il y a la lettre et l'esprit de la lettre, et aussi les scopes qu'AutoIt attribue par défaut aux variables ce qui relativise la précision des déclarations
Une variable déclarée dans le scope général est globale, qu'elle soit déclarée Global ou Local ou sans rien
Une variable déclarée dans une fonction est automatiquement locale, sauf si elle existe déjà (ou peut exister) en Global auquel cas il faut lui coller Local (mais utiliser un même nom pour 2 variables différentes n'est pô recommandé)

Personnellement je n'utilise pas $g_, et j'avoue prendre de grandes libertés avec la 'hungarian notation' . Je ne crée pratiquement jamais une gui principale (avec sa boucle While) dans une fonction, et je considère qu'avoir inclus tous les exemples du fichier d'aide dans des fonctions Example() est une mauvaise idée, ça ne fait qu'embrouiller les esprits plus qu'autre chose
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )

Avatar du membre
jl56
Niveau 7
Niveau 7
Messages : 374
Enregistré le : mer. 24 oct. 2007 22:42
Localisation : 56000
Status : Hors ligne

Re: Utilisation du préfix g_ pour les id et handle

#4

Message par jl56 »

Bonjour à tous,

Au fil des ans je me suis habitué a mettre comme préfixe le type de control
exemple inp_ pour un input, but_ pour un bouton , combo_ , list_ ,tab_, menu_ etc..
si bien que c'est plus rapide et compréhensible pour la réalisation de mes scritps.
exemple si on tape but_ l'éditeur va proposer la liste des boutons idem pour inp_ et autre
if msg= $but_nom then
   $nom = guictrlread($inp_nom)
endif
ça me permet de faire une famille de control pour une action donnée.
au début de script je déclare toutes mes variables global ou local selon le besoin

je ne sais pas si je répond à la question mais ça reste un exemple de nommage des controles

A+

JL56

Répondre