Csharp/C#教程:人们为什么喜欢区分大小写?分享


人们为什么喜欢区分大小写?

只是想知道为什么人们喜欢编程语言中的区分大小写? 我并不是想要开始一场火焰战,只是好奇这一切。
我个人从来没有真正喜欢它因为我发现我的生产力下降,因为我尝试过一种具有区分大小写的语言,请注意我现在慢慢升温/习惯它现在我正在使用C#和F#更多然后我曾经。

那么你为什么喜欢它?

干杯

一致性。 如果“foo”,“Foo”,“fOO”和“fOo”被认为是相同的,则代码更难以阅读。

有些人会在所有大写字母中写下所有内容,使得所有内容都无法读取。

区分大小写使得根据大写惯例,以不同方式使用“相同名称”变得容易,例如,

 Foo foo = ... // "Foo" is a type, "foo" is a variable with that type 

VB.NET的一个优点是虽然它不区分大小写,但IDE会自动将所有内容重新格式化为您正在使用的标识符的“官方”情况 – 因此它很容易保持一致,易于阅读。

缺点是我讨厌VB风格的语法,更喜欢C风格的运算符,标点符号和语法。

在C#中我发现我总是按Ctrl-Space来保存必须使用正确的类型。

仅仅因为你可以根据具体情况命名不同的东西并不意味着这是一个好主意,因为如果大量泄漏到更大的范围,它可能导致误解,所以我建议在应用程序或子系统中清除它 – 级别,但仅允许它在内部使用函数或方法或类。

区分大小写不会强制执行编码样式或一致性。 如果pascal case是常量,编译器就不会抱怨。 每次使用它时,它都会强制您使用pascal case键入它。 我个人觉得必须尝试区分两种只有不同情况的物品才会令人恼火。 在一小段代码中很容易做到,但很难直接在一个非常大的代码块中。 另外请注意,人们实际上可以使用区分大小写而不会疯狂的唯一方法是,它们都严格遵循相同的命名约定。 增加值的命名约定,而不是区分大小写。

我为我的公司维护了一个内部编译器,我很想把它变成一个混合体 – 你可以使用你想要的任何一个标识符的情况,你必须使用相同的shell来引用它,但是用相同的名称命名其他东西,不同的情况会导致错误。

 昏暗的abc = 1  Dim y = Abc  -  1'错误,案例与“abc”不匹配  Dim ABC = False'错误,无法重新声明变量“abc” 

它目前不区分大小写,所以我可以解决现有的几个错误,没有人会抱怨太多……

许多喜欢区分大小写的人误解了敏感性案例含义。

VB .NET不区分大小写。 这并不意味着您可以将变量声明为abc,然后将其称为ABC,Abc和aBc。 这意味着如果您将其键入其他任何一个,IDE将自动将其更改为正确的forms。

不区分大小写意味着您可以输入

 dim a as string 

并且VS会自动将其更改为正确的

 Dim a As String 

在实践中,这意味着您几乎不必按Shift键,因为您可以输入全部小写并让IDE更正。

但是C#并没有像过去那样糟糕。 C#中的Intellisense比VS 2002和2003中的Intellisense更具侵略性,因此击键次数下降得相当多。

我相信它可以强制执行一致性,从而提高代码的可读性,并让您的眼睛更好地解析出来。

 class Doohickey { public void doSomethingWith(string things) { print(things); } } 

使用大小写约定使得代码对任何程序员都显得非常标准化。 您可以轻松选择类,类型和方法。 如果有人能以任何方式利用它,那将会更加困难:

 Class DOOHICKEY { Public Void dosomethingwith(string Things) { Print(things); } } 

并不是说人们会编写丑陋的代码,但大写和标点符号规则使编写更容易阅读,区分大小写或套管标准使代码更容易阅读。

我相信您必须了解区分大小写与正确回答此问题的可读性之间的区别。 虽然使用不同的套管策略很有用,但您可以使用不区分大小写的语言。

例如,foo可用于变量,FOO可用作java和VB中的常量。 VB稍后会允许您输入fOo,但这主要是可读性问题,希望通过某种forms的代码完成来修复。

什么是非常有用的是你想拥有你的对象的实例。 如果使用一致的命名约定,则可以很容易地看到对象的来源。

例如:FooBar fooBar = new FooBar();

当只需要一个类型的一个对象时,可读性显着增加,因为它立即显现出对象是什么。 当需要多个实例时,你显然必须选择新的(希望有意义的名称),但是在小代码部分中使用带有小写第一个字符的类名而不是像myFooBar,x或类似的系统是很有意义的。一些其他任意值,你会忘记它的作用。

当然所有这些都是一个背景问题,但在这种情况下,我会说10次中有9次会得到回报。

这里有很多答案,但我很惊讶没有人指出这个明显的例子也取笑了stackoverflow竞争对手:

 expertSexChange != expertsExchange 

使用驼峰大小写变量名时,大小写非常重要。

它为您提供了更多选择。

贝尔贝尔贝尔

各有不同。

此外,它驱动刚刚雇用坚果的新手试图找出为什么总数不正确; o)))

