2

可能重複:
Is there any advantage of being a case-sensitive programming language?程序語言中區分大小寫的好處是什麼?

我的第一個編程經驗,其中具有基本的家庭(MSX BASIX,Q-基本,VB)。 這些都不區分大小寫。現在,這可能是因爲這些第一次的經歷,但我從來沒有理解區分大小寫的語言的好處。相反,我認爲這是一個不必要的開銷和錯誤的來源,當我使用時,它仍然讓我很煩惱。 Java或C.

現在,我剛剛閱讀了Clojure(一種Lisp方言),並注意到 - 令我驚訝的是 - 與Lisp的區別之一是case-sensitivity

所以:對於區分大小寫的語言,實際上對程序員有什麼好處?

我能想到的唯一的事情是:

  • 符號的雙數
  • 的視覺感受和使用像駝峯,例如技術複雜的變量更容易閱讀HopCount

但是,第一個參數不因爲是對錯誤的主要來源(不好的做法,使用跳數和跳數的一種方法)舉行。

第二個參數也不適用,因爲體面的IDE可以通過其他方式提供。一個很好的例子是VBA IDE,它具有非常好的方法:語言不區分大小寫,但只要鍵入變量,它就會將其更改爲定義中使用的情況。例如,如果您定義了Dim thisIsMyVariable as string,則會將thisismyvariable的任何出現更改爲thisIsMyVariable)。這給程序員提供了一個直接的線索,即變量實際上是正確輸入的(因爲它改變了外觀)。

編輯:添加...好處給程序員 ...

+3

技術上它不是符號數量的兩倍。假設最大符號長度爲32個字符,則不區分大小寫可以是38個字符('a-z0-9_ $''),具有'38^32 = 3.57e + 50'個排列。在區分大小寫的情況下再添加26個字符,我們有'64^32 = 6.28e + 57'排列,這是大約1.76e + 7倍以上的符號,而不只是兩倍以上的符號。這並不重要。 – 2011-03-04 13:07:25

+0

我認爲可讀性是主要的。也使編譯器做少一點工作。考慮一下'String string = new String();' – Melv 2011-03-04 13:08:37

+2

是的,對於它的價值,我**完全同意**關於區分大小寫而不是程序員的好處。不幸的是,這似乎是一個主觀/爭論性的問題,對此沒有明確定義的答案。因此,我認爲這不太適合Stack Overflow。我真的不知道[程序員.stackexchange.com](http://programmers.stackexchange.com)上的政策是什麼,但我認爲這將是一個有趣的討論。 – 2011-03-04 13:08:59

回答

0

許多命名約定要求,即表示從不同的語義類別(類型,函數,變量)對象的符號有自己的名字大小寫規則。例如,在Java中,類型名稱始終以大寫字母開頭,而變量,成員函數名稱等以小寫字母開頭。這有效地將類型名稱放在不同的名稱空間中給出了一個視覺線索實際上的含義。

// declare and initialize a new Point 
Point point=new Point(); 
// calls a static member function of type Point 
Point.fooBar(); 
// calls a member function of Point 
point.moveTo(x,y); 
+0

我打算髮佈一個非常類似的答案。因爲我經常使用MainModel mainmodel = new MainModel(){foo = 1,bar = 0}; – SQLMason 2011-03-04 13:20:40

+0

我不喜歡*兩種*使用僅在大小寫不同的情況下標識符的使用(在C#中允許使用),*和*在使用標識符時使用不一致的情況(允許在VB.NET中使用)。如果我有我的幹事,如果'Foo'在一個範圍內被聲明並且'foo'在一個嵌套範圍內,那麼在該嵌套範圍內'Foo'既不會引用外部名稱也不會引用內部函數,但是將被禁止。這樣的規則會使IDE更容易糾正任何問題[我發現C#IDE在這方面不是很有幫助]。 – supercat 2013-09-16 20:02:28

1

有一點,就像你說的那樣,視覺輔助。大多數編程語言(甚至是框架)都有關於如何將變量,名稱等資本化的約定。另外,它強制在任何地方使用統一的名稱,因此您不會與被稱爲「var」,「 Var「或甚至」VaR「。

我不記得有沒有與大寫有關的錯誤,所以這一點似乎對我有點做作。 使用兩個同名變量,但大小寫不同的字眼聽起來像是有意識地嘗試在腳下拍攝自己。不同的大寫約定幾乎在任何地方都表示完全不同類型的對象(類,變量,方法等),所以由於完全不同的語義而很難做出這樣的錯誤。

我想這樣想:我們通過不區分大小寫而獲得什麼? 我們引入歧義,我們鼓勵sl and和貧窮的風格。

這當然是一個稍微主觀的問題。

相關問題