语言区分大小写的目的是什么?

Tom*_*len 17 language-features programming-languages language-design case-sensitive case-insensitive

可能重复:
作为区分大小写的编程语言有什么优势吗?
为什么许多语言区分大小写?

我一直想知道的是,为什么语言设计为区分大小写?

我的豌豆大脑无法理解它为什么有用的任何可能的原因.

但我确信那里有一个.在任何人说出来之前,通过区分大小写调用dogDog区分变量实际上是非常糟糕的做法,对吧?

任何评论都赞赏,也许还有任何关于此事的历史!我对案例敏感性一般不敏感,但对案例敏感性的敏感性很敏感所以让我们保持所有的答案和评论是民间的!

Jon*_*eet 17

在支持它的语言中,有两个仅按案例区分的成员并不一定是不好的做法.例如,这是一个相当常见的C#:

private readonly string name;
public string Name { get { return name; } }
Run Code Online (Sandbox Code Playgroud)

我个人非常满意区分大小写 - 特别是因为它允许像上面这样的代码,其中成员变量和属性无论如何都遵循惯例,避免混淆.

请注意,区分大小写也具有文化方面......并非所有文化都认为相同的字符是等同的......

  • 最常见的例子是"I"的土耳其语版本.英语不区分大小写对此不敏感,因为在这种情况下"i"=/="I". (4认同)
  • +1 Jon,因为我用小写的同名来支持我的属性.我个人不喜欢在私有字段中使用"_"前缀. (3认同)
  • @Miel:哪些代码会让读者感到困惑?任何有能力的C#开发人员都应该了解他们正在阅读的代码的约定 - 在这种情况下,变量(总是私有的)是驼峰式的,属性是Pascal的. (2认同)

Blo*_*ard 9

我喜欢区分大小写以区分类和实例.

Form form = new Form();

如果你不能这样做,你最终会得到名为myFormor form1or的变量f,它们不像普通的那样干净和描述性form.

区分大小写也意味着,你不必引用form,FORM并且Form这都意味着同样的事情.我发现很难阅读这样的代码.我发现扫描代码更容易,其中对同一变量的所有引用看起来完全相同.

  • @TED取决于.有时它是最明显和最有用的名称 - 有时它不是.至少可以选择它真好. (3认同)

Dir*_*mar 8

编程语言中区分大小写的最大原因之一是可读性.意味着相同的事情看起来也应该是一样的.

我在相关讨论中找到了M. Sandin 的以下有趣例子:

我以前认为区分大小写是一个错误,直到我用不区分大小写的语言PL/SQL(语法现在被遗忘)这样做:

function IsValidUserLogin(user:string, password :string):bool begin
   result = select * from USERS
            where USER_NAME=user and PASSWORD=password;
   return not is_empty(result);
end
Run Code Online (Sandbox Code Playgroud)

这种情况在低产量生产系统上几个月没有被注意到,并没有造成任何伤害.但这是一个令人讨厌的错误,源于不区分大小写,编码约定以及人类阅读代码的方式.对我来说,教训是:相同的东西看起来应该是一样的.

你能立刻看到问题吗?我不能......

  • 这是不区分大小写的代码,因此`PASSWORD = password`始终为true. (4认同)
  • 如果表的PASSWORD列中的值与传入的参数相同,则PASSWORD = password可能为true.不幸的是,它们都指向参数或列.然而,这个例子是错误的."PASSWORD = password"对我们来说只是看起来不错,因为我们已经使用区分大小写的语言编程了20年或更长时间,我们有条件相信PASSWORD和密码必须是两个不同的实体. (2认同)
  • @JeremyP:关于我们习惯的好点,但是又一次:为什么不强迫不同的东西看起来不同,同样的东西看起来一样?毕竟,这就是我们日常生活中常用的东西(套管*可能*完全改变了意义......你喜欢读书吗?或者你喜欢读书?) (2认同)