1) Est ce que c'est, d'apres vous, une "bonne" facon de faire?
2) Si oui (mais je pense que non), j'ai un pb:
ABSOLUTE est deja declaree comme constantes dans certains headers ce qui
donne apres le preproceseur:
enum MON_ENUM
{
1 = 0,
SEMI_RELATIVE = 1,
RELATIVE = 2
};
ce qui ne marche pas forcement tres bien..;-)
Qq1 parmi vous aurait il un conseil pour eviter ce genre de problemes?
En esperant que ma question ne soit pas trop con...
On Thu, 16 Oct 2003 22:18:21 -0400, "Michel Michaud" wrote:
Quel est l'intêret de distinguer les constantes des autre varaibles
Pouvoir distinguer facilement les constantes des autres variables ?
(Faciliter la compréhension du code. Quel est l'intérêt d'avoir des identificateurs significatifs ? ...)
Ben justement, un identificateur vraiment significatif devrait indiquer clairement le rôle de la variable, et du coup sa const-ness serait évidente pour le lecteur... dans l'idéal, bien sûr ;-)
On Thu, 16 Oct 2003 22:18:21 -0400, "Michel Michaud" <mm@gdzid.com>
wrote:
Quel est l'intêret de distinguer les constantes des autre varaibles
Pouvoir distinguer facilement les constantes des autres variables ?
(Faciliter la compréhension du code. Quel est l'intérêt d'avoir
des identificateurs significatifs ? ...)
Ben justement, un identificateur vraiment significatif devrait
indiquer clairement le rôle de la variable, et du coup sa const-ness
serait évidente pour le lecteur... dans l'idéal, bien sûr ;-)
On Thu, 16 Oct 2003 22:18:21 -0400, "Michel Michaud" wrote:
Quel est l'intêret de distinguer les constantes des autre varaibles
Pouvoir distinguer facilement les constantes des autres variables ?
(Faciliter la compréhension du code. Quel est l'intérêt d'avoir des identificateurs significatifs ? ...)
Ben justement, un identificateur vraiment significatif devrait indiquer clairement le rôle de la variable, et du coup sa const-ness serait évidente pour le lecteur... dans l'idéal, bien sûr ;-)
"Michel Michaud" wrote in message news:<frIjb.5501$...
En fait, je vois bien plus souvent l'idée de ne pas mettre les constantes en majuscules présentée sans nuance...
Disons qu'a priori, je m'attendrais plutôt à voir des raisons pourquoi on distingue entre deux choses. Si on ne distingue pas, on n'en parle pas.
Donc, quand je présente mes règles, j'explique pourquoi je veux que les macros aient un nom identifiable, puis pourquoi je veux pouvoir distinguer entre les types et les autres choses. Je n'explique effectivement pas pourquoi je ne distingue pas entre les constantes et les non constantes, de même que je n'explique pas pourquoi je ne distingue pas entre les types flottants et les types entiers.
Globalement, je crois que c'est juste, mais étant donné l'histoire de distinguer les constantes en C/C++ (parce qu'une telle tradition n'existait pas dans le monde de Pascal, d'où je viens), je vois qu'une explication pourquoi ne pas distinguer les constantes pourrait être utile.
En passant, je n'ai jamais vu cette tradition des constantes en majuscules en dehors de la famille C -- en Pascal et ces déscendants directs (Modula-2 et Modula-3 au moins), ce sont les mots clé qui sont tout en majuscule, et c'est AMHA encore la meilleur tradition, même si on ne peut pas l'appliquer en C/C++. En Ada, je n'ai vu aucune différence entre les variables et les constantes dans les exemples que j'ai pu voir, et je n'ai rien vu tout en majuscules. En Eiffel, au moins dans les exemples que j'ai pu voir, c'était les types qui étaient tout en majuscule. Je n'ai pas trouvé des symboles (constante ou d'autres) tout en majuscules dans le code elisp qui pilote emacs non plus (mais je ne crois pas qu'elisp ait des constantes, dans le sens que C/C++ les a).
-- James Kanze GABI Software mailto: Conseils en informatique orientée objet/ http://www.gabi-soft.fr Beratung in objektorientierter Datenverarbeitung 11 rue de Rambouillet, 78460 Chevreuse, France, +33 (0)1 30 23 45 16
"Michel Michaud" <mm@gdzid.com> wrote in message
news:<frIjb.5501$Z_2.436718@news20.bellglobal.com>...
En fait, je vois bien plus souvent l'idée de ne pas mettre les
constantes en majuscules présentée sans nuance...
Disons qu'a priori, je m'attendrais plutôt à voir des raisons pourquoi
on distingue entre deux choses. Si on ne distingue pas, on n'en parle
pas.
Donc, quand je présente mes règles, j'explique pourquoi je veux que les
macros aient un nom identifiable, puis pourquoi je veux pouvoir
distinguer entre les types et les autres choses. Je n'explique
effectivement pas pourquoi je ne distingue pas entre les constantes et
les non constantes, de même que je n'explique pas pourquoi je ne
distingue pas entre les types flottants et les types entiers.
Globalement, je crois que c'est juste, mais étant donné l'histoire de
distinguer les constantes en C/C++ (parce qu'une telle tradition
n'existait pas dans le monde de Pascal, d'où je viens), je vois qu'une
explication pourquoi ne pas distinguer les constantes pourrait être
utile.
En passant, je n'ai jamais vu cette tradition des constantes en
majuscules en dehors de la famille C -- en Pascal et ces déscendants
directs (Modula-2 et Modula-3 au moins), ce sont les mots clé qui sont
tout en majuscule, et c'est AMHA encore la meilleur tradition, même si
on ne peut pas l'appliquer en C/C++. En Ada, je n'ai vu aucune
différence entre les variables et les constantes dans les exemples que
j'ai pu voir, et je n'ai rien vu tout en majuscules. En Eiffel, au moins
dans les exemples que j'ai pu voir, c'était les types qui étaient tout
en majuscule. Je n'ai pas trouvé des symboles (constante ou d'autres)
tout en majuscules dans le code elisp qui pilote emacs non plus (mais je
ne crois pas qu'elisp ait des constantes, dans le sens que C/C++ les a).
--
James Kanze GABI Software mailto:kanze@gabi-soft.fr
Conseils en informatique orientée objet/ http://www.gabi-soft.fr
Beratung in objektorientierter Datenverarbeitung
11 rue de Rambouillet, 78460 Chevreuse, France, +33 (0)1 30 23 45 16
"Michel Michaud" wrote in message news:<frIjb.5501$...
En fait, je vois bien plus souvent l'idée de ne pas mettre les constantes en majuscules présentée sans nuance...
Disons qu'a priori, je m'attendrais plutôt à voir des raisons pourquoi on distingue entre deux choses. Si on ne distingue pas, on n'en parle pas.
Donc, quand je présente mes règles, j'explique pourquoi je veux que les macros aient un nom identifiable, puis pourquoi je veux pouvoir distinguer entre les types et les autres choses. Je n'explique effectivement pas pourquoi je ne distingue pas entre les constantes et les non constantes, de même que je n'explique pas pourquoi je ne distingue pas entre les types flottants et les types entiers.
Globalement, je crois que c'est juste, mais étant donné l'histoire de distinguer les constantes en C/C++ (parce qu'une telle tradition n'existait pas dans le monde de Pascal, d'où je viens), je vois qu'une explication pourquoi ne pas distinguer les constantes pourrait être utile.
En passant, je n'ai jamais vu cette tradition des constantes en majuscules en dehors de la famille C -- en Pascal et ces déscendants directs (Modula-2 et Modula-3 au moins), ce sont les mots clé qui sont tout en majuscule, et c'est AMHA encore la meilleur tradition, même si on ne peut pas l'appliquer en C/C++. En Ada, je n'ai vu aucune différence entre les variables et les constantes dans les exemples que j'ai pu voir, et je n'ai rien vu tout en majuscules. En Eiffel, au moins dans les exemples que j'ai pu voir, c'était les types qui étaient tout en majuscule. Je n'ai pas trouvé des symboles (constante ou d'autres) tout en majuscules dans le code elisp qui pilote emacs non plus (mais je ne crois pas qu'elisp ait des constantes, dans le sens que C/C++ les a).
-- James Kanze GABI Software mailto: Conseils en informatique orientée objet/ http://www.gabi-soft.fr Beratung in objektorientierter Datenverarbeitung 11 rue de Rambouillet, 78460 Chevreuse, France, +33 (0)1 30 23 45 16
kanze
"Michel Michaud" wrote in message news:<SjIjb.5499$...
Dans news:bmk9ql$jlr$, Sylvain
Quel est l'intêret de distinguer les constantes des autre varaibles ?
Pouvoir distinguer facilement les constantes des autres variables ?
(Faciliter la compréhension du code. Quel est l'intérêt d'avoir des identificateurs significatifs ? ...)
Mais qu'est-ce qui distingue une constante d'une autre variable ?
Et c'est une vraie question. Ce n'est pas le fait qu'elle ne change pas. Je ne crois pas que par « constante », tu comprends des paramètres d'une fonction -- tu n'écris pas :
void f( MaClasse const& LE_PARAMETRE ) ...
par exemple. Intuitivement, je crois savoir, mais je n'arrive pas non plus à le définir de façon claire (peut-être parce que je n'ai pas essayé).
-- James Kanze GABI Software mailto: Conseils en informatique orientée objet/ http://www.gabi-soft.fr Beratung in objektorientierter Datenverarbeitung 11 rue de Rambouillet, 78460 Chevreuse, France, +33 (0)1 30 23 45 16
"Michel Michaud" <mm@gdzid.com> wrote in message
news:<SjIjb.5499$Z_2.435524@news20.bellglobal.com>...
Dans news:bmk9ql$jlr$1@news-reader4.wanadoo.fr, Sylvain
Quel est l'intêret de distinguer les constantes des autre varaibles
?
Pouvoir distinguer facilement les constantes des autres variables ?
(Faciliter la compréhension du code. Quel est l'intérêt d'avoir des
identificateurs significatifs ? ...)
Mais qu'est-ce qui distingue une constante d'une autre variable ?
Et c'est une vraie question. Ce n'est pas le fait qu'elle ne change pas.
Je ne crois pas que par « constante », tu comprends des paramètres d'une
fonction -- tu n'écris pas :
void
f( MaClasse const& LE_PARAMETRE ) ...
par exemple. Intuitivement, je crois savoir, mais je n'arrive pas non
plus à le définir de façon claire (peut-être parce que je n'ai pas
essayé).
--
James Kanze GABI Software mailto:kanze@gabi-soft.fr
Conseils en informatique orientée objet/ http://www.gabi-soft.fr
Beratung in objektorientierter Datenverarbeitung
11 rue de Rambouillet, 78460 Chevreuse, France, +33 (0)1 30 23 45 16
"Michel Michaud" wrote in message news:<SjIjb.5499$...
Dans news:bmk9ql$jlr$, Sylvain
Quel est l'intêret de distinguer les constantes des autre varaibles ?
Pouvoir distinguer facilement les constantes des autres variables ?
(Faciliter la compréhension du code. Quel est l'intérêt d'avoir des identificateurs significatifs ? ...)
Mais qu'est-ce qui distingue une constante d'une autre variable ?
Et c'est une vraie question. Ce n'est pas le fait qu'elle ne change pas. Je ne crois pas que par « constante », tu comprends des paramètres d'une fonction -- tu n'écris pas :
void f( MaClasse const& LE_PARAMETRE ) ...
par exemple. Intuitivement, je crois savoir, mais je n'arrive pas non plus à le définir de façon claire (peut-être parce que je n'ai pas essayé).
-- James Kanze GABI Software mailto: Conseils en informatique orientée objet/ http://www.gabi-soft.fr Beratung in objektorientierter Datenverarbeitung 11 rue de Rambouillet, 78460 Chevreuse, France, +33 (0)1 30 23 45 16
Fabien LE LEZ
On 17 Oct 2003 01:46:24 -0700, wrote:
Mais qu'est-ce qui distingue une constante d'une autre variable ?
Perso, j'aurais tendance à mettre en majuscules les constantes connues à la compilation, i.e. celles qu'on aurait très bien pu remplacer par des "magic values" si on codait comme des gorets.
On 17 Oct 2003 01:46:24 -0700, kanze@gabi-soft.fr wrote:
Mais qu'est-ce qui distingue une constante d'une autre variable ?
Perso, j'aurais tendance à mettre en majuscules les constantes connues
à la compilation, i.e. celles qu'on aurait très bien pu remplacer par
des "magic values" si on codait comme des gorets.
Mais qu'est-ce qui distingue une constante d'une autre variable ?
Perso, j'aurais tendance à mettre en majuscules les constantes connues à la compilation, i.e. celles qu'on aurait très bien pu remplacer par des "magic values" si on codait comme des gorets.
Mais qu'est-ce qui distingue une constante d'une autre variable ?
Perso, j'aurais tendance à mettre en majuscules les constantes connues à la compilation, i.e. celles qu'on aurait très bien pu remplacer par des "magic values" si on codait comme des gorets.
Quel info ca apporte?
En fait, je veux une convention propre pour les macros. Si en plus il y en a une pour les constantes, je n'en vois pas reellement l'utilite mais ca n'a pas reellement d'importance. Je ne vois un probleme que si c'est la meme convention que pour les macros (et que les constantes definies par des macros doivent respecter la convention des macros plutot que celle des constantes).
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
Fabien LE LEZ <gramster@gramster.com> writes:
On 17 Oct 2003 01:46:24 -0700, kanze@gabi-soft.fr wrote:
Mais qu'est-ce qui distingue une constante d'une autre variable ?
Perso, j'aurais tendance à mettre en majuscules les constantes connues
à la compilation, i.e. celles qu'on aurait très bien pu remplacer par
des "magic values" si on codait comme des gorets.
Quel info ca apporte?
En fait, je veux une convention propre pour les macros. Si en plus il
y en a une pour les constantes, je n'en vois pas reellement l'utilite
mais ca n'a pas reellement d'importance. Je ne vois un probleme que
si c'est la meme convention que pour les macros (et que les constantes
definies par des macros doivent respecter la convention des macros
plutot que celle des constantes).
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
Mais qu'est-ce qui distingue une constante d'une autre variable ?
Perso, j'aurais tendance à mettre en majuscules les constantes connues à la compilation, i.e. celles qu'on aurait très bien pu remplacer par des "magic values" si on codait comme des gorets.
Quel info ca apporte?
En fait, je veux une convention propre pour les macros. Si en plus il y en a une pour les constantes, je n'en vois pas reellement l'utilite mais ca n'a pas reellement d'importance. Je ne vois un probleme que si c'est la meme convention que pour les macros (et que les constantes definies par des macros doivent respecter la convention des macros plutot que celle des constantes).
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
kanze
Fabien LE LEZ wrote in message news:...
On 17 Oct 2003 01:46:24 -0700, wrote:
Mais qu'est-ce qui distingue une constante d'une autre variable ?
Perso, j'aurais tendance à mettre en majuscules les constantes connues à la compilation, i.e. celles qu'on aurait très bien pu remplacer par des "magic values" si on codait comme des gorets.
C-à-d celles qui vont être initialisées à partir d'un fichier de configuration dans la prochaine version ?
-- James Kanze GABI Software mailto: Conseils en informatique orientée objet/ http://www.gabi-soft.fr Beratung in objektorientierter Datenverarbeitung 11 rue de Rambouillet, 78460 Chevreuse, France, +33 (0)1 30 23 45 16
Fabien LE LEZ <gramster@gramster.com> wrote in message
news:<t9dvovs5dqjfvo96l261bibhp9r1cfoijf@4ax.com>...
On 17 Oct 2003 01:46:24 -0700, kanze@gabi-soft.fr wrote:
Mais qu'est-ce qui distingue une constante d'une autre variable ?
Perso, j'aurais tendance à mettre en majuscules les constantes connues
à la compilation, i.e. celles qu'on aurait très bien pu remplacer par
des "magic values" si on codait comme des gorets.
C-à-d celles qui vont être initialisées à partir d'un fichier de
configuration dans la prochaine version ?
--
James Kanze GABI Software mailto:kanze@gabi-soft.fr
Conseils en informatique orientée objet/ http://www.gabi-soft.fr
Beratung in objektorientierter Datenverarbeitung
11 rue de Rambouillet, 78460 Chevreuse, France, +33 (0)1 30 23 45 16
Mais qu'est-ce qui distingue une constante d'une autre variable ?
Perso, j'aurais tendance à mettre en majuscules les constantes connues à la compilation, i.e. celles qu'on aurait très bien pu remplacer par des "magic values" si on codait comme des gorets.
C-à-d celles qui vont être initialisées à partir d'un fichier de configuration dans la prochaine version ?
-- James Kanze GABI Software mailto: Conseils en informatique orientée objet/ http://www.gabi-soft.fr Beratung in objektorientierter Datenverarbeitung 11 rue de Rambouillet, 78460 Chevreuse, France, +33 (0)1 30 23 45 16
Fabien LE LEZ
On 17 Oct 2003 07:55:28 -0700, wrote:
C-à-d celles qui vont être initialisées à partir d'un fichier de configuration dans la prochaine version ?
Si jamais ça arrive (dans mon code), il y a des chances pour que la "constante" soit alors modifiable en cours d'exécution (GUI oblige). Du coup, ça devient une variable globale, que je transforme généralement en appel de fonction. Du coup, il y a des modifications à faire de toutes façons ;-)
En fait, j'utilise plutôt des constantes en majuscules à visibilité réduire à une fonction, et les majuscules m'aide à savoir que l'objet gardera la même valeur jusqu'à la fin de la fonction.
On 17 Oct 2003 07:55:28 -0700, kanze@gabi-soft.fr wrote:
C-à-d celles qui vont être initialisées à partir d'un fichier de
configuration dans la prochaine version ?
Si jamais ça arrive (dans mon code), il y a des chances pour que la
"constante" soit alors modifiable en cours d'exécution (GUI oblige).
Du coup, ça devient une variable globale, que je transforme
généralement en appel de fonction. Du coup, il y a des modifications à
faire de toutes façons ;-)
En fait, j'utilise plutôt des constantes en majuscules à visibilité
réduire à une fonction, et les majuscules m'aide à savoir que l'objet
gardera la même valeur jusqu'à la fin de la fonction.
C-à-d celles qui vont être initialisées à partir d'un fichier de configuration dans la prochaine version ?
Si jamais ça arrive (dans mon code), il y a des chances pour que la "constante" soit alors modifiable en cours d'exécution (GUI oblige). Du coup, ça devient une variable globale, que je transforme généralement en appel de fonction. Du coup, il y a des modifications à faire de toutes façons ;-)
En fait, j'utilise plutôt des constantes en majuscules à visibilité réduire à une fonction, et les majuscules m'aide à savoir que l'objet gardera la même valeur jusqu'à la fin de la fonction.
Mais qu'est-ce qui distingue une constante d'une autre variable ?
Perso, j'aurais tendance à mettre en majuscules les constantes connues à la compilation, i.e. celles qu'on aurait très bien pu remplacer par des "magic values" si on codait comme des gorets.
Quel info ca apporte?
Qu'on peut les utiliser comme taille de tableau, ou encore comme paramètre template ?
-- Loïc
Jean-Marc Bourguet wrote:
Fabien LE LEZ <gramster@gramster.com> writes:
On 17 Oct 2003 01:46:24 -0700, kanze@gabi-soft.fr wrote:
Mais qu'est-ce qui distingue une constante d'une autre variable ?
Perso, j'aurais tendance à mettre en majuscules les constantes connues
à la compilation, i.e. celles qu'on aurait très bien pu remplacer par
des "magic values" si on codait comme des gorets.
Quel info ca apporte?
Qu'on peut les utiliser comme taille de tableau, ou encore comme
paramètre template ?
Mais qu'est-ce qui distingue une constante d'une autre variable ?
Perso, j'aurais tendance à mettre en majuscules les constantes connues à la compilation, i.e. celles qu'on aurait très bien pu remplacer par des "magic values" si on codait comme des gorets.
Quel info ca apporte?
Qu'on peut les utiliser comme taille de tableau, ou encore comme paramètre template ?
-- Loïc
Jean-Marc Molina
ce qui ne marche pas forcement tres bien..;-)
En effet le plus simple c'est de préfixer les propriétés de ton enum par le nom de l'enum : enum MON_ENUM { MON_ENUM_ABSOLUTE = 0, MON_ENUM_SEMI_RELATIVE = 1, MON_ENUM_RELATIVE = 2 };
On peut voir ça dans des bibliothèques comme MFC ou DirectX par exemple.
JM
-- Clé AntiPourriel : PASUNPOURRIEL (ne pas retirer)
ce qui ne marche pas forcement tres bien..;-)
En effet le plus simple c'est de préfixer les propriétés de ton enum par le
nom de l'enum :
enum MON_ENUM
{
MON_ENUM_ABSOLUTE = 0,
MON_ENUM_SEMI_RELATIVE = 1,
MON_ENUM_RELATIVE = 2
};
On peut voir ça dans des bibliothèques comme MFC ou DirectX par exemple.
JM
--
Clé AntiPourriel : PASUNPOURRIEL (ne pas retirer)
En effet le plus simple c'est de préfixer les propriétés de ton enum par le nom de l'enum : enum MON_ENUM { MON_ENUM_ABSOLUTE = 0, MON_ENUM_SEMI_RELATIVE = 1, MON_ENUM_RELATIVE = 2 };
On peut voir ça dans des bibliothèques comme MFC ou DirectX par exemple.
JM
-- Clé AntiPourriel : PASUNPOURRIEL (ne pas retirer)