Quelle est la philosophie / le raisonnement derrière les noms de méthode de casse Pascal de C #?

22

Je commence tout juste à apprendre le C #. Venant d'un arrière-plan en Java, C ++ et Objective-C, je trouve que le Pascal-Cing de C # est assez unique, et un peu difficile à s'habituer au début. Quel est le raisonnement et la philosophie derrière cela?

Je suppose que c'est à cause des propriétés C #. Contrairement à Objective-C, où les noms de méthode peuvent être exactement les mêmes que les variables d'instance, ce n'est pas le cas avec C #. Je suppose que l'un des objectifs des propriétés (comme c'est le cas avec la plupart des langages qui le prennent en charge) est de rendre les propriétés vraiment indiscernables des variables et des méthodes. Ainsi, on peut avoir un "int x" en C #, et la propriété correspondante devient X. Pour garantir que les propriétés et les méthodes sont indiscernables, tous les noms de méthode, je suppose, sont également censés commencer par une lettre majuscule. (Ceci est juste mon hypothèse basée sur ce que je sais de C # jusqu'à présent - j'apprends encore). Je suis très curieux de savoir comment cette curieuse directive a vu le jour (étant donné qu'elle

(EDIT: Par Pascal-casing, je veux dire PascalCase (qui est essentiellement camelCase mais commençant par une lettre majuscule). Les noms de méthode commencent généralement par une lettre minuscule dans la plupart des langues)

Nocturne
la source
Si vous voyiez que tous les membres d'une certaine famille avaient tous leurs murs dans toutes leurs maisons peints avec un insigne étrange, seriez-vous curieux de savoir pourquoi ils ont fait une chose si étrange?
Nocturne
1
Pourquoi pensez-vous que cela s'appelle le cas Pascal ?
R. Martinho Fernandes
1
@Martinho Fernandes c'est le nom standard pour ce style, consultez Google
Andrey
1
@Nocturne - Oui. Je serais curieux :)
Joel Etherton
1
Les «noms de méthode commencent par une lettre minuscule dans la plupart des langues» est faux d'après mon expérience. Les conventions commençant par une lettre majuscule - avec ou sans séparation de mots - sont assez courantes, mais pas nécessairement dans les directives sur les langues officielles. La plupart des normes linguistiques n'ont pas de guide de style officiel unique. Un certain nombre de langues (principalement les plus anciennes) ignorent de toute façon la casse et ont souvent une convention tout en minuscules car ne pas appuyer sur shift est la règle la plus paresseuse qui signifie que vous n'obtenez pas une orthographe à casse différente traitée comme la même confusion .
Steve314

Réponses:

27

C'est une question de goût. Quelqu'un a décidé une fois d'utiliser le style Pascal pour les noms et c'est devenu une norme.

J'ai une idée folle que c'était Anders Hejlsberg , qui était l'architecte de Delphi, successeur de Pascal. Le style de cas est le même qu'en C #.

Andrey
la source
ça allait être ma réponse. : P
DevSolo
@DevSolo désolé, j'ai commencé à taper réponse quand la question était à Stackoverflow :)
Andrey
Je pense que les racines vont encore plus loin dans l'histoire ancienne - voir ma réponse ci-dessous :)
davka
20

Si vous demandez des raisons, en voici une directement de la bouche du cheval:

Histoire autour de Pascal Casing et Camel Casing article de Brad Abrams sur les blogs MSDN

Lors de la conception initiale du Framework, nous avons eu des centaines d'heures de débat sur le style de dénomination. Pour faciliter ces débats, nous avons inventé un certain nombre de termes. Avec Anders Heilsberg (le concepteur d'origine de Turbo Pascal ) un membre clé de l'équipe de conception, il n'est pas étonnant que nous ayons choisi le terme Pascal Casing pour le style de boîtier popularisé par le langage de programmation Pascal ...

La convention Pascal Casing met en majuscule le premier caractère de chaque mot (y compris les acronymes de plus de deux lettres) ...

Et voici les lignes directrices de conception: Lignes directrices de conception pour les développeurs de bibliothèques de classes

Ces directives sont destinées à aider les concepteurs de bibliothèques de classes à comprendre les compromis entre les différentes solutions. Il peut y avoir des situations où une bonne conception de bibliothèque nécessite que vous violiez ces directives de conception. De tels cas devraient être rares et il est important que vous fournissiez une justification solide de votre décision. La section fournit des directives de dénomination et d'utilisation pour les types dans le .NET Framework ainsi que des directives pour la mise en œuvre de modèles de conception courants ...

Yogesh
la source
2
TurboPascalest le bébé de Philip Kahn(aka Borland), ce qui est très pratique à oublier pour Microsoft. Politique ....
davka
1
Les commentaires sur le premier lien sont super, lol.
jmq
7

