Tom*_*len 17 language-features programming-languages language-design case-sensitive case-insensitive
我一直想知道的是,为什么语言设计为区分大小写?
我的豌豆大脑无法理解它为什么有用的任何可能的原因.
但我确信那里有一个.在任何人说出来之前,通过区分大小写调用dog和Dog区分变量实际上是非常糟糕的做法,对吧?
任何评论都赞赏,也许还有任何关于此事的历史!我对案例敏感性一般不敏感,但对案例敏感性的敏感性很敏感所以让我们保持所有的答案和评论是民间的!
Jon*_*eet 17
在支持它的语言中,有两个仅按案例区分的成员并不一定是不好的做法.例如,这是一个相当常见的C#:
private readonly string name;
public string Name { get { return name; } }
Run Code Online (Sandbox Code Playgroud)
我个人非常满意区分大小写 - 特别是因为它允许像上面这样的代码,其中成员变量和属性无论如何都遵循惯例,避免混淆.
请注意,区分大小写也具有文化方面......并非所有文化都认为相同的字符是等同的......
我喜欢区分大小写以区分类和实例.
Form form = new Form();
如果你不能这样做,你最终会得到名为myFormor form1or的变量f,它们不像普通的那样干净和描述性form.
区分大小写也意味着,你不必引用form,FORM并且Form这都意味着同样的事情.我发现很难阅读这样的代码.我发现扫描代码更容易,其中对同一变量的所有引用看起来完全相同.
编程语言中区分大小写的最大原因之一是可读性.意味着相同的事情看起来也应该是一样的.
我在相关讨论中找到了M. Sandin 的以下有趣例子:
我以前认为区分大小写是一个错误,直到我用不区分大小写的语言PL/SQL(语法现在被遗忘)这样做:
Run Code Online (Sandbox Code Playgroud)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这种情况在低产量生产系统上几个月没有被注意到,并没有造成任何伤害.但这是一个令人讨厌的错误,源于不区分大小写,编码约定以及人类阅读代码的方式.对我来说,教训是:相同的东西看起来应该是一样的.
你能立刻看到问题吗?我不能......