10
votes

Meilleur mot pour inférer des variables autres que var

Cela pourrait être fermé, mais je vais essayer de toute façon.

Je montrais un programmeur VB6 une partie de mon code C # l'autre jour et il a remarqué le mot-clé Var et était comme "Oh un type de variante, ce n'est pas vraiment de frappe fort quand vous faites cela. " Et je devais aller sur le discours typique "var! = variante" pour lui expliquer que ce n'est pas une variante que le compilateur a inféré.

Je pensais à d'autres mots qu'ils (C # équipe) auraient pu utiliser pour ce genre de chose ne se produisait pas. Personnellement, j'aime infère , quelque chose comme: xxx

Je sais que ce n'est pas vraiment si grand d'affaire, mais juste curieux de voir ce que d'autres personnes Utilisez-vous pour faire la même chose.

J'ai fait cela un wiki communautaire parce qu'il n'a pas vraiment de réponse.


4 commentaires

déduire un nickel, infère un centime.


YoufigureIt Personne = Nouvelle personne ("Bob");


Il y a quelque chose à propos de Var qui frappe une bonne corde avec moi.


Inférer est excellent. Dit exactement ce que ça fait.


12 Réponses :


1
votes

Je pense que c'est une bonne idée. J'ai moi-même avoir dû expliquer le mot-clé Var de temps en temps et comment il s'agit vraiment d'un espace réservé pour un type et qu'il assure toujours une clé forte.

infère fonctionne pour moi! :)


0 commentaires

0
votes

Si le mot clé a été nommé variable au lieu de var , nous ne voyons peut-être pas ce genre de confusion. Cela a peut-être été l'intention, mais une personne a clairement pensé que la typing variable était trop verbeuse, conduisant à l'ambiguïté que nous avons aujourd'hui.


0 commentaires

2
votes

mais " infère " est de 2 autres caractères que " var " ... peut-être "var" N'était-ce pas la meilleure chose à faire face à un programmeur VB6 au début ...


2 commentaires

J'essayais de penser à quelque chose de mieux que "déduire" mais "infrète" ne se sentait pas bien et que c'était de près de l'int, et "fer" ... tout simplement faux.


Haha Ça devrait juste être "V": V chien = nouveau chien (); serait beaucoup mieux!



1
votes

Que diriez-vous de FOO ?


2 commentaires

Ouais, tellement mieux que var;)


Je pense que nous avons également besoin d'un mot-clé "bar". Peut-être pour jeter des exceptions que vous pouvez avoir "Foobar NotimeplementedException ()"



7
votes

c ++ 0x utilise le mot-clé "Auto" pour l'inférence de type:

http://fr.wikipedia.org/wiki/c%2b%2b0x#type_inference

Ce n'est pas un mauvais compromis pour ces gars depuis" Auto "(AFaik) déjà un mot-clé. Je peux l'imaginer en C #: xxx

