Noms de fonctions en C++: capitaliser ou non? [fermé]

Quelle est la convention pour nommer les fonctions en C++?

Je viens de L'environnement Java, donc je nomme habituellement quelque chose comme:

myFunction(...) {
}

J'ai vu du code mixte en C++,

myFunction(....)
MyFunction(....)
Myfunction(....)

Quelle est la bonne façon?

En outre, Est-ce la même chose pour une méthode de classe ainsi qu'une méthode non-Classe?

50
demandé sur Jarvis 2009-11-21 21:24:27

12 réponses

Il n'y a pas de 'manière correcte'. Ils sont tous syntaxiquement corrects, bien qu'il existe certaines conventions. Vous pouvez suivre le Google style guide , bien qu'il existe d'autres là-bas.

De ce guide:

Les fonctions régulières ont une casse mixte; les accesseurs et les mutateurs correspondent au nom de la variable: MyExcitingFunction (), MyExcitingMethod(), my_exciting_member_variable (), set_my_exciting_member_variable ().

38
répondu int3 2016-12-12 22:26:28

Depuis C++11, vous pouvez utiliser soit snake_case ou camelCase pour les noms de fonction.

C'est parce que pour faire fonctionner une classe comme expression de plage dans un pour-boucle basée sur la gamme, Vous devez définir des fonctions appelées begin et end (sensibles à la casse) pour cette classe.

Par conséquent, en utilisant par exemple PascalCase pour les noms de fonctions, vous devez rompre la cohérence de nommage dans votre projet si vous avez besoin de faire fonctionner une classe avec la plage pour.

28
répondu emlai 2018-01-18 16:30:00

La plupart du code que j'ai vu est camelCase fonctions (lettre initiale minuscule), et ProperCase/PascalCase noms de classe, et (le plus souvent), snake_case variables.

Mais, pour être honnête, ce n'est que des conseils. La chose la plus importante est d'être cohérente dans votre base de code. Choisissez ce qui semble naturel / fonctionne pour vous, et s'y tenir. Si vous rejoignez un projet en cours, suivez leurs normes.

23
répondu Donnie 2016-01-25 23:02:10

Les plus courants que je vois dans le code de production sont (dans cet ordre):

myFunctionName     // lower camel case

MyFunctionName     // upper camel case

my_function_name   // K & R ?

Je trouve que la convention de nommage qu'un programmeur utilise dans le code C++ a généralement quelque chose à voir avec son arrière-plan de programmation.

Par exemple, les programmeurs ex-java ont tendance à utiliser un cas de chameau inférieur pour les fonctions

14
répondu Steven Keith 2009-11-21 18:40:45

Si vous regardez la bibliothèques standard le modèle est généralement my_function, mais chaque personne semble avoir leur propre manière :-/

11
répondu TofuBeer 2009-11-21 18:28:25

Personnellement, je préfère thisStyle à ThisStyle pour les fonctions. C'est vraiment pour le goût personnel, probablement influencé par Java, mais j'aime bien que les fonctions et les classes soient différentes.

Si je devais argumenter pour cela, cependant, je dirais que la distinction est un peu plus qu'esthétique. Il économise un tout petit peu de pensée lorsque vous rencontrez la construction de style de fonction d'un temporaire. Contre cela, vous pouvez soutenir que peu importe si Foo(1,2,3) est un appel de fonction ou non-s'il s'agit d'un constructeur, alors il agit exactement comme une fonction renvoyant un Foo par valeur de toute façon.

La convention évite également de la fonction avec le même nom-comme-une-classe-est-pas-une-erreur fiasco C++ hérite parce que C a une balise espace de noms:

#include <iostream>

struct Bar {
    int a;
    Bar() : a(0) {}
    Bar(int a) : a(a) {}
};

struct Foo {
    Bar b;
};

int Bar() {
    return 23;
}

int main() {
    Foo f;
    f.b = Bar();
    // outputs 23
    std::cout << f.b.a << "\n";
    // This line doesn't compile. The function has hidden the class.
    // Bar b;
}

Bar est, après tout, à la fois un nom et un verbe, donc pourrait raisonnablement être défini comme une classe à un endroit et une fonction à un autre. De toute évidence, il existe de meilleurs moyens d'éviter le conflit, tels que l'utilisation correcte des espaces de noms. Comme je l'ai dit, c'est vraiment juste parce que je préfère l'apparence des fonctions avec des initiales minuscules plutôt que parce qu'il est réellement nécessaire de les distinguer des classes.

6
répondu Steve Jessop 2009-11-22 02:54:33

Contrairement à Java, C++ n'a pas de "style standard". À peu près la société dans laquelle j'ai déjà travaillé a son propre style de codage C++, et la plupart des projets open source ont aussi leurs propres styles. Quelques conventions de codage que vous voudrez peut-être regarder:

Il est intéressant de noter que C++ les normes de codage précisent souvent quelles parties de la langue ne pas utiliser . Par exemple, le guide de Style Google C++ indique "Nous n'utilisons pas d'exceptions C++". Presque partout où j'ai travaillé a interdit certaines parties de C++. (Un endroit où j'ai travaillé a essentiellement dit: "programme en C, mais new et delete sont corrects"!)

5
répondu Laurence Gonsalves 2018-07-15 14:18:18

Je pense que c'est une question de préférence, même si je préfère myFunction(...)

4
répondu sud03r 2009-11-21 18:29:27

Comme d'autres l'ont dit, il n'y a pas une telle chose en C++. Cela dit, j'ai tendance à utiliser le style dans lequel la bibliothèque standard est écrite-K & R.

Aussi, voir L'entrée FAQ par Bjarne Stroustrup .

4
répondu Nemanja Trifunovic 2009-11-21 19:01:35

Faites comme vous le souhaitez, tant que vous êtes cohérent parmi vos dev. groupe. toutes les quelques années, les conventions changent..... (remmeber nIntVAr)...

3
répondu Dani 2009-11-21 18:28:07

Il n'y a pas tellement de manière 'correcte' pour la langue. C'est une préférence plus personnelle ou ce que la norme est pour votre équipe. J'utilise habituellement myFunction () quand je fais mon propre code. En outre, un style que vous n'avez pas mentionné que vous verrez souvent en c++ est my_function () - pas de majuscules, de soulignements au lieu d'espaces.

Vraiment, il est juste dicté par le code dans lequel vous travaillez. Ou, si c'est votre projet, votre propre préférence personnelle, alors.

3
répondu Daniel Bingham 2009-11-21 18:28:26

Tout dépend de votre définition de correct. Il y a plusieurs façons dont vous pouvez évaluer votre style de codage. La lisibilité est important (pour moi). C'est pourquoi j'utiliserais la façon my_function d'écrire les noms de fonctions et les noms de variables.

2
répondu Peter Stuifzand 2009-11-21 18:34:12