代码之家  ›  专栏  ›  技术社区  ›  Tom Gullen

语言中区分大小写的目的是什么[[副本]

  •  17
  • Tom Gullen  · 技术社区  · 14 年前

    可能的重复项:
    Is there any advantage of being a case-sensitive programming language?
    Why are many languages case sensitive?

    我一直在想,为什么语言设计成区分大小写?

    我的豌豆脑袋搞不懂它为什么有用。

    dog Dog 区分大小写是很糟糕的做法,对吧?

    感谢您的任何评论,也许还有关于此事的任何历史!我对区分大小写一般不敏感,但对区分大小写敏感,所以让我们保持所有的回答和评论文明!

    8 回复  |  直到 7 年前
        1
  •  17
  •   Jon Skeet    14 年前

    在支持区分大小写的语言中,有两个成员只是根据大小写来区分并不一定是不好的做法。例如,这里有一个相当常见的C#:

    private readonly string name;
    public string Name { get { return name; } }
    

    就我个人而言,我对区分大小写很满意,特别是它允许像上面这样的代码,成员变量和属性都遵循约定,避免了混淆。

    请注意,区分大小写也有文化方面。。。不是所有的文化都会认为相同的人物是对等的。。。

        2
  •  9
  •   Blorgbeard    14 年前

    为了区分类和实例,我喜欢区分大小写。

    Form form = new Form();

    myForm form1 f ,它们不像普通的旧的那样干净和描述性 form .

    形式 , FORM Form 都是一样的意思。我发现读这样的代码很困难。我发现在代码中扫描对同一变量的所有引用看起来完全相同的代码要容易得多。

        3
  •  8
  •   Dirk Vollmar    14 年前

    interesting example 由M。桑丁在相关讨论中:

    我曾经 错了,直到我在案子里这么做 不敏感语言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
    

    系统,没有带来任何伤害。但是它 是个讨厌的虫子,从箱子里冒出来的 不敏感、编码约定和 对我来说是这样的:事情就是 同样的应该看起来一样。

    你能马上看到问题吗?我不能。。。

        4
  •  4
  •   Donal Fellows    14 年前

    为什么这是一个问题?好吧,不区分大小写是很难添加的,除非你在一个支持字符的很小的域中(特别是US-ASCII)。大小写转换规则因地区而异(土耳其的规则与世界上其他国家的规则不一样),不能保证翻转一个位会做正确的事情,也不能保证它总是在相同的位和相同的前提下(IIRC,在某些语言中,有一些非常复杂的规则,当元音转换成大写字母时,要抛弃音调符号,当元音转换成小写字母时,要重新引入音调符号。我完全忘了细节是什么。)

    如果你是区分大小写的,你就忽略所有这些;只是比较简单(请注意,您仍然应该注意UNICODE规范化表单,但这是另一回事,它适用于您正在使用的任何大小写规则。)

        5
  •  3
  •   Alex    14 年前

    dog ,它有一个名为 Bark() . 您还定义了一个名为Dog的类,它有一个名为 . 你在写什么 dog.Bark() . 那它会做什么呢?从类中调用对象的方法还是静态方法(用一种语言 :: 不存在)

        6
  •  2
  •   Sean Edwards    14 年前

    我敢肯定,最初这是一个性能的考虑。将字符串转换为大写或小写以进行无大小写比较并不是一个昂贵的操作,但它也不是免费的,而且在旧的系统上,它可能增加了当时的系统无法处理的复杂性。

    当然,现在的语言喜欢彼此兼容(例如VB不能区分C类或函数,它们只区分大小写),人们习惯用相同的文本命名,但大小写不同(见Jon Skeet的答案-我经常这样做),无案例语言的价值并不足以超过这两种语言。

        7
  •  2
  •   T.E.D.    14 年前

    你不能理解为什么区分大小写是个好主意,是因为它不是。这只是C语言的一个奇怪的怪癖(比如基于0的数组),现在看起来很“正常”,因为有太多语言复制了C语言的功能。

        8
  •  1
  •   Philipp    14 年前

    区分大小写的比较(从忽略规范等价性的天真观点来看)是微不足道的(简单地比较代码点),但是区分大小写的比较并没有很好的定义,并且在所有情况下都非常复杂,规则也不可能记住。实施它是可能的,但会无意中导致意外和令人惊讶的行为。顺便说一句,有些语言如Fortran和Basic一直不区分大小写。