9
votes

Ma convention de dénomination variable a-t-elle un nom?

Alors je vais par ce schéma de nommage Delphi d'arguments commencée par A, les vars vars commencent par F et les vars locaux commencent par M. Est-ce que ce schéma a un nom? Je le vois beaucoup dans la source Delphi que j'aimerais en savoir plus à ce sujet, mais je ne suis pas sûr de ce qu'on appelle.


2 commentaires

Nommer les variables globales avec f demande de confusion. f est la convention pour les noms de champ, pas globaux.


Droite, je voulais dire des variables de classe, je n'utilise presque jamais de globaux donc je viens d'appeler la mauvaise chose.


5 Réponses :


7
votes

En général, cela ressemble à la notation hongroise - mais cela ne spécifie pas la convention A, F ou M, en particulier, juste la préparation des informations de type dans le nom.


4 commentaires

Je pensais que le type de vente de la Hongrie et le contenu de là - comme Pivar si Var est un pointeur à un INT et spécifié également un ensemble de valeurs à utiliser. Je veux dire, je pensais que c'était plus spécifique que «préfixer», mais je pourrais me tromper.


La notation hongroise peut être faite de différentes manières, mais en règle générale, mettre les informations spécifiques à la langue dans le nom de la variable s'appelle la notation hongroise. Joel affirme que cela devrait être utilisé différemment, mais quelle que soit la manière dont il "devrait" être, c'est ce que les gens l'appellent. Joelonsoftware.com/articles/wrong.html


Encore une fois, le système de type de Delphi fait les problèmes que les "bons hongrois" de Joel sont obsolètes. Si vous souhaitez un type particulier d'entier ou d'une chaîne qui ne compatible pas compatible avec des entiers ou des chaînes normales, vous pouvez le déclarer à l'aide du mot-clé "Type" à l'intérieur de la définition de type et que le compilateur attrape ces erreurs pour vous.


Non, maçon, ce sont toujours compatibles. Par exemple, vous pouvez attribuer un double à un tdateTime et inversement, malgré leur être deux types distincts. De même pour Ansistration et UTF8String à Delphi 7-2007. Ce que vous êtes pas autorisé à faire est de passer un type à une fonction sous forme de paramètre var lorsqu'un autre type est attendu.



10
votes

Votre schéma peut être considéré comme une forme de notations hongroises (hn). HALLY HN est utilisé pour signifier le type d'une variable, mais comme Wikipedia Notes,

La notation est parfois étendue dans C ++ pour inclure le Portée d'un variable, séparée par un soulignement. Cette extension est souvent également utilisée sans le hongrois Spécification de type: [..]


0 commentaires

10
votes

Je dirais que votre convention de dénomination ne correspond pas vraiment à la notation hongroise, mais cela tend un peu à être plus proche de la notation hongroise originale inventée par Charles Simonyi, qui est venue être connue sous le nom de Apps Hongrois code> . Mais pas tout à fait.

Il y a en fait deux types de notation hongroise: p>

  • applications Hongrois forts> - L'idée était de décorer les noms d'identifiants basés sur les informations sémantiques de ce qu'ils stockent, de sorte que la variable but fort>: li> ul> xxx pré>
    • Systems Hongrois forts> - Le préfixe code le type DataType fort> de la variable. LI> ul>
          szName - variable is a zero-terminated string ("sz")
          lAccount - variable is a long integer ("l")
      


2 commentaires

Il utilise une forme de hongroise qui indique la portée. Je ne dirais pas que c'est plus proche de l'objectif que de type de données.


Ma justification était que cela ne se trouve nulle part près d'un type de données, mais une portée lors de la conception de l'application a un but. Ce n'est pas le même but bien sûr, mais hors des deux, il est plus proche d'être comme ça à des fins.



7
votes

Le vôtre est dans la classe générale des conventions de dénomination appelées notation hongroise (dans le sens peut-être plus large que possible que le nom a un préfixe décrivant la variable), mais non, votre convention n'a pas 't avoir un nom plus spécifique.

