Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Regles de nommage : quand une variable est une fonction...

13 réponses
Avatar
Fabien LE LEZ
Bonjour,

J'écris les noms de variable ainsi : "une_variable".
Les noms de fonctions (et de types) s'écrivent avec des majuscules :
"UneFonction".

Ainsi, j'écrirais :

void UneFonction (int une_variable);


Mais que dois-je faire quand une variable est une fonction ou un
foncteur ?

template <class Foncteur> void QuaranteDeux (Foncteur const& machin)
// "machin" en minuscules, car c'est un nom de variable
{
machin (42); // ... sauf qu'ici c'est une fonction !
}

QuaranteDeux (UneFonction);
// ... et ici la variable passée en paramètre est en majuscules :-/

Comment gérez-vous ce cas ?

Merci d'avance.

10 réponses

1 2
Avatar
Jean-Marc Bourguet
Fabien LE LEZ writes:

Bonjour,

J'écris les noms de variable ainsi : "une_variable".
Les noms de fonctions (et de types) s'écrivent avec des majuscules :
"UneFonction".

Ainsi, j'écrirais :

void UneFonction (int une_variable);


Mais que dois-je faire quand une variable est une fonction ou un
foncteur ?

template <class Foncteur> void QuaranteDeux (Foncteur const& machin)
// "machin" en minuscules, car c'est un nom de variable
{
machin (42); // ... sauf qu'ici c'est une fonction !
}

QuaranteDeux (UneFonction);
// ... et ici la variable passée en paramètre est en majuscules :-/

Comment gérez-vous ce cas ?


J'ai les memes conventions pour les fonctions et les variables. Simplement
les variables sont des noms, en general qualifies, (minimalDistance par
exemple) et les fonctions des phrases sans sujet (computeDistance). Les
pointeurs de fonction et les foncteurs se retrouve naturellement avec le
nom de celui qui fait l'action (distanceComputer).

A+

--
Jean-Marc
FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ
C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html
Site de usenet-fr: http://www.usenet-fr.news.eu.org

Avatar
Michel Decima
Bonjour,

J'écris les noms de variable ainsi : "une_variable".
Les noms de fonctions (et de types) s'écrivent avec des majuscules :
"UneFonction".

Ainsi, j'écrirais :

void UneFonction (int une_variable);


Mais que dois-je faire quand une variable est une fonction ou un
foncteur ?

template <class Foncteur> void QuaranteDeux (Foncteur const& machin)
// "machin" en minuscules, car c'est un nom de variable
{
machin (42); // ... sauf qu'ici c'est une fonction !
}

QuaranteDeux (UneFonction);
// ... et ici la variable passée en paramètre est en majuscules :-/

Comment gérez-vous ce cas ?


Quand les conventions de styles locales ne me force pas a faire du
CamelCase, j'aurais tendance a tout ecrire en minuscule, sauf les
types qui commence par une majuscule:

class Un_type; // ou aussi Un_Type
void une_fonction( int une_variable );

template< class Foncteur >
void quarante_deux( Foncteur const& machin )
{
machin( 42 );
}

quarante_deux( &une_fonction);

Les noms variables et de fonctions s'ecrivent alors pareil, mais
ce n'est voulu parce qu'on peut utiliser une fonction comme
une variable (et reciproquement). Si tu a deux conventions
"incompatibles" pour nommer fonction et variables, tu auras
forcement des incohérences.

Avec un CamelCase, je mettrais une majuscule seulement au debut
des types, et une minuscule au debut des fonctions:

class UnType;
void uneFonction( int uneVariable );

template< class Foncteur >
void quaranteDeux( Foncteur const& machin )
{
machin( 42 );
}

quaranteDeux( &uneFonction );

C'est a peu pres la meme chose que precedemment.

Avatar
Fabien LE LEZ
On 17 Jan 2007 13:36:24 +0100, Jean-Marc Bourguet :

J'ai les memes conventions pour les fonctions et les variables.


Évidemment, ça simplifie le problème.

