程序语言中区分大小写的好处是什么?

问题描述:

可能重复:
Is there any advantage of being a case-sensitive programming language?程序语言中区分大小写的好处是什么?

我的第一个编程经验,其中具有基本的家庭(MSX BASIX,Q-基本,VB)。 这些都不区分大小写。现在,这可能是因为这些第一次的经历,但我从来没有理解区分大小写的语言的好处。相反,我认为这是一个不必要的开销和错误的来源,当我使用时,它仍然让我很烦恼。 Java或C.

现在,我刚刚阅读了Clojure(一种Lisp方言),并注意到 - 令我惊讶的是 - 与Lisp的区别之一是case-sensitivity

所以:对于区分大小写的语言,实际上对程序员有什么好处?

我能想到的唯一的事情是:

  • 符号的双数
  • 的视觉感受和使用像驼峰,例如技术复杂的变量更容易阅读HopCount

但是,第一个参数不因为是对错误的主要来源(不好的做法,使用跳数和跳数的一种方法)举行。

第二个参数也不适用,因为体面的IDE可以通过其他方式提供。一个很好的例子是VBA IDE,它具有非常好的方法:语言不区分大小写,但只要键入变量,它就会将其更改为定义中使用的情况。例如,如果您定义了Dim thisIsMyVariable as string,则会将thisismyvariable的任何出现更改为thisIsMyVariable)。这给程序员提供了一个直接的线索,即变量实际上是正确输入的(因为它改变了外观)。

编辑:添加...好处给程序员 ...

+3

技术上它不是符号数量的两倍。假设最大符号长度为32个字符,则不区分大小写可以是38个字符('a-z0-9_ $''),具有'38^32 = 3.57e + 50'个排列。在区分大小写的情况下再添加26个字符,我们有'64^32 = 6.28e + 57'排列,这是大约1.76e + 7倍以上的符号,而不只是两倍以上的符号。这并不重要。 – 2011-03-04 13:07:25

+0

我认为可读性是主要的。也使编译器做少一点工作。考虑一下'String string = new String();' – Melv 2011-03-04 13:08:37

+2

是的,对于它的价值,我**完全同意**关于区分大小写而不是程序员的好处。不幸的是,这似乎是一个主观/争论性的问题,对此没有明确定义的答案。因此,我认为这不太适合Stack Overflow。我真的不知道[程序员.stackexchange.com](http://programmers.stackexchange.com)上的政策是什么,但我认为这将是一个有趣的讨论。 – 2011-03-04 13:08:59

许多命名约定要求,即表示从不同的语义类别(类型,函数,变量)对象的符号有自己的名字大小写规则。例如,在Java中,类型名称始终以大写字母开头,而变量,成员函数名称等以小写字母开头。这有效地将类型名称放在不同的名称空间中给出了一个视觉线索实际上的含义。

// declare and initialize a new Point 
Point point=new Point(); 
// calls a static member function of type Point 
Point.fooBar(); 
// calls a member function of Point 
point.moveTo(x,y); 
+0

我打算发布一个非常类似的答案。因为我经常使用MainModel mainmodel = new MainModel(){foo = 1,bar = 0}; – SQLMason 2011-03-04 13:20:40

+0

我不喜欢*两种*使用仅在大小写不同的情况下标识符的使用(在C#中允许使用),*和*在使用标识符时使用不一致的情况(允许在VB.NET中使用)。如果我有我的干事,如果'Foo'在一个范围内被声明并且'foo'在一个嵌套范围内,那么在该嵌套范围内'Foo'既不会引用外部名称也不会引用内部函数,但是将被禁止。这样的规则会使IDE更容易纠正任何问题[我发现C#IDE在这方面不是很有帮助]。 – supercat 2013-09-16 20:02:28

有一点,就像你说的那样,视觉辅助。大多数编程语言(甚至是框架)都有关于如何将变量,名称等资本化的约定。另外,它强制在任何地方使用统一的名称,因此您不会与被称为“var”,“ Var“或甚至”VaR“。

我不记得有没有与大写有关的错误,所以这一点似乎对我有点做作。 使用两个同名变量,但大小写不同的字眼听起来像是有意识地尝试在脚下拍摄自己。不同的大写约定几乎在任何地方都表示完全不同类型的对象(类,变量,方法等),所以由于完全不同的语义而很难做出这样的错误。

我想这样想:我们通过不区分大小写而获得什么? 我们引入歧义,我们鼓励sl and和贫穷的风格。

这当然是一个稍微主观的问题。