Je ne connais pas la philosophie, mais le boîtier Pascal semble être courant sur les plateformes Microsoft depuis au moins les jours de l'API Win32.

Nemanja Trifunovic
la source
8
et je déteste toujours ça, lol.
jmq
2

Je ne pense pas qu'il y ait une philosophie spécifique derrière cela. Il devait y avoir des lignes directrices, et il y avait de nombreux points qui auraient pu l'affecter:

  • Ils voulaient se débarrasser de toutes les notations de préfixe (lire le hongrois ici)
  • Ils voulaient que les membres locaux / privés et les membres publics soient distingués en lisant simplement leurs noms.
  • Ils ne voulaient pas que le code C # ressemble au code Java (qui utilise fortement le boîtier camel)
décyclone
la source
Notez que cette directive de dénomination concerne le framework .NET et non C # en particulier. Dans VB.NET, un langage insensible à la casse, la convention reste la même, mais vous ne pouvez pas l'utiliser pour distinguer les membres privés et publics par cas.
R. Martinho Fernandes
@Martinho: d'accord. mais je pense toujours que c'était une des raisons.
décyclone du
7
+1: "Ils ne voulaient pas que le code C # ressemble au code Java (qui utilise beaucoup le boîtier camel)": Je soupçonne fortement que vous êtes ici!
Giorgio
Ce qui est ironique, c'est que malgré la haine de certaines personnes à l'égard de la notation hongroise, Java et C # auraient probablement été tous les deux de bien meilleurs langages dans la pratique s'ils avaient adopté Apps Hongrois (ou une autre convention de dénomination) pour distinguer les champs de type référence qui "possèdent" un objet mutable. identifiés ainsi, ceux qui identifient une instance de type mutable qui ne doit jamais être mutée , etc. Même si le Runtime ne se soucie pas de telles distinctions, il est impossible d'écrire du code efficace et correct sans savoir quelles variables sont de quel type.
supercat
0

Je ne sais pas qu'il existe une "philosophie" derrière le boîtier autre que son aspect agréable et compact et peut facilement apparaître sous la forme de plusieurs mots sans utiliser de soulignement.

Il y a eu de nombreuses variations de boîtier au cours des dernières décennies. Ils vont de très laconique (voir C et la bibliothèque C standard) à verbeux avec des traits de soulignement séparant chaque mot. Bien que la convention de nommage de la bibliothèque .NET soit encore assez détaillée, je pense qu'elle trouve un juste milieu en ce qui concerne la casse.

Jonathan Wood
la source
5
ne pas oublier de nommer le style lisp!
R. Martinho Fernandes
@Martinho Fernandes en fait dans le contexte de langages de type c, il n'est pas valide.
Andrey
Oui, Lisp prend en compte les espaces blancs. (- var1 var2)
Michael K
@Martinho Fernandes: Bien sûr, cela nécessite l'utilisation d'espaces pour séparer les jetons. C'est aussi COBOL-STYLE-NAMING, qui le rend commun aux langues que j'admire le plus et le moins.
David Thornley
0

Prenant une supposition sauvage (mais pas déraisonnable, à mon humble avis) - la conception C # a été supervisée par Niklaus Wirth , l'inventeur original de Pascal. Voir la connexion? ... :)

Curieux # 1: Je me souviens positivement de l'annonce de .NET et C # (oui, je suis préhistorique ...) et de la façon dont Microsoft s'est vanté d'avoir le nom de Wirth sur C #. Pourtant, les pages Wikipedia sur ni l'un ni l'autre (C # et Wirth) ne le mentionnent.

Curieux # 2: Bien qu'il soit appelé PascalCase, il a été popularisé par le TurboPascalcompilateur (qui est finalement devenu Borland), pas par le langage lui-même.

davka
la source
4
et TurboPascal a été commodément conçu et construit par Anders Hejlsberg ...
SWeko
3
Anders Hejlsberg était IIRC le concepteur principal de Delphi, et a beaucoup travaillé sur Turbo Pascal, mais Turbo Pascal n'était pas à l'origine son bébé (c'était Philip Kahns). Niklaus Wirth a inventé le Pascal d' origine et l'a suivi dans la normalisation, puis a vu la norme largement ignorée. De plus, Wirth a été retiré pendant à peu près toute la vie de C #, et avant cela, il a conçu plusieurs langages successeurs à Pascal (plus récemment Oberon 2), donc je doute qu'il ait eu une implication directe. Microsoft s'est vanté d'avoir Hejlsberg à bord. Turbo Pascal était un produit Borland depuis le début.
Steve314
Cela ne me dérange pas de rétrograder - J'ai assez de points sur StackOverflow, mais je suis curieux de savoir pourquoi
davka