Question

Le MFC a tous les noms de classe qui commencent par C. Par exemple, CFile et CGdiObject. Quelqu'un at-il vu utilisé ailleurs? Y at-il un guide de convention d'appellation officielle de Microsoft qui recommande ce style? Est-ce que l'idée provient de MFC ou était-ce un autre projet?

Était-ce utile?

La solution

Quelque chose d'un peu similaire est utilisé dans Symbian C ++, où la convention est que:

T classes sont des "valeurs", par exemple TChar, TInt32, TDES

classes de R sont des poignées à noyau (ou autres) des ressources, par exemple RFILE, RSocket

M classes sont mixins, qui comprend des interfaces (interprété comme mixins sans mise en oeuvre de fonction). La ligne directrice est que l'héritage multiple devrait impliquer au plus 1 classe non-M.

classes C sont à peu près tout le reste, et dérivent de CBase, qui a des choses en elle pour aider à la manutention des ressources.

HBufC existe principalement pour générer des messages confus sur les forums Symbian, et ayant son préfixe propre est juste le début. H signifie « hein? », Ou peut-être « Haw, haw! Vous avez pas TSL! » ; -)

est proche de l'esprit Apps notation hongroise plutôt que des systèmes de notation hongroise. Le préfixe vous dit quelque chose au sujet de la classe que vous pourriez rechercher dans la documentation, mais que vous ne savez pas autrement. Le point entier de nommer quoi que ce soit dans la programmation est de fournir de tels conseils et rappels , sinon vous auriez tout simplement appeler vos classes « Class001 », « Class002 », etc.

Systèmes hongrois vous indique juste le type d'une variable, l'OMI a rien à être très excité, surtout dans un langage comme C ++ où les types ont tendance à être soit répété en permanence ou bien complètement caché par des paramètres du modèle. Son analogique pour nommer types est la pratique Java de nommer toutes les interfaces avec I. Encore une fois, je ne suis pas très excité à ce sujet (et non plus les bibliothèques Java standard), mais si vous allez définir une interface pour chaque classe , en plus des interfaces qui sont effectivement utilisées pour le polymorphisme dans des situations non-test, vous devez trouver un moyen de distinguer les deux.

Autres conseils

Il est le mal. Ne pas utiliser la notation hongroise pour quoi que ce soit, mais les choses abstraites.

Par exemple, btnSubmit est ok pour décrire un bouton nommé Submit (qui aurait un lblSubmit d'accompagnement pour l'étiquette à côté du bouton)

Mais les choses comme CMyClass pour la classe et pour uiCount entier non signé count nommé ne contribue pas à des programmeurs et conduit tout simplement à taper un gaspillage supplémentaire.

C'était un vieux C ++ de style de codage et MFC est probablement l'une des dernières choses à utiliser.

Il est généralement juste une convention de C ++ (et peut-être quelques autres langues), et donc il a commencé à tomber en disgrâce que les langues sont devenues plus interopérables, par COM et .NET.

Vous voyez toujours son cousin, le préfixe « I » pour les interfaces, assez souvent. Je l'ai toujours trouvé intéressant que « je » quand survécu « C » est mort, mais c'était probablement parce que les interfaces ont été utilisés si fortement l'interopérabilité COM.

Je me souviens compilateurs Borland sont à venir avec les bibliothèques où les noms de classe ont commencé par « T ». Probablement pour "type":)

Il y a quelques années convention de nommage est cruciale pour aider à identifier la classe, le type de même le regroupement de la classe. Ne pas oublier l'époque il n'y avait aucun espace de noms et non / IntelliSense limité. C est une forme de notation hongroise, mais certainement rendu populaire par MFC. Borland Delphi et utilisait T - comme préfixe pour le type

Alors que MFC et beaucoup de logiciels écrits pour Windows utilisé la convention « C » pour les classes, vous ne trouvez pas généralement ce dernier dans les logiciels écrits pour les plates-formes UNIX. Je pense qu'il était une habitude très fortement encouragée par Visual C ++. Je me souviens que Visual C ++ 6.0 serait un préfixe « C » pour toutes les classes que l'on créé avec l'assistant de classe.

Je ne peux pas répondre à toutes vos questions, mais pour autant que je sache, il est juste de distinguer les classes MFC d'autres classes -. Une forme de notation hongroise

Fait intéressant, il est apparemment controversé pas seulement en dehors de MS, mais à l'intérieur comme .

Voir ici: http://www.jelovic.com/articles/stupid_naming.htm pour un long article sur cette question.

Ces conventions pour les variables sont utiles pour les langues comme Fortran où vous n'avez pas besoin de déclarer les types de vos variables avant de les utiliser. Je crois me rappeler les valeurs que les variables qui est des noms qui commencent par « i » ou « j » par défaut à des entiers et des variables qui est des noms qui commencent par « r » et d'autres lettres par défaut à réels (float).

Que les gens utilisent la même pour les langues où vous avez besoin de déclarer des variables - ou les définitions de classe -

est probablement une relique de quelqu'un malentendu les anciennes conventions de code des langues comme Fortran où il fait Mattered.

Lors de l'écriture des applications qui utilisent les bibliothèques Qt, nous utilisons une convention de nommage qui distingue les classes qui sont directement ou indirectement dérivées de QObject des classes qui ne sont pas. Ceci est utile parce que vous pouvez dire à partir du nom de la classe ou non il prend en charge les signaux / slots, les propriétés et tous les autres goodies qui viennent de QObject.

nous utilisons au travail, comme beaucoup d'autres conventions de nommage

par beaucoup je voulais dire pour les classes C, p pour pointeur, m_ pour les membres, S_ pour les membres statiques, n pour entier ... pas beaucoup de documents

Personnellement, je trouve que la notation hongroise me aide, en ce que je peux regarder un écran plein de variables et de savoir instantanément ce qu'ils sont que je tente et absorber la logique. Votre seul argument contre je vois « frappe supplémentaire »

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top