因为现在你实际上必须以一致的方式键入所有内容。 然后事情突然变得有意义了。

如果你有一个不错的编辑器 – 一个具有IntelliSensefunction的编辑器或另一个名称相同的编辑器 – 你不应该在找出区分大小写的免费精选名字大全时遇到任何问题。

区分大小写是疯狂的! 什么样的疯狂编码器会在同一范围内使用名为foo,foO,fOo和fOO的变量? 你永远不会说服我有理由区分大小写!

我认为这里还涉及心理问题。 我们是程序员,我们在事物之间进行细致区分。 ‘a’与’A’的ASCII值不同,当编译器认为它们相同时,我会感到奇怪。 这就是为什么,当我输入

(列出’a’b’c)

在LISP(在REPL中),它响应

(ABC)

我的脑海里立即惊呼“那不是我说的!”。 当事情不一样时,它们不同的,必须考虑到……

我通常花一些时间在度假时使用Delphi编程,而大多数时候我只使用C ++和MASM。 有一点很奇怪:当我使用Delphi时,我不喜欢区分大小写,但是当我使用C ++时 – 我会这样做。 我喜欢区分大小写,因为它使类似的单词(函数,变量)看起来很相似,而且我喜欢非区分大小写,因为它没有对syntaxis施加过多的限制。

从.NET Framework开发人员指南资本化约定 ,区分大小写:

资本化指南仅用于使标识符更易于阅读和识别。 套管不能用作避免库元素之间名称冲突的手段。

不要以为所有编程语言都区分大小写。 他们不是。 名称不能仅因个案而异。

它可用于区分代码中的类型。

例如在Java中:如果它以大写字母开头,那么它可能是一个类。 如果它的ALL_CAPS可能是一个常数。

它提供了更多function。

感觉就像一种更专业的编码方式。 不应该让编译器弄清楚你的意思。

很久以前,当我使用VB3 / 4时,我的感觉和你一样。 现在我主要在C#工作。 但是现在我发现IDE在找到符号方面做得很好,并且在不同情况下提供了良好的智能感知。 它还使我在自己的代码中具有更大的灵活性,因为我可以对具有不同情况的项目具有不同的含义,我现在做了很多。

如果您在Linux中工作,引用文件名区分大小写也是一个好习惯。 我不得不移植Windows ColdFusion应用程序以在Linux中工作,这是一个彻头彻尾的噩梦。 还有一些数据库启用了区分大小写,想象那里的快乐。

不管平台如何,这都是好习惯,并且肯定会带来更一致的开发风格。

恕我直言,这完全是一个习惯问题。 无论你习惯哪一个看起来都是自然而正确的。

你可以提出充分的理由来说明它为什么好或坏,但它们都没有多少水。 例如:

因为这也是自然语言的运作方式。

在编程中,可以说区分大小写,例如具有公共属性Foo和相应的私有/受保护字段foo。 使用IntelliSense,不会犯错误并不是很难。

但是在操作系统中,区分大小写只是疯狂。 我真的不想在同一目录中有一个文件Foo foo fOO。 每当我做* nix的东西时,这就驱使我克服。

对我来说,区分大小写只是对于参数的thisValue和公共属性或函数的ThisValue这样的范围。

通常,您需要在不同的范围内使用相同的变量名称(因为它代表相同的事物),并且区分大小写可以帮助您在不使用前缀的情况下执行此操作。

哇,至少我们不再使用匈牙利表示法了。

在使用传统VBScript ASP代码工作多年后,当我们转向.NET时,我们选择了C#,其中一个主要原因是区分大小写。 旧的代码是不可读的,因为人们没有遵循任何约定:代码是一个难以理解的混乱(好吧,糟糕的VBScript IDE帮助了)。

在C#中,我们可以定义命名约定,每个人都必须遵循它们。 如果没有正确设置某些内容,您可以重命名它(使用重构,但这是一个IDEfunction)并且不存在任何问题,因为类或变量在整个代码中的命名方式相同。

最后,如果一切都正确套装,我认为更具可读性。 也许在没有区分大小写的情况下编写速度更快,但是从代码审查和维护点来看并不是最好的事情,因为跳过代码寻找某些东西更容易。 例如,比查找’foo’,’Foo’,’FOO’,’FOo’更容易找到所有’foo’字符串…

不区分大小写的语言不容易推广到非ASCII字符集。 对英语以外的语言进行适当的大小写转换不是一项简单的任务,并且取决于系统区域设置等。

除非您将语法限制为ascii(或仅对ascii字符应用不区分大小写),否则不区分大小写非常困难,并且您还需要限制区域设置。

确定字符大小写的规则既没有明确定义,也没有无损。

某些字符可以有多个“小写”forms。 有些人不同意正确的大写forms应该是什么。

(某些语言和环境允许在名称中使用几乎字符)

在C#中考虑ToUpper()和ToUpperInvariant()之间的区别是什么?

上述就是C#学习教程:人们为什么喜欢区分大小写?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/987044.html

(0)
上一篇 2021年12月22日
下一篇 2021年12月22日

精彩推荐