So, after participating in the conversation about underscores, I had to check something - it turns out the design guidelines don't mention what (human) languages are accepted for submission, or what encoding is valid for identifiers.
Which means this:
Console.WriteLine("You successfully instantiated an А!");
is perfectly valid!
Unfortunately, this is only going to confuse people attempting to use this code, since VisualStudio will, given most people's habits, output the following rather unhelpful error message:
(for those of you who are still scratching your heads - the class was defined as the Cyrillic, or Russian alphabet
, capital "A". Which most of us can't type on our keyboards, and don't think about in the first place)
Yes, there is:
✗ DO NOT use underscores, hyphens, or any other non-alphanumeric characters.
but that's not going to help if somebody inadvertantly uses
１ instead of
1 (Japanese character set "1" (half width?) versus standard ASCII "1". Yes, that's valid in a file). I'm honestly not expecting reviewers to catch this kind of thing - this should be easy to check with an automated system, although care would be needed around test data.
There is a related, but somewhat distinct, problem with somebody using something other than English for (at least public) identifiers and documentation
. I have a feeling non-English submissions wouldn't be accepted, simply because most people wouldn't be able to tell what the library was supposed to be doing (or not without reverse engineering the thing). Granted, most of the people involved in this speak (and the de-facto language of the internet and programming in general is) English, but I think it's something we ought to consider, and specify.
(There's also the unspoken, probably unrealized, assumption that Microsoft will be footing the bill for the official translation of the documentation. You know, when it releases .NET to the rest of the world...)