gpt4 book ai didi

case-sensitive - 区分大小写与不区分语法

转载 作者:行者123 更新时间:2023-12-04 09:29:47 26 4
gpt4 key购买 nike

任何人都可以为区分大小写做一个很好的案例(:-))吗?

C#:区分大小写
VB.NET:不是 区分大小写
C++:区分大小写
...

更糟糕的部分:在 VB.NET 等语言中使用的 XML 区分大小写。

我认为这是荒谬的,只有在我们发现系统中的错误后才会造成伤害,因为 XML 具有两个 的事实。 V alue 和 v alue节点...

我在评论中一遍又一遍地被问到

"Perhaps you can come up with a single argument for why case insensitive is the right choice in such a world?"



下面是一个例子:
我认为它类似于以下问题:URL 应该区分大小写吗?
www.cnn.com <> www.cnn.com ?
当然应该是一样的,盗号天堂!因为人类不会太关注 2 个相同但可能具有不同 shell 的字符串。程序员也是人。所以 getAge() 和 getage() 在大多数人的脑海中是一样的。

请注意:我不认为我们希望代码实际上有一个定义为 getAget() 的函数,然后让代码调用它 getage(),VS (vb.net) 会自动将 getaget 更正为 getAge。所以代码很清楚,程序员知道正确的大小写。我的观点是:好的 IDE 使问题不相关,但它在像 vb.net 这样的非区分大小写的语言中效果更好,然后让我们说 c#。
引用: here

最佳答案

案例规则取决于文化。你想要一种编程语言,其中一个变量 i有时 被认为与名为 I 的相同有时它们是不同的变量? (顺便说一句,这不是一个虚构的例子。在土耳其语中, I 不是 一个大写的 i

老实说,这很简单。您是希望编译器在您打错字时纠正您,还是希望它猜出您的意思?正如您所发现的,后者会导致错误。 VB 假设“哦,你可能是同一件事,没关系,我们不会阻止你”,而 XML 就从字面上理解了你。

你的错误不是因为区分大小写不好而发生的,而是因为草率是不好的。随意更改大小写可能在最好的情况下不会引起问题,在最坏的情况下会导致错误。假设最坏的情况,并与您的情况保持一致。顺便说一句,区分大小写的语言迫使您这样做。无论您的工具是否区分大小写,程序员都应该区分大小写。只要世界具有不敏感和敏感的工具,区分大小写可以为您节省很多麻烦。如果我们可以改造世界,让一切都不区分大小写,那么很多支持敏感的理由就会消失。但我们不能。

当然还有一点注意事项:
在许多语言中,给变量和类型赋予相同的名称,但大小写不同是很常见的:

Foo foo; // declare a variable foo of type Foo

当然,您可能会争辩说“您不应该那样做”,但这很方便,而且它会立即告诉读者变量的类型。它允许我们创建一个 Log 类和一个日志对象。因为这个对象的目的是记录日志,所以名字有点明显。

最后要考虑的一点:

案例在真正的语言中很重要。以大写开头的单词与相同但以小写开头的单词不同。 “word”这个词不是正确的英语。信息被编码在 shell 中,这使得文本更易于阅读。例如,它告诉我们什么时候遇到一个名字,或者一个句子什么时候开始,这很方便。允许人们忽略大小写规则会使文本更难阅读。既然代码通常应该尽可能地可读,为什么我们不应该在编程中做同样的事情呢?允许案例对重要信息进行编码。多种语言, Foo是一种类型,而 foo是一个变量。这是重要的信息。我想在编程时知道这一点。如果我看到一个名为“Getage”的函数,我想知道这是不是一个我以前从未听说过的英文单词。但是当我看到“GetAge”时,我立即知道它应该读作“Get”这个词,然后是“Age”这个词。

顺便说一句, here是您在区分大小写的语言中可能遇到的有趣惊喜的一个很好的例子。

关于case-sensitive - 区分大小写与不区分语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/895423/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com