Pourquoi C # Case Sensitive?
Ce raisonnement existe au-delà de prise de C# sensibles à la casse?
J'envisage de commutation de VB.NET afin de profiter de certaines fonctionnalités de la langue (CCR et de rendement), et de comprendre le raisonnement derrière cette différence peut rendre la transition plus facile.
[Mise à JOUR]
Eh bien j'ai fait le grand saut il y a trois jours. L'apprentissage du C# n'a pas été particulièrement dur, je pouvais à peine se souvenir de mon C++ jours de la fin des années 90.
Est le Cas de la Sensibilité ennuyeux moi? pas comme je l'avais pensé... en plus je trouve que c'est réellement avantageux. Je suis vraiment heureux avec le CCR en tant que asynchrone coordination modèle de programmation. Si seulement j'avais plus de temps sur le projet en cours, je serais port de la base de code en C# pour en profiter pleinement. Ne serait pas juste pour mon client.
L'évaluation de mon projet en cours maintenant, et je vois le blocage des fils PARTOUT! AHhhh!!!
[Mise à JOUR]
Bien j'ai été la programmation en C# depuis près d'un an maintenant. Je suis vraiment profiter de la langue, et j'ai vraiment horreur de passage à VB (surtout quand il est inévitable!)
Et la sensibilité à la casse de chose? même pas un problème
source d'informationauteur Andrew Harry
Vous devez vous connecter pour publier un commentaire.
C# est le cas sensistive parce qu'il prend après la C le style de langues qui sont tous sensibles à la casse. C'est à partir de la mémoire, voici un MSDN lien qui ne fonctionne pas pour moi en ce moment je ne peux pas vérifier.
Je tiens également à préciser que c'est un très valable de cas d'utilisation:
Oui, vous pouvez contourner ce problème en utilisant des préfixes sur votre membre variables, mais certaines personnes n'aiment pas faire.
Ils étaient sans doute penser que "nous ne voulons pas que les gens à l'aide de SoMeVaRiAbLe en un seul endroit et sOmEvArIaBlE dans un autre.
Je pense que le fait que le cas peut transmettre de l'information est une très bonne raison. Par exemple, par convention, les noms de classes, de méthodes publiques et les propriétés de commencer avec une lettre majuscule par la convention. Et à l'inverse, les champs et les variables locales à commencer par une lettre minuscule.
Après l'utilisation de la langue pendant des années, j'ai appris à vraiment apprécier ce, le code est beaucoup plus facile à lire quand vous pouvez lire des informations à partir de l'enveloppe des mots.
Et c'est pourquoi les gens le faire parfois, et il peut faire sens:
Je fais tout le temps, il est très utile. Si vous pensez à ce sujet d'une manière plus utile ce genre de situation:
Il est tout à fait logique parfois à l'appel de l'instance de la même chose que le nom de la classe, et la seule façon de les différencier est l'enveloppe. En C++ le cas de la sensibilité devient encore plus utile, mais c'est une autre histoire. Je peux élaborer si vous êtes intéressé.
Considérer les noms de variable dans le pseudo-code suivant:
Avoir de la casse permet de conventions de cas d'utilisation pour séparer les noms de classes et d'instances; ces conventions ne sont pas du tout rare dans le monde du développement.
C# hérite de la sensibilité de cas à partir de C et de Java, qu'il tente d'imiter pour le rendre plus facile pour les développeurs de passer à C#
Il pourrait y avoir quelques bonnes raisons pour faire C sensible à la casse quand il a été créé il y a trois décennies, mais il ne semble pas y être tous les enregistrements sur pourquoi. Jeff Atwood a écrit un bon article plaidant pour que sensibilité à la casse pourrait ne plus avoir de sens.
Je pense que le fait d'avoir de la casse identificateurs peuvent rendre le code plus lisible, grâce à l'utilisation de conventions de nommage, et bien, et même sans conventions de nommage, la cohérence appliquée en cas de sensibilité vous assure que la même entité est toujours écrit de la même manière.
Probablement copié à partir de C, C++, Java, etc. ou peut-être gardé le même sur le but ainsi que son similaire à ce que d'autres langues ont.
C'était juste une question de goût sur le C# langue designer de l'équipe. Je suis prêt à parier qu'il était pour comonality avec d'autres C de la famille des langues. Il n'est cependant conduire à certaines mauvaises pratiques de programmation comme un champ privé et de ses associalted propriété ne diffèrent que dans le cas de la première lettre.
EDIT:
Pourquoi cela pourrait-il être cosidered mauvais.
La préfixation des champs privés avec un _ ou un m pourrait rendre plus facile à repérer. Ce n'est pas un énorme biggie et, personnellement, je rebord de faire exactement ce que je viens de dire est mauvais (alors me poursuivre en justice!).
Analyse est également un petit peu plus facile pour la casse langues. Tant qu'il n'y a aucune bonne raison de choisir la non-sensible à la casse, pourquoi s'embêter?
Vous êtes à la recherche à ce que de façon très limitée - de votre point de vue. La langue, les concepteurs doivent prendre en compte tout un ensemble de facteurs: des raisons culturelles, la compatibilité avec d'autres langues, commune des pratiques de codage etc
Toutes les langues modernes de cas d'utilisation-sensibilité: ceux qui n'en ont pas?
Comme quelqu'un qui a utilisé de BASE pour un certain nombre d'années, j'en ai eu assez de développeurs à l'aide de cas différents pour la même variable. Ce genre de chose est très pénible à regarder et encourage bâclée de programmation. Si vous ne pouvez pas être dérangé pour obtenir le droit de rien d'autre ne peut vous être donné la peine de le faire?
De
.NET Framework Guide du Développeur
La Capitalisation Des ConventionsLa Sensibilité À La Casse:
De mon mieux deviner le pourquoi elle est sensible à la casse serait parce qu'Unix est sensible à la casse. Dennis Ritchie, le père de C a également co-écrit Unix, il est donc logique que la langue qu'il écrit coïncidera avec l'environnement disponibles à l'époque. C# juste hérité de son ancêtre. Je pense que c'était une bonne décision de Microsoft de la partie, étant donné que windows chemins ne sont pas sensibles à la casse.
Je suppose que vous aimeriez voir code comme:
compilé comme si SomeField en tout tubage variation est la même variable.
Personnellement, je pense que c'est une mauvaise idée. Il encourage la paresse et/ou de l'inattention. Pourquoi s'embêter correctement boîtier de la même chose quand il n'a pas d'importance de toute façon? Eh bien, pendant que nous y sommes, peut-être que le compilateur doit permettre de fautes d'orthographe, comme
SoemField++
?De nommage. Les noms sont difficiles à trouver et vous ne voulez pas avoir à créer un nouveau nom quand on parle de quelque chose de similaire ou utiliser quelques notations pour les mettre à part.
De tels scénarios sont les propriétés des champs ou des arguments dans le constructeur que vous êtes sur le point de céder aux champs.