人们为什么喜欢区分大小写?
只是想知道为什么人们喜欢使用编程语言区分大小写?我并不是想发动一场火焰大战,只是好奇而已。
我个人从来没有真正喜欢过它,因为当我尝试使用一种区分大小写的语言时,我发现我的工作效率下降了。请注意,由于我使用Cand Falot的次数比使用的多,所以我正在慢慢地热身/习惯它到。
那你为什么喜欢它呢?
干杯
解决方案
它给我们更多选择。
钟
钟
钟
都是不同的。
此外,它还驱使刚被聘用的新手试图找出为什么总数不正确的原因; o)))
这对于区分代码中的类型很有用。
例如在Java中:
如果以大写字母开头,则可能是一类。
如果其ALL_CAPS可能是一个常量。
它提供了更多的多功能性。
感觉像是一种更专业的编码方式。不需要编译器弄清楚意思。
一致性。如果将" foo"," Foo"," fOO"和" fOo"视为相同,则代码更难阅读。
某些人会写所有内容,使所有内容都不可读。
根据大小写惯例,区分大小写可以轻松地以不同方式使用"相同名称",例如,
Foo foo = ... // "Foo" is a type, "foo" is a variable with that type
因为现在我们实际上必须以一致的方式键入所有内容。然后事情突然变得有意义。
如果我们有一个像样的编辑器,它具有IntelliSense或者其他名称的相同功能,那么找出区分大小写的名称就不会有任何问题。
很久以前,当我更多地使用VB3 / 4时,我的感觉与我们相同。现在我主要在C#中工作。但是现在我发现IDE在查找符号以及在不同情况下提供良好的智能感知方面做得非常出色。这也使我在自己的代码中具有更大的灵活性,因为我可以对具有不同大小写的项目具有不同的含义,而我现在经常这样做。
恕我直言,这完全是一个习惯问题。无论我们习惯哪种方式,都会看起来自然而正确。
我们可以为它的好坏提出很多理由,但是没有一个人能说得通。例如:
- 我们将获得更多可能的标识符,例如。 foo vs.Foo vs.FOO
- 但是,只有大小写不同的标识符不是一个好主意
- 我们可以将类型信息编码为名称(例如," FooBar" =类型名称," fooBar" =功能," foo_bar" =变量," FOO_BAR" =宏)
- 但是无论如何,我们都可以使用匈牙利表示法
如果在Linux中引用文件名时区分大小写,这也是一个好习惯。我必须移植Windows ColdFusion应用程序才能在Linux中工作,这简直是一场噩梦。另外,有些数据库启用了区分大小写功能,请想象其中的乐趣。
这是一个好习惯,尽管不考虑平台,并且肯定会导致更一致的开发风格。
我相信它可以增强一致性,从而提高代码的可读性,并让眼睛更好地解析各个部分。
class Doohickey { public void doSomethingWith(string things) { print(things); } }
使用大小写约定使代码对于任何程序员而言都显得非常标准化。我们可以轻松选择类,类型,方法。如果有人能够以任何方式将其资本化,则将变得更加困难:
Class DOOHICKEY { Public Void dosomethingwith(string Things) { Print(things); } }
并不是说人们会编写难看的代码,而是大写和标点符号规则使编写更易于阅读,而区分大小写或者大小写标准使代码更易于阅读。
区分大小写不会强制编码样式或者一致性。如果我们使用大小写常量,编译器将不会抱怨。它将迫使我们每次使用时都使用pascal大小写。我个人觉得不得不尝试区分只有大小写不同的两个项目很烦人。在很短的代码块中就很容易做到,但是在非常大的代码块中却很难保持直截了当。还要注意,人们实际上可以不区分大小写地使用区分大小写的唯一方法是,如果他们都严格遵循相同的命名约定。添加值是命名约定,而不是区分大小写。
VB.NET的一个优点是,尽管它不区分大小写,但IDE会自动将所有内容重新格式化为我们正在使用的标识符的"正式"大小写,从而易于保持一致,易于阅读。
缺点是我讨厌VB样式的语法,并且更喜欢C样式的运算符,标点和语法。
在CI中,我总是按Ctrl-空格键来保存必须使用正确类型的字符。
仅仅因为我们可以命名仅因大小写而异的事物并不意味着它是一个好主意,因为如果其中很多泄漏到更大的范围内,可能会导致误解,因此我建议在应用程序或者子系统中避免使用它-级别,但只允许在内部使用函数,方法或者类。
区分大小写是疯狂的!哪种疯狂的编码器将在相同范围内使用名为foo,foO,fOo和fOO的变量?我们永远不会说服我区分大小写的原因!
我为我的公司维护了一个内部编译器,并试图使其成为一种混合体,我们可以使用所需的任何大小写作为标识符,并且必须使用相同的大小写对其进行引用,但使用相同的名称和不同的名称进行命名案件将导致错误。
Dim abc = 1 Dim y = Abc - 1 ' error, case doesn't match "abc" Dim ABC = False ' error, can't redeclare variable "abc"
它目前不区分大小写,因此我可以修复一些现有的错误,并且没有人会抱怨太多...
我相信了解正确区分大小写和可读性之间的区别很重要。虽然使用不同的大小写策略很有用,但是我们可以使用不区分大小写的语言来设置它们。
例如,在Java和VB中,foo都可以用作变量,而FOO可以用作常量。 VB稍后将允许我们键入fOo,这之间存在细微的差别,但这主要是可读性问题,并希望通过某种形式的代码完成来解决。
当我们想要拥有对象的实例时,可能会非常有用。如果使用一致的命名约定,则可以很容易地看到对象的来源。
例如:
FooBar fooBar =新的FooBar();
当只需要一个类型的对象时,可读性会大大提高,因为可以立即看到该对象是什么。当需要多个实例时,我们显然必须选择新的(希望是有意义的名称),但是在较小的代码部分中,将类名称与小写的第一个字符一起使用,而不是像myFooBar,x或者or这样的系统,这是很有意义的。其他一些任意值,我们会忘记它的作用。
当然,所有这一切都取决于上下文,但是在这种情况下,我会说十分之九的回报是有回报的。
我认为这里也涉及心理学问题。我们是程序员,我们细微区分事物。 " a"与" A"不是相同的ASCII值,当我的编译器认为它们相同时,我会感到很奇怪。这就是为什么当我键入
(列出" a'b'c")
在LISP中(在REPL中),它以
(A B C)
我的脑海立刻惊呼:"那不是我说的!"。
当事情不一样时,它们就不同了,必须这样考虑……
许多喜欢区分大小写的人误解了区分大小写的含义。
VB .NET不区分大小写。这并不意味着我们可以将变量声明为abc,然后再将其称为ABC,Abc和aBc。这意味着,如果我们将其键入为其他任何类型,IDE都会自动将其更改为正确的格式。
不区分大小写意味着我们可以输入
dim a as string
VS会自动将其更改为大小写正确的
Dim a As String
实际上,这意味着我们几乎不必按Shift键,因为我们可以键入所有小写字母,然后让IDE正确显示。
但是Cis对此并不像以前那么糟糕。 Cis中的Intellisense比VS 2002和2003中的Intellisense更具攻击性,因此击键次数下降了很多。
因为这也是自然语言的工作方式。
在编程时,为了区分大小写,要说些什么,例如,具有公共属性Foo和相应的私有/受保护的字段foo。有了IntelliSense,不犯错误并不难。
但是,在OS中,区分大小写简直太疯狂了。我真的不想在同一目录中有文件Foo和foo和fOO。每当我做* nix东西时,这都会驱使我感到恐惧。
对我而言,区分大小写只是在诸如thisValue作为参数的范围以及ThisValue对于公共属性或者函数的范围内起作用。
通常,我们需要在不同的范围内使用相同的变量名(因为它代表相同的事物),区分大小写可做到这一点而无需诉诸前缀。
ew,至少我们不再使用匈牙利表示法。
我通常在度假期间花一些时间在Delphi编程上,而在其他大部分时间里,我仅使用C ++和MASM。奇怪的是:当我使用Delphi时,我不喜欢区分大小写,但是当我使用C ++时,我却喜欢。我喜欢区分大小写,因为它使相似的词(函数,变量)看起来相似,并且我喜欢非区分大小写,因为它不会对语法施加过多限制。
从
.NET Framework开发人员指南
大写约定,区分大小写:
The capitalization guidelines exist solely to make identifiers easier to read and recognize. Casing cannot be used as a means of avoiding name collisions between library elements. Do not assume that all programming languages are case-sensitive. They are not. Names cannot differ by case alone.
在处理了旧的VBScript ASP代码多年之后,当我们迁移到.NET时,我们选择了C#,主要原因之一是区分大小写。以前的代码不可读,因为人们没有遵循任何约定:代码是不可读的烂摊子(很好的VBScript IDE对此提供了帮助)。
在Cwe中,可以定义命名约定,并且每个人都必须遵循它们。如果没有正确设置大小写,则可以对其进行重命名(具有重构功能,但这是IDE的功能),不会有任何问题,因为类或者变量将在整个代码中以相同的方式命名。
最后,我认为,如果所有内容都正确放置,则可读性会更高。也许在不区分大小写的情况下编写起来会更快,但是从代码审查和维护的角度来看,这并不是最好的选择,因为跳过代码寻找内容会更容易。例如,一目了然地查找所有'foo'字符串比查找'foo','Foo','FOO','FOo'更容易...