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

时间:2011-03-04 12:59:50

标签: language-design language-features case-sensitive case-insensitive

  

可能重复:
  Is there any advantage of being a case-sensitive programming language?

我的第一次编程经历使用Basic系列(MSX Basix,Q-basic,VB)。 这些都不区分大小写。现在,可能是因为这些第一次经历,但我从来没有意识到语言区分大小写的好处。相反,我认为它是不必要的开销和错误的来源,当我使用例如它时,它仍然会让我烦恼。 Java或C.

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

那么:使用区分大小写的语言对程序员有什么好处呢?

我唯一能想到的是:

  • 符号数量加倍
  • 使用像CamelCase这样的技术,例如,视觉反馈和更容易阅读复杂变量。 HopCount

但是,第一个参数不成立是因为它是bug的主要来源(在一种方法中使用hopcount和HopCount的不良做法)。

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

编辑:为程序员添加了......好处 ...

2 个答案:

答案 0 :(得分:1)

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

我不记得曾经有过与大写相关的错误,所以这一点对我来说似乎有些不切实际。 使用2个相同名称但不同大小写的变量听起来像是有意识地试图用脚射击自己。几乎所有地方的不同大小写约定都表示完全不同类型的对象(类,变量,方法等),因此由于语义完全不同而很难犯这样的错误。

我想以这种方式来思考:如果不具有区分大小写,我们会获得什么? 我们引入歧义,鼓励邋and和糟糕的风格。

这当然是一个有点主观的问题。

答案 1 :(得分:0)

许多命名约定要求表示来自不同语义类(类型,函数,变量)的对象的符号具有其自己的名称大小写规则。例如,在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);