Mais (malheureusement ?) j'ai une convention différente, que je ne
peux pas vraiment modifier sur un projet qui compte déjà une centaine
de milliers de lignes de code...

Avatar
Jean-Marc Bourguet
Fabien LE LEZ writes:

On 17 Jan 2007 13:36:24 +0100, Jean-Marc Bourguet :

J'ai les memes conventions pour les fonctions et les variables.


Évidemment, ça simplifie le problème.

Mais (malheureusement ?) j'ai une convention différente, que je ne
peux pas vraiment modifier sur un projet qui compte déjà une centaine
de milliers de lignes de code...


Si tu as remarque, je n'ai pas la meme convention dans le choix des noms.
Et j'utilise un nom de variable pour le cas qui t'interesse, parce que
c'est une variable. Si on ne pouvait pas surcharger l'operateur (), tu ne
te poserais pas la question.

A+

--
Jean-Marc
FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ
C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html
Site de usenet-fr: http://www.usenet-fr.news.eu.org


Avatar
Fabien LE LEZ
On 17 Jan 2007 14:43:04 +0100, Jean-Marc Bourguet :

Si on ne pouvait pas surcharger l'operateur (), tu ne
te poserais pas la question.


Tu noteras qu'il n'y a pas de surcharge de operator() dans le code que
j'ai donné en exemple...

