Comment dois-je marquer les types dans les programmes C et C ++?

12

Dans ma réponse , j'ai utilisé _tà la fin des types, qui se sont terminés au mieux, controversés. C'est la pratique que j'utilise dans mes projets en cours.

typedef struct {
    int x;
    int y;
} point_t;

Cela devait être cohérent avec les types C de stddef.htype size_tou ptrdiff_t. Cependant, selon certains commentaires dans mes questions, _tpostfix semble être réservé à POSIX. Que dois-je utiliser à la place _t? Ou devrais-je continuer à utiliser de _ttoute façon?

Cette question concerne à la fois C et C ++. Si ces langues ont des conventions différentes, n'hésitez pas à y répondre.

Konrad Borowski
la source
2
Une convention courante consiste à avoir des noms de classe qui ressemblent à ceci. À ce stade, vous n'avez même pas besoin de suffixes. (C'est plus courant pour Java, .net, etc. Mais cela fonctionne également en C ++.)
cHao
1
c'est finalement une forme de notation hongroise. Et cette discussion est sans fin. Pour ma part, je suis contre et j'accepte la solution de cHao. Pourquoi? Parce que j'ai utilisé la notation hongroise pendant environ 4 ans pour tout, j'ai alors décidé de faire un projet sans lui et je ne l'ai pas manqué du tout. Et je n'y ai pas perdu de temps. Je l'ai donc complètement abandonné car il n'avait apparemment aucune valeur pour moi. Et je n'ai jamais regardé en arrière.
stijn
1
Voir cette question pour les identifiants réservés (y compris _t) stackoverflow.com/a/228797/14065
Martin York

Réponses:

16

Il n'y a pas de consensus au sein des communautés C et C ++ en ce qui concerne les types de dénomination.

Bien que le _tsuffixe soit en effet réservé par POSIX , certains préconiseront également d'utiliser le _tsuffixe pour vos propres types, tandis que d'autres soutiendront tout aussi catégoriquement que vous ne devriez pas tenter le destin en risquant des noms en double avec POSIX.

Des conventions de dénomination alternatives suggèrent l'utilisation d'un préfixe pour les types, tels que Cou T.

Bart van Ingen Schenau
la source
16

Je trouve les suffixes plutôt moche et donc à éviter _tetc. Une bonne alternative est d'utiliser une majuscule pour commencer les noms de type, donc Pointdans votre exemple ci-dessus.

William Morris
la source
3
et je trouve agréable d'avoir un style différent des types C standard, donc en lisant le code, vous pouvez facilement trouver ce qui provient du programme client et quelle est l'API
Nikko
1
Aussi ma technique préférée. Les types ont une lettre majuscule initiale. Tous les autres identificateurs ne sont pas des types et sont donc facilement visibles.
Martin York
J'ai toujours pensé que ça avait l'air très moche aussi. C'est bon de voir que les autres sont d'accord avec moi.
syb0rg
J'utilise uniquement PascalCase pour les types de pointeurs (à cause de langages comme C # et Java où PascalCase signifie classe, c'est-à-dire référence aux données) mais j'arrive d'où vous venez.
yyny
1

Cela dépend de toi. À moins qu'il n'y ait un conflit avec les mots réservés, vous êtes prêt à partir. Cependant, envisagez un scénario dans lequel vous travaillez dans une entreprise et où plusieurs personnes accèdent à la même base de code, et votre code parvient à une personne qui n'est pas au courant de votre habitude. Il / elle peut alors supposer que c'est un type réservé, surtout si vous écrivez quelque chose comme point_t. Donc, gardez-le plus simple, par exemple, point est plus simple que point_t. Et si vous voulez y ajouter quelque chose, ajoutez vos initiales.

Kamran
la source