7
votes

Ordre des fonctions dans le fichier CPP

existe une norme dans l'ordre des fonctions dans le fichier CPP?


Il y a:

  • Fonctions globales
  • constructeurs
  • Destructeurs
  • getters
  • setters
  • FONCTIONS ALGORITMIQUES
  • Si Qt, Slots
  • Si une classe dérivée, des fonctions annulées
  • FONCTIONS STATIQUES
  • Tout type de fonction que je ne peux pas nommer ...

    Dans le fichier CPP, y a-t-il un bon moyen de commander?

    Je les ordonne comme je l'ai écrit dans la liste ci-dessus.

    Je sais que cela ne change rien, mais je me soucie du bon code ...

    Comment commandez-vous?


0 commentaires

9 Réponses :


2
votes

Intérieur d'une classe, il n'y a pas de règle stricte de la langue. En dehors de la classe, vous devez vous assurer qu'une déclaration précède une définition lorsque les deux sont séparés.

En général, vous constaterez que l'équipe avec laquelle vous travaillez sera définie sur toutes les règles de format concernant les fichiers source. C'est juste une esthétique, cependant, car il n'a aucun effet sur l'exécution effective du programme.


0 commentaires

11
votes

Ma commande personnelle est donnée par la commande à l'intérieur de la déclaration de classe: xxx

ressemblerait à cela dans .cpp: xxx

La commande est définie comme suit:

  1. constructeurs + destructeurs
  2. (uniquement pour les projets QT :) signaux
  3. Public Méthodes - commandé par l'importance, par exemple Tout d'abord vient start () et stop () , puis getters et setters
  4. Méthodes protégées commandées par l'importance
  5. Membres protégés
  6. Méthodes privées
  7. membres privés

    espère que cela aide.

    ciao, Chris


0 commentaires

4
votes

Cela peut sembler idiot, mais j'essaie de commander mes méthodes publiques par "l'ordre" normal "usage", les constructeurs arrivent en premier, puis les méthodes de Dostuff, puis des méthodes de fermeture ... L'exception à cette "règle" est le ~ destructeur, qui vient après le dernier constructeur.

Le dernier vient toute méthode privée "assistante".

J'utilise cette même approche dans toutes les langues ... (C ++, Java, C #, Perl, SH ou autrefois) et personne ne s'est effectivement abattu pour elle (encore).

acclamations. Keith.


0 commentaires

3
votes

La façon dont je suis utilisé pour commander est de la plate-forme Symbian où la commande est la suivante:

  • Public, protégé, des méthodes privées
  • Variables privées publiques, protégées,

    La raison de celle-ci a été guidée par des règles pour étendre les interfaces déjà publiées pour la compatibilité à l'envers. Comme la chose la plus probable à ajouter est une variable privée, elles sont placées à la fin de la classe, de sorte que l'ajout d'un nouveau ne modifie pas l'emplacement d'une autre variables de la classe. Les choses qui changent l'interface alors viennent avant cela dans l'ordre «public, protégé». La commande est ensuite copiée pour les méthodes de classe, bien que cela ne modifie pas l'emplacement de la mémoire des variables dans une instance de la classe.

    et ne posez pas de questions sur les directives pour les fonctions virtuelles;)


0 commentaires

2
votes

du plus important au plus bas:

  • Variables privées (ne plaisant pas, ils révèlent la plupart des travaux intérieurs de votre classe)
  • constructeurs
  • Méthodes publiques
  • Méthodes protégées
  • Méthodes privées

    Les méthodes elles-mêmes doivent être commandées par leur «niveau d'abstraction»: niveau supérieur: haut, niveau inférieur: bas, en d'autres termes, structurez vos méthodes afin qu'elles n'appellent que des méthodes ci-dessous.


0 commentaires

1
votes

J'utilise mon IDE pour goto les fonctions de mon fichier CPP, et cela l'ordonne d'alphabétiquement, ou je fais une recherche, et avec la recherche pendant que vous tapez, ceci est très rapide.

Alors pour moi, il n'y a absolument aucune différence de flux de travail en fonction de l'ordre des fonctions dans le fichier .cpp ...


0 commentaires

2
votes

La norme de notre société est la suivante:

  1. constructeurs
  2. Destructeurs
  3. Méthodes publiques (triées alphabétiquement)
  4. Méthers privés (triés alphabétiquement)

2 commentaires

Je ne liens pas l'alphabétique. Si vous refactez le nom, cela pourrait changer de position. Premièrement, c'est une autre chose à retenir de faire. Deuxièmement, cela implique une différence plus compliquée dans le contrôle de la source de déterminer ce qui a changé.


Il est vraiment rare que nous refloyons des noms comme si vous suggérez. Surtout parce que nous devons gérer la compatibilité de la plupart de notre code plus ancien (nous avons des produits qui ont été expédiés depuis plus de 15 ans). La plupart du code C ++ disparaissent, remplacé lentement avec C # et VB.NET. C'est ma compréhension que les derniers composants sont à la retraite au début de l'année prochaine. Les normes de codage .NET sont différentes.



1
votes

Parfois, il est pratique d'avoir quelques fonctions d'assistant locales dans un espace de noms non nommé (AKA Espace anonyme ) dans le fichier CPP. Si tel est le cas, je vous recommande de disposer de ces fonctions sur le dessus (dans le fichier CPP), juste pour être sûr qu'ils sont définis avant toute autre fonction qui les appellerait.


0 commentaires

3
votes

Ceci est beaucoup moins important maintenant qu'auparavant. Tous les IDs décents de ces jours ont (ou devraient avoir) la possibilité d'aller à une définition ou à une référence avec un clic droit ou un autre geste simple. La recherche dans le code est une perte de temps.

Je les ordonne généralement: Constructeur Destructeur Quel que soit l'ordre que j'ai implémenter le reste

I Ensuite, je reviens ensuite et groupe logique / fonctionnalité associé ensemble

Il est probablement plus important de grouper des choses / commandes liées dans un fichier d'en-tête pour la lisibilité que dans un fichier CPP.


0 commentaires