Quelqu'un peut-il m'expliquer la convention de codage de C #?

14

J'ai récemment commencé à travailler avec Unity3D et principalement à écrire des scripts avec C #. Comme je programme normalement en Java, les différences ne sont pas trop importantes, mais j'ai quand même fait référence à un cours intensif juste pour m'assurer que je suis sur la bonne voie.

Cependant, ma plus grande curiosité avec C # est qu'il capitalise la première lettre de ses noms de méthode (par exemple. Java: getPrime()C #: GetPrime()aka: Pascal Case?). Y a-t-il une bonne raison à cela? Je comprends de la page du cours intensif que j'ai lu qu'apparemment c'est une convention pour .Net et je n'ai aucun moyen de le changer, mais je suis curieux de savoir pourquoi cela a été fait comme cela par opposition au cas de chameau normal (relatif?) que, par exemple, Java utilise.

Remarque: Je comprends que les langages ont leurs propres conventions de codage (les méthodes Python sont toutes en minuscules, ce qui s'applique également dans cette question), mais je n'ai jamais vraiment compris pourquoi il n'est pas formalisé en standard.

ahodder
la source
18
Je ne pense pas que vous pouvez regarder camelCaseet PascalCaseet underscore_caseet dire que l' un d'entre eux est normal (même relativement normale) et les autres non. Comme l'a dit @dasblinkenlight, c'est un choix arbitraire. La seule chose qui vous fait penser que la convention de C # est inhabituelle est que vous "programmez normalement en Java", et êtes donc habitué au choix arbitraire fait pour Java.
Carson63000
Utilisez plutôt JavaScript .. pour Unity3D :)
Lipis
@Lipis Pourquoi pour - autre que le goût personnel? ;-)
ahodder
@AedonEtLIRA totalement personnel .. tant pis :) Profitez de l'unité quelle que soit la langue .. vous finirez par utiliser ..
Lipis
@Lipis Jusqu'à présent, c'est génial. Des tonnes de cloches et de sifflets et je n'ai pas encore déposé d'argent dessus. Mais je préfère le style structuré de C # (c / c ++) et java.
ahodder

Réponses:

27

Les conventions de dénomination représentent des choix arbitraires de leur éditeur. Rien dans le langage lui-même ne vous interdit de nommer vos méthodes comme vous le faites en Java: tant que le premier caractère est une lettre / un trait de soulignement et que tous les autres caractères sont des lettres, des chiffres ou des traits de soulignement, C # ne va pas se plaindre. Cependant, les bibliothèques de classes fournies avec .NET suivent une convention que Microsoft a adoptée en interne. Microsoft a également publié ces directives , afin que d'autres puissent également les adopter pour leurs propres bibliothèques de classes. Bien que ce soit votre choix de suivre ou d'ignorer les directives de Microsoft, la familiarisation avec votre code par d'autres peut aller plus vite si vous suivez les mêmes directives de dénomination.

dasblinkenlight
la source
Cependant, il y a généralement une justification derrière une convention, et quand je lis "Y a-t-il une bonne raison à cela?" Je le comprends comme une question sur POURQUOI pas QUOI.
greenoldman
Pascal pour les membres publics / internes / statiques et toutes les méthodes. Chameau pour privé. Il permet de distinguer la portée d'un jeton pendant que vous le scannez. Le thismot-clé fait de même. Les choix de style sont pratiques, même s'ils peuvent paraître extraterrestres
Gusdor
23

Peut-être en raison de l'influence de Pascal / Delphi. Le créateur de C # et Delphi était la même personne après tout (Anders Hejlsberg).

Les conventions de codage Delphi sont en gros les mêmes que les C # dans cet aspect; voir http://www.econos.de/delphi/cs.html#ObjectPascal_Procedures ou http://wiki.delphi-jedi.org/index.php?title=Style_Guide#Method_Naming - coincidence?

Konrad Morawski
la source
4
Un +1 pour cela car il donne ce qui peut être la raison réelle pour laquelle ce choix arbitraire particulier a été fait pour C #.
Maximus Minimus
4

En plus des autres réponses apportées, avoir un cas de chameau pour les méthodes signifie qu'ils peuvent entrer en conflit avec les noms des membres privés, les paramètres et les variables de méthode qui utilisent le cas de chameau pour leur dénomination. En Java (et C # 1.0), ce n'est pas très courant car l'utilisation des délégués est gênante et rare. En C # moderne, ce n'est pas exactement courant , mais ce n'est pas non plus inédit.

Telastyn
la source
1
Le trait de soulignement ne doit pas être utilisé dans les champs privés C # (voir blogs.msdn.com/b/brada/archive/2005/01/26/361363.aspx , par exemple), mais il est controversé et souvent trouvé.
Jens
1
s'appuyer sur la casse pour faire la distinction entre les constructions de langage est une très mauvaise idée, que le langage vous le permette ou non.
gbjbaanb
4
@Telastyn cette déclaration est assez choquante. La plupart de la bibliothèque de classes .NET utilise cette convention.
MattDavey
1
@Dunk, comment est-ce que c'est soudainement ma convention? Je passais simplement un commentaire, je n'ai pas d'opinion sur ce sujet de toute façon :)
MattDavey
2
@MarjanVenema: vous ne savez pas de quoi vous parlez, mais C # est tout à fait sensible à la casse et vous pouvez certainement avoir des collisions entre des membres du même cas. Cela devient amusant et excitant lorsque vous avez des langages sensibles à la casse tels que VB.NET avec lesquels vous travaillez au niveau de la bibliothèque.
Wyatt Barnett