Je n'ai jamais vu votre choix particulier de préfixes avant. Le plus proche que j'ai vu est ce que je pense comme la convention indy , qui utilise a pour les arguments, f pour champs, G pour les globaux, l pour les habitants et bien sûr les i pour les interfaces et t pour les enregistrements et les classes. Propriétés et sous-programmes ne reçoivent aucun préfixe.


2 commentaires

Vous venez de faire ce nom de la corrélation entre la source Delphi RTL et Indy Source ou le programmeur Borland a-t-il choisi ce type de gars indy au début de Delphi? Je n'ai aucune source plus tôt que Delphi 7, je ne peux donc pas voir une différence.


Le f , i et t Les préfixes sont utilisés à proximité universellement, et le préfixe A est très courant. L'utilisation de préfixes sur les globaux et les sections locales est une chose que je suis la plupart associée à Indy; Je ne suis au courant d'aucun g ou l préfixes dans le code Borland.



18
votes

Ce style de codage est spécifiquement appelé dans le Guide de style Pascal objet comme pas Être notation hongroise (avec une exception près, Types énumérées .)

Les conventions de codage spécifiques dont vous parlez n'ont pas de nom comme tel, autant que je sache, c'est simplement que vous écrivez le code conformément au guide de style de codage de CodeGear (Old Borland). Le guide ne semble pas donner le style un nom.

La raison pour laquelle vous voyez beaucoup dans la source Delphi est parce que ce guide est basé sur le style de codage que l'équipe Delphi s'est développée!

La lecture de ce document vaut la peine de lire - non seulement pour les directives de code, mais également par intérêt pour d'autres choses qu'il mentionne.


7 commentaires

Wtf? Pourquoi cela a-t-il été voté? Cet imo est la meilleure réponse, c'est certainement le plus correct. En fait j'ai enlevé ma réponse parce que celui-ci est meilleur.


Heh Heh, ils ont vraiment besoin de supprimer l'ancienne adresse e-mail de Charlie Calvert de cette doc. Charlie fonctionne maintenant pour Microsoft.


Bien que la réponse soit une bonne réponse (et je l'ai avancée), pour donner la référence à l'endroit où le style provient, le document que je le lisait a fait appelez-la notation hongroise quand elle est indiquée: "L'exception à la règle de notation hongroise est dans des types énumérées. " C'est-à-dire que la convention F règne F est la notation hongroise.


Merci pour le commentaire, Yishai. Pour clarifier ce que j'ai écrit, je l'ai lu différemment - il dit "Nous décourageons l'utilisation de la notation, sauf si nécessaire dans les traductions d'en-tête" et donne un exemple "correct" comme "FMYSTRING: chaîne" " et "incorrect" comme "lpstrmystring: chaîne;". Je pense que "lpstr" est le préfixe de notation hongroise et "F" n'est pas, par leurs définitions. Les énumérations sont l'exception car elles sont préfixées avec des caractères indiquant le type d'énumération, par exemple "BKOK" pour "type de bouton". Vraiment c'est une question de sémantique, c'est des spécificateurs d'étendue argumentaires sont le hongrois, je suppose :)


Je suppose que "par leur définition" est la clé ici - je préfixer personnellement mes variables avec des spécificateurs d'étendue, mais ne le pensez pas comme hongrois, car il n'indique ni type (int32, char *) ni utilisation (nombre, chaîne).


Juste que f n'est pas utilisé pour les variables globales, mais pour les variables de la propriété privée.


David a raison. La "règle de notation hongroise" fait référence à la règle décourageant Utilisation de la notation hongroise. L'exception est donc pour nommer des valeurs énormes, que font utilise hongrois. Mais il convient de souligner que le guide de style OP indique rien sur les arguments de nommage, et il est indiqué que les locaux utilisent les mêmes règles que les noms de champs, sans le principal f - donc non m ou l . Au mieux, le style de Peter est un dérivé du style OP, tout comme tous les styles de codage Delphes, mais je pense vraiment qu'un parent plus proche est le style indy, qui utilise plus de préfixes.