任何人都可以通过区分大小写来确定一个很好的案例(:-))吗?
C#:区分大小写的VB.NET:不区分大小写的C++:区分大小写......
更糟糕的部分:这是用来里面像VB.NET语言XML 是区分大小写.
我正在做一个很荒谬的,只能造成伤害,我们发现在我们的系统中的错误是由于一个事实,即XML有后两者的情况下V ALUE和v ALUE节点...
我在评论中一遍又一遍地被问到
"也许你可以提出一个论证,为什么不区分大小写是这样一个世界的正确选择?"
这是一个例子:我认为它类似于以下问题:URL应该区分大小写?www.cnn.com <> www.nN.com.cn 当然他们应该是一样的,ID盗窃天堂!因为人类并没有把那么多的注意力放在相同但可能有不同外壳的2根弦上.程序员是人类.所以getAge()和getage()在大多数人的脑海中都是一样的.
请注意:我认为我们不希望代码实际上有一个定义为getAget()的函数,然后让代码调用它getage(),VS(vb.net)会自动纠正getaget到getAge.所以代码很清楚,程序员知道正确的大小写.我的观点是:良好的IDE使问题不相关,但它在vb.net这样的非案例性语言中效果更好,然后让我们说c#.参考:这里
jal*_*alf 11
案例规则取决于文化.你想一个编程语言,其中的变量i是有时被认为是同一个叫I,有时它们是不同的变量?(这不是一个制造的例子,顺便说一句,在土耳其,I是不大写i.
老实说,这很简单.您是否希望编译器在您输入错误时纠正您,或者您是否希望它猜测您的意思?正如你所发现的,后者会导致错误.VB假设"哦,你可能意味着同样的事情,没关系,我们不会阻止你",而XML也是字面意思.
你的错误没有发生,因为区分大小写是坏的,它发生是因为草率很糟糕.任意改变案例最多可能没有问题,最坏的情况下会导致错误.假设最坏的情况,并与您的情况保持一致.顺便说一句,这是区分大小写的语言强迫您做的事情.无论您的工具是否区分大小写,程序员都应区分大小写.只要世界具有敏感性和敏感性工具,区分大小写就会给您带来很多麻烦.如果我们能够重塑世界以使一切都不区分大小写,那么支持敏感性的许多理由就会消失.但我们不能.
当然有点注意:在许多语言中,通常给变量和类型赋予相同的名称,但使用不同的大小写:
Foo foo; // declare a variable foo of type Foo
Run Code Online (Sandbox Code Playgroud)
当然你可以争辩说"你不应该这样做",但它很方便,它会立即告诉读者变量的类型.它允许我们创建一个Log类和一个日志对象.而且由于此对象的目的是记录,因此名称显而易见.
最后一点要考虑:
案例以实际语言呈现.以大写字母开头的单词与同一单词不同,但具有前导小写字母."worD"这个词不是正确的英语.信息在案例中进行编码,使文本更易于阅读.它告诉我们什么时候遇到一个名字,或者当一个句子开始时,这很方便.允许人们忽略案例规则会使文本更难阅读.因为代码通常应该尽可能地编写,为什么我们不应该在编程中做同样的事情呢?允许案例对重要信息进行编码.在许多语言中,Foo是一种类型,并且foo是一个变量.这是重要的信息.我编程的时候想知道这个.如果我看到一个名为"Getage"的函数,我想知道这是否是我之前从未听过的一些英文单词.但是当我看到"GetAge"时,我立即知道它应该被读作"Get"这个词后跟"Age"这个词.
顺便说一句,这是一个很好的例子,你可以在区分大小写的语言中遇到有趣的惊喜.
在编程语言中,Slop 从来都不是一个好主意。您希望事情尽可能具体。你永远不希望你的语言猜测任何事情,它应该允许尽可能少的方法来解决给定的问题。
至于具体的答案,可读性怎么样?是不是 stoRetroData 在视觉上与 storeTRodAtA 有很大不同?并不是说任何人都会做这样的事情,但是允许它有什么意义呢?
我想不出任何理由允许忽略大小写。
至少这是我的观点——但你的情况可能会有所不同。
编辑:我可能应该从免责声明开始:
大约 18 年前,我学习了基础编程,并短暂地产生了同样的想法。相信我,这是你 20 年后回顾时会说“哦,是的,我当时错得很”的事情之一(就像我现在一样)
我发现不区分大小写很愚蠢。您应该遵循原始声明的大小写。除了懒得打字之外,我看不出有什么好的理由不这样TheRealName做therealname。
事实上,我什至不会考虑使用不区分大小写的语言。
| 归档时间: |
|
| 查看次数: |
4215 次 |
| 最近记录: |