2009-03-26 4 views
2

Visual Studio semble vouloir mettre du code de contructeur de classe et du code de gestion d'événements dans le fichier .h. Je n'ai participé qu'à de petits projets d'un seul homme et je me demandais quelle était la norme générale de l'industrie.Meilleures pratiques dans Visual Studio C++

Pour les projets d'application Visual C++, quel code placer dans le fichier .h? Je suis habitué à la manière classique en mode C++ de déclarer votre classe dans le fichier .h et de coder dans le fichier .cpp. Est-ce que cela s'applique toujours aux applications Visual Studio? J'ai un fort arrière-plan C qui expliquerait ma préférence pour cela. Le compilateur VSC++ ne semble pas déranger.

En bref: Qu'est-ce qu'on est censé mettre dans quel type de fichier?

TIA termine

Répondre

3

Il n'existe pas de norme industrielle largement acceptée. En mettant des définitions de fonctions (courtes) dans l'en-tête, vous donnez au compilateur une meilleure chance d'intégrer le code. L'avantage est que cela peut rendre le code plus rapide (garder ces fonctions courtes, cependant). Cependant, cela revient à exposer plus de code aux clients qui incluent cet en-tête, ce qui vous oblige (ou vos collègues) à recompiler plus de fichiers lorsque vous modifiez l'implémentation.

Vous devez également prendre en compte le coût d'aller contre vos outils. Puisque les assistants de VC++ insistent pour mettre les fonctions dans les en-têtes, vous devez les déplacer à chaque fois si vous n'êtes pas d'accord.

C'est vraiment spécifique au projet, je dirais.

+0

Merci Carl. Ce que tu dis est ce que j'ai remarqué. J'avais besoin de confirmation que je ne voyais pas ce que je voulais voir. – EndsOfInvention

2

Pour Visual C++ Projets d'application quel code serait-on mettre dans le fichier .h ? Je suis habitué au mode classique façon de déclarer votre classe dans le fichier .h et de coder dans le fichier .cpp. Est-ce que cela s'applique toujours aux applications Visual Studio ?

Courte: Oui Long: Dépend de la personne ou de la langue. En C++, l'en-tête est pour déclarer et cpp pour le codage. C# vous avez un fichier (ou si vous utilisez des interfaces, 2)

3

Si vous utilisez MFC et vous parlez du code généré, il est préférable de le laisser seul.

Si vous essayez de faire du développement C++ « normal », mis aussi peu que vous pouvez vous en sortir avec l'en-tête, car cela signifie que le code client ne dépend pas trop de détails de mise en œuvre. Ce dont vous pouvez vous passer dépend un peu de l'utilisation des templates, et de la quantité d'indirection que votre budget de performance peut supporter.

1

Cela peut sembler mineur, mais rappelez-vous simplement que les en-têtes sont # inclus dans plusieurs endroits. (Et les en-têtes, y compris les en-têtes, compliquent les choses.) Chaque fois que vous changez un en-tête, beaucoup de fichiers vont être compilés à nouveau. Garder aussi peu de code change fréquemment dans l'en-tête réduit la recompilation des fichiers dépendants.

Une autre chose: un fichier d'en-tête épuré vous donne un aperçu rapide de ce qu'est une classe/forme a à offrir.

Questions connexes