je fais comme "infère" (mais je n'ai pas de problème avec "var" non plus).


4 commentaires

auto était en effet un mot clé, il s'agissait donc d'un candidat principal pour la réutilisation, mais cela semble également correct. Il a également été ramassé par la langue D dans le même contexte, c'est donc un peu grandement en croissance.


En particulier puisque c'était un mot clé totalement inutile.


Terrible mot-clé. Vous pourriez aussi bien en avoir un autre appelé "Matic". Ensuite, vous auriez une paire correspondante comme FOO et BAR.


Je préfère Auto, puis s'ils décident de déduire partiellement un type, il sonnera mieux que Var: Expression > Sélecteur = C => Nouveau {Nom, C.AGE};



1
votes

D'autre part, les programmeurs Pascal / Delphi et ActionScript saisissent immédiatement le vrai sens de var . Alors pourquoi single out vb6? Il est regrettable que cela ait eu variante , et donc les gars VB6 remplacent rapidement var pour cela, mais quelle que soit la direction que vous allez, une personne quelque part sera confuse.

Étant donné que VB6 est un héritage pendant un certain temps maintenant, que var est parfaitement clair à une personne sans le fardeau de l'expérience passée (je veux dire, combien de personnes nouvelles pour la programmation penseraient au var signifiant quelque chose de différent de "variable"?), et que var a été spécifiquement utilisé pour signifier "variable" par plusieurs autres langues populaires, cela ne semble pas être un mauvais choix .

Le problème évident que je vois avec infère est indiqué que cela n'est pas évident qu'il prédit le type de variable. Juste la regarder, il pourrait aussi bien concerner sa valeur ou quelque chose (surtout si RHS n'est pas un nouveau -Statement).


0 commentaires

3
votes

Que diriez-vous de revivre Ye Olde BASIC mot-clé laisse ? XXX


1 commentaires

Les gars VB6 seront toujours confus alors; Le mot clé USE (sur une propriété) est utilisé uniquement pour des tyranes de données simples, tandis que le jeu est utilisé uniquement pour les objets.



1
votes

J'aime var et pense que la signification dans le contexte d'une langue fortement saisie est claire. dynamique , d'autre part, est le "Oddball" dans le code C # afin que le nommage sémantique plus long est approprié.


0 commentaires

4
votes
thisappearsweaklytypedbutisactuallystronglytyped i = 3;
It's the only way to avoid confusion! Don't worry, autocomplete means it won't really take that much longer to type...

0 commentaires

1
votes

C # est censé être tous symboliquement, comme C ++, pas toutes les mots clés, comme vb. Que diriez-vous de "? " xxx

Quel type est z? Qui sait?


4 commentaires

Un string? De toute façon, '?' est pris pour l'opérateur conditionnel.


J'adore que "symboliquement" C ++ ressent chaque fois que je tape reterpret_cast ou static_assert ...


Cela pourrait éventuellement être confondu avec un type nullable à des moments (je ne peux pas penser à des points mortels), mais je l'aime dans l'ensemble.


@Blorgbeard, un symbole peut être utilisé plus d'une fois. Quand cette réutilisation entraînerait-elle une ambiguïté? Le côlon est utilisé à la fois pour l'opérateur d'héritage et l'opérateur conditionnel. @Pavel Minaev, je vois ce que tu veux dire. C ++ a des mots clés bienveillants et les traits de soulignement sont la cerise sur le gâteau.



1
votes

Je pense que c # serait mieux sans "Inférence de type statique" du tout. Donc, cela fonctionnerait comme ceci: XXX

Je me demandais pourquoi C # Designers a ressenti un mot clé comme "var" était nécessaire pour une inférence de type statique. Était-il nécessaire de respecter les règles de grammaire fondamentales de C #? Était-ce parce qu'ils avaient déjà pensé à "dynamique" et voulaient rendre la distinction plus claire entre une inférence statique et dynamique de type?

Dans tous les cas, après une exposition prolongée à Python, "Var" (ou tout Le mot clé alternatif ou qualificatif) se sent complètement superflu. Prenez le code suivant: xxx

quelles informations supplémentaires ajouteraient "var" devant "élément" donner au lecteur?


4 commentaires

"Var" indique au lecteur que le programmeur n'a tout simplement pas fait une erreur muette et laisser le type. Je parie que c'est beaucoup plus facile pour l'analyseur. Seulement une supposition, mais je parie en commençant par un mot clé, aide l'analyseur à obtenir ses roulements.


@John Saunders: ou faire une erreur de dumber encore plus grande et orthographique la variable.


Je ne sais pas ce que tu veux dire. Cela ne vous permet pas de manquer la variable. Si vous omettez-le à la Déclaration, vous devrez continuer à le manquer lorsque vous l'utilisez.


@Johnsaunders: Si l'on avait une variable appelée mydict et que l'énoncé ci-dessus était un moyen légal de déclarer mydict , puis essayant de dire mydic = nouveau dictionnaire mais MISTYPING Le nom comme MyDICT entraînerait la création du compilateur une nouvelle variable tout en laissant mydict inchangé.



0
votes

Pas complètement sur la succursale, mais vb.net le fait presque trop proprement. Je parie qu'il est encore plus confus pour les utilisateurs ex vb6.

Dim p = New Person()


1 commentaires

Je me réfère "Dim P = nouvelle personne ()" pour le cas où la valeur initiale est une expression de constructeur.