(Même si, effectivement, l'opérateur en question est surchargé dans la
majorité des cas d'utilisation de ce système.)

Avatar
James Kanze
Michel Decima wrote:

Les noms variables et de fonctions s'ecrivent alors pareil, mais
ce n'est voulu parce qu'on peut utiliser une fonction comme
une variable (et reciproquement).


Mais ça ne change rien au problème de base. Le nom d'une
fonction, c'est un verbe, ou quelque chose du genre. Le nom
d'une classe (un type), c'est un nom, et le nom d'une variable,
c'est un nom qualifié. Alors, comment faire pour les objets
fonctionnels (avec un surcharge de l'opérateur (), et pas grand
chose d'autre) ? Pour une variable du type, je ne vois pas
beaucoup de problème -- elle joue le rôle d'une fonction, et
donc, elle se nomme comme une fonction (même si c'est un peu
bizarre, une fonction qu'on copie, et éventuellement qu'on
construit avec des paramètres). Mais comment nommer le type ?
Avec un nom d'agent (c-à-d FaiseurDeQuelqueChose, à côté de
l'objet, faireQuelqueChose) ?

Si tu a deux conventions
"incompatibles" pour nommer fonction et variables, tu auras
forcement des incohérences.


Les noms sont normalement différents. Quelque soit les
conventions.

--
James Kanze (GABI Software) email:
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34

Avatar
ByB
Fabien LE LEZ a formulé la demande :
On 17 Jan 2007 13:36:24 +0100, Jean-Marc Bourguet :

J'ai les memes conventions pour les fonctions et les variables.


Évidemment, ça simplifie le problème.

Mais (malheureusement ?) j'ai une convention différente, que je ne
peux pas vraiment modifier sur un projet qui compte déjà une centaine
de milliers de lignes de code...


Ajoutez un préfixe devant ces variables particulières ...

--
La civilisation, qu'est-ce que c'est, sinon la caserne, le bureau,
l'usine, les apéritifs, et les garçons de banque ?
[Alphonse Allais]


Avatar
Jean-Marc Bourguet
"James Kanze" writes:

Michel Decima wrote:

Les noms variables et de fonctions s'ecrivent alors pareil, mais
ce n'est voulu parce qu'on peut utiliser une fonction comme
une variable (et reciproquement).


Mais ça ne change rien au problème de base. Le nom d'une
fonction, c'est un verbe, ou quelque chose du genre. Le nom
d'une classe (un type), c'est un nom, et le nom d'une variable,
c'est un nom qualifié. Alors, comment faire pour les objets
fonctionnels (avec un surcharge de l'opérateur (), et pas grand
chose d'autre) ? Pour une variable du type, je ne vois pas
beaucoup de problème -- elle joue le rôle d'une fonction, et
donc, elle se nomme comme une fonction


Bizarrement, moi ma reflexion est l'inverse: c'est une variable, elle se
nomme comme une variable meme si elle peut etre syntaxiquement utilisee
comme une fonction (et puis le rapport entre fonction et pointeur de
fonction en C et en C++, c'est aussi amusant que le rapport entre tableau
et pointeur).

(même si c'est un peu bizarre, une fonction qu'on copie, et
éventuellement qu'on construit avec des paramètres). Mais comment nommer
le type ? Avec un nom d'agent (c-à-d FaiseurDeQuelqueChose, à côté de
l'objet, faireQuelqueChose) ?


Le nom du type est un bon nom de depart pour l'objet, meme si le qualifier
est generalement utile. Donc le nom d'agent pour le type et nom d'agent
qualifie pour l'objet.

--
Jean-Marc
FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ
C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html
Site de usenet-fr: http://www.usenet-fr.news.eu.org


Avatar
Jean-Marc Bourguet
Fabien LE LEZ writes:

On 17 Jan 2007 14:43:04 +0100, Jean-Marc Bourguet :

Si on ne pouvait pas surcharger l'operateur (), tu ne
te poserais pas la question.


Tu noteras qu'il n'y a pas de surcharge de operator() dans le code que
j'ai donné en exemple...


Il y a une application de l'operateur () dans ce que tu montrais.

J'ai d'ailleurs tendance a considerer logiquement les fonctions comme des
constantes et les pointeurs de fonctions comme des variables du meme type.
Je sais, ce n'est pas formellement le cas en C++ et je n'enseignerais pas
le C++ comme ca.

A+

--
Jean-Marc
FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ
C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html
Site de usenet-fr: http://www.usenet-fr.news.eu.org


Avatar
Michel Decima
Michel Decima wrote:

Les noms variables et de fonctions s'ecrivent alors pareil, mais
ce n'est voulu parce qu'on peut utiliser une fonction comme
une variable (et reciproquement).


Mais ça ne change rien au problème de base. Le nom d'une
fonction, c'est un verbe, ou quelque chose du genre. Le nom
d'une classe (un type), c'est un nom, et le nom d'une variable,
c'est un nom qualifié.


Je suis d'accord avec la convention verbe/nom/nom qualifie, mais
dans le post de Fabien la distinction entre variable et type ou
fonction se faisait sur la typographie, pas sur la signification
(enfin c'est mon impression). Et visiblement, il ne peut pas toucher
a la typographie.

Alors, comment faire pour les objets
fonctionnels (avec un surcharge de l'opérateur (), et pas grand
chose d'autre) ? Pour une variable du type, je ne vois pas
beaucoup de problème -- elle joue le rôle d'une fonction, et
donc, elle se nomme comme une fonction (même si c'est un peu
bizarre, une fonction qu'on copie, et éventuellement qu'on
construit avec des paramètres). Mais comment nommer le type ?
Avec un nom d'agent (c-à-d FaiseurDeQuelqueChose, à côté de
l'objet, faireQuelqueChose) ?


Si on garde la typographie, ca serait

FaiseurDeQuelqueChose // objet fonctionnel
FaireQuelqueChose // fonction
faire_quelque_chose // variable

Alors le sens des mots permet de distinguer les roles des un et
des autres, mais pas la regle typographique:

template <class FaiseurDeQuelqueChose>
void AppliquerAvec42(
FaiseurDeQuelqueChose const& faire_quelque_chose
)
{
faire_quelque_chose( 42 ); // fonction en minuscule
}

AppliquerAvec42( &Calculer ); // variable en majuscule

C'est pour ca que je proposais la meme typographie pour
les fonctions et les variables, parce que dans ce cas il
ne reste que le sens des mots pour faire la distinction
entre les deux, et ca supprime les ambiguites.

Si tu a deux conventions
"incompatibles" pour nommer fonction et variables, tu auras
forcement des incohérences.


Les noms sont normalement différents. Quelque soit les
conventions.


Oui, mais ca ne change pas ce que je crois etre le probleme
de depart.


1 2