为什么许多编程语言对大小写敏感?
这只是继承的问题吗?C++对大小写敏感是因为C对大小写敏感,Java对大小写敏感是因为C++对大小写敏感等等?还是有更实际的原因呢?
为什么许多编程语言对大小写敏感?
这只是继承的问题吗?C++对大小写敏感是因为C对大小写敏感,Java对大小写敏感是因为C++对大小写敏感等等?还是有更实际的原因呢?
什么是字母 i 的大写形式? I(U+0049)还是İ(U+0130)?
大写形式取决于语言环境。
IAmNowHere
来自
IAmNowhere
(这只是个玩笑! ;-)
还有一种叫做Common Lisp的语言,许多人错误地认为它是大小写不敏感的语言。当你在Listener中输入(car x)
时,它会转换成(CAR X)
进行处理。虽然可以定义小写名称的符号,但必须用类似于|lower-case-symbol|
的引号括起来。因此,输入(car x)
、(CAR X)
或者(Car X)
都能正常工作。
(Franz Lisp曾经引入了他们所谓的“现代”大写规则,其中Listener不会折叠大小写,CL关键字将以小写形式出现。我没有跟进得足够好,不知道那里发生了什么。)
如果没有大写字母,你怎么能喊出来?啊啊啊!
你需要表现出情感。但老实说,在全世界的人中,那些与编程逻辑打交道的人会第一个坚称差异实际上是不同的。
来自.NET Framework开发人员指南大写约定,大小写敏感性:
大写规范的存在仅是为了使标识符更易于阅读和识别。大小写不能用作避免库元素名称冲突的手段。
不要假设所有编程语言都区分大小写。它们并不是。名称不能仅因大小写而异。
我认为大小写敏感的编程语言会鼓励人们编写糟糕的代码。
Const SHOESIZE = 9
Class ShoeSize
ShoeSize.shoesize = SHOESIZE
call shoeSize(ShoeSize);
function shoeSize(SHOEsize)
{
int ShoeSIZE = 10
return ShoeSize
}
天啊,你难道找不到比“ShoeSize”更好的变量名来区分不同的用途吗?有亿万种不同的词语可以使用,但你选择继续使用ShoeSize?
我看到的所有支持大小写敏感性的例子都是基于编写糟糕、不具描述性的代码的愿望。例如,“date”与“myDate”的争论 - 这两个都是同样不具描述性的,是一种糟糕的做法。好的做法是将其命名为实际含义:birthDate、hireDate、invoiceDate等等。而且,谁会想编写这样的代码呢:
Public Class Person
Public Shared ReadOnly PERSON As Person
End Class
Public Class Employee
Public person As Person = person.PERSON
End Class
令人惊讶的是,在VB.Net代码中,大小写敏感是完全有效的。认为大小写敏感允许您更加明目张胆地违反良好的编程实践是反对它而不是支持它的一个论据。
大小写敏感并不能真正帮助大小写一致性。
Foo.Bar
foo.Bar
fOO.bAR