なぜ人々は大文字と小文字の区別を好むのでしょうか?[閉まっている]

StackOverflow https://stackoverflow.com/questions/165455

  •  03-07-2019
  •  | 
  •  

質問

なぜプログラミング言語では大文字と小文字の区別が好まれるのか不思議に思いませんか?炎上戦争を始めようとしているわけではなく、ただ興味があるだけです。
個人的には、大文字と小文字を区別する言語を試すたびに生産性が低下するので、あまり好きではありませんでした。念のため言っておきますが、今は 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を押します。

ケースによってのみ異なるものに名前を付けることができても、それが良いアイデアを意味するわけではないからです。またはサブシステムレベルですが、関数、メソッド、またはクラスに対して内部的にのみ許可します。

大文字と小文字の区別は、コーディングスタイルや一貫性を強制しません。定数をパスカルする場合、コンパイラは文句を言いません。使用するたびにパスカルケースを使用して入力するように強制します。個人的には、大文字と小文字が異なるだけの2つのアイテムを区別しようとするのはいらいらします。短いコードブロックで行うのは簡単ですが、非常に大きなコードブロックでまっすぐに保つのは非常に困難です。また、ユーザーが実際に大文字と小文字を区別せずに使用できる唯一の方法は、全員が同じ命名規則に厳密に従う場合のみです。値を追加したのは大文字と小文字の区別ではなく、命名規則です。

私は会社の内部コンパイラを保守しており、ハイブリッドにするように誘惑されています-識別子に任意の大文字小文字を使用でき、同じ大文字小文字で参照する必要がありますが、同じ名前で大文字と小文字が異なるとエラーが発生します。

Dim abc = 1
Dim y = Abc - 1 ' error, case doesn't match "abc"
Dim ABC = False ' error, can't redeclare variable "abc"

現在は大文字と小文字が区別されないので、おそらくいくつかの既存のエラーを修正でき、誰も文句を言いすぎないでしょう...

ケースを好む多くの人々-感度は、ケース- in 感度の意味を誤解しています。

VB .NETは大文字と小文字を区別しません。これは、変数をabcとして宣言し、後でその変数をABC、Abc、およびaBcとして参照できるという意味ではありません。つまり、他のユーザーとして入力すると、IDEによって自動的に正しい形式に変更されます。

大文字と小文字を区別しないということは、入力できることを意味します

dim a as string

そしてVSはそれを自動的に正しいケースに変更します

Dim a As String

実際には、これはShiftキーを押す必要がほとんどないことを意味します。すべて小文字で入力し、IDEを修正できるからです。

しかし、C#は以前ほど悪くはありません。 C#のIntelliSenseはVS 2002および2003よりもはるかに攻撃的であるため、キーストロークカウントがかなり低下します。

これにより一貫性が強化され、コードの可読性が向上し、目でピースをよりよく解析できるようになります。

class Doohickey {

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

大文字と小文字の規則を使用すると、そのコードはプログラマーにとって非常に標準化されたように見えます。クラス、タイプ、メソッドを簡単に選択できます。誰かが何らかの方法で大文字にすることができるなら、それははるかに難しいでしょう:

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

人々がいコードを書くと言っているわけではありませんが、大文字と句読点の規則が書くのを読みやすくする方法、大文字と小文字の区別、または大文字と小文字の区別がコードを読みやすくする方法について

これに適切に答えるためには、大文字と小文字の区別と読みやすさの違いを理解することが重要だと思います。さまざまな大文字と小文字の戦略を使用すると便利ですが、大文字と小文字を区別しない言語でそれらを使用できます。

たとえば、fooは変数に使用でき、FOOはjavaとVBの両方で定数として使用できます。 VBでは後でfOoを入力できるという小さな違いがありますが、これは主に読みやすさの問題であり、何らかの形のコード補完によって修正されることを期待しています。

非常に役立つのは、オブジェクトのインスタンスが必要な場合です。一貫した命名規則を使用すると、オブジェクトがどこから来たのかを非常に簡単に確認できるようになります。

例: FooBar fooBar = new FooBar();

タイプのオブジェクトが1つだけ必要な場合、オブジェクトが何であるかがすぐにわかるため、可読性が大幅に向上します。複数のインスタンスが必要な場合は、明らかに新しい(できれば意味のある名前)を選択する必要がありますが、小さなコードセクションでは、myFooBar、x、またはx他の任意の値は、それが何をするのかを忘れてしまいます。

もちろん、これはすべて文脈の問題ですが、この文脈では、10回のうち9回は報われると思います。

ここには多くの答えがありますが、stackoverflowの競合他社をからかう明白な例を指摘している人が誰もいなかったことに驚いています:

expertSexChange != expertsExchange

キャメルケース変数名を使用する場合、ケースは非常に重要です。

より多くのオプションが提供されます。

ベル ベル BE

すべて異なります。

さらに、それはちょうど合計が正しく出ていない理由を見つけようとしているナッツを雇ったばかりの初心者を駆り立てます; o)))

これで、実際にはすべてを一貫した方法で入力する必要があります。そして、物事が突然意味をなし始めます。

IntelliSenseまたは別の名前の同じ機能を備えた適切なエディターを使用している場合は、大文字と小文字を区別する名前を理解するのに問題はないはずです。

大文字と小文字の区別は狂気です!どの種類の非常識なコーダーが、同じスコープ内でfoo、foO、fOo、およびfOOという名前の変数を使用しますか?大文字と小文字を区別する理由があることを私に納得させないでしょう!

ここには心理学の問題もあると思います。私たちはプログラマであり、物事を細かく区別しています。 「a」は「A」と同じASCII値ではなく、コンパイラがそれらを同じと見なすと奇妙に感じます。

と入力すると、これが理由です。

(list 'a' b 'c)

LISP(REPL)で、応答します

(A B C)

私の心はすぐに「それは私が言ったことではない!」と叫ぶ。 物事が同じではない場合、それらは 異なり、そのように考慮する必要があります...

私は通常、休暇中にDelphiプログラミングに時間を費やしますが、ほとんどの場合、C ++とMASMのみを使用します。そして奇妙なことに、Delphiを使用しているとき、大文字と小文字を区別するのは好きではありませんが、C ++を使用しているときは好きです。大文字と小文字を区別するのが好きです。似たような単語(関数、変数)が似ているためです。

から .NET Framework開発者ガイド 大文字と小文字の区別、大文字と小文字の区別:

  

大文字のガイドラインが存在します   識別子を簡単にするためだけに   読んで認識します。ケーシングはできません   名前を避ける手段として使用   ライブラリ要素間の衝突。

     

すべてのプログラミングが   言語では大文字と小文字が区別されます。彼らです   ありません。名前は大文字と小文字を区別できません   単独。

コード内のタイプを区別するのに役立ちます。

Javaの例: 大文字で始まる場合は、おそらくクラスです。 そのALL_CAPSがおそらく定数である場合。

より多くの汎用性を提供します。

よりプロフェッショナルなコーディング方法のように感じます。コンパイラがあなたの意図を理解する必要はないはずです。

私はずっと前にVB3 / 4をもっと使ったときと同じように感じました。現在、私は主にC#で作業しています。しかし今では、IDEがシンボルを見つけ、さまざまなケースで優れたインテリセンスを与えるという素晴らしい仕事をしていることに気付きました。また、さまざまなケースのアイテムに異なる意味を持たせることができるため、自分のコードの柔軟性が向上しました。

ファイル名の参照で大文字と小文字が区別されるLinuxで作業している場合も、良い習慣です。 Linuxで動作するようにWindows ColdFusionアプリケーションを移植する必要があり、それはまったくの悪夢でした。また、一部のデータベースでは大文字と小文字の区別が有効になっています。そこにある喜びを想像してください。

プラットフォームに関係なく、それは良い習慣であり、確かにより一貫した開発スタイルにつながります。

私見ですが、それは完全に習慣の問題です。あなたが慣れているものはどちらでも、自然で正しいように思えるでしょう。

なぜそれが良いのか悪いのかについては、たくさんの正当化を思いつくことができますが、どれもあまり有力ではありません。例えば:

  • より多くの可能な識別子が得られます。 fooFooFOO.
  • ただし、大文字と小文字だけが異なる識別子を持つのは良い考えではありません
  • type-in​​fo を名前にエンコードできます (例: FooBar=タイプ名、 fooBar=関数、 foo_bar=変数、 FOO_BAR=マクロ)
  • しかし、ハンガリー語表記でもそれを行うことができます

それは自然言語の仕組みでもあるからです。

プログラミングでは、大文字と小文字を区別するために何か言いたいことがあります。たとえば、パブリックプロパティFooとそれに対応するprivate / protectedフィールドfooがあります。 IntelliSenseを使用すると、ミスをしないことはそれほど難しくありません。

ただし、OSでは、大文字と小文字の区別はおかしくなります。同じディレクトリにFoo foo fOOのファイルを作成したくありません。これは私が* nixのことをしているたびに私を怒らせます。

大文字と小文字の区別は、引数のthisValueやパブリックプロパティまたはパブリック関数のThisValueのようなスコープの単なる遊びです。

同じ変数名を(同じものを表すために)異なるスコープで使用する必要が頻繁にあり、大文字と小文字の区別により、プレフィックスを使用せずにこれを行うことができます。

うーん、少なくともハンガリー語の表記はもう使用していません。

従来のVBScript ASPコードで長年作業した後、.NETに移行したときにC#を選択しましたが、主な理由の1つは大文字と小文字の区別でした。人々は慣習に従わなかったため、古いコードは読めませんでした:コードは読めない混乱でした(まあ、貧弱なVBScript IDEがそれを助けました)。

C#では、命名規則を定義でき、誰もがそれに従う必要があります。大文字と小文字が正しくない場合は、リファクタリングを使用して名前を変更できますが(これはIDEの機能です)、クラスまたは変数の名前はコード全体で同じように指定されるため、問題はありません。

最後に、すべてが正しく大文字と小文字になっていると読みやすくなります。大文字と小文字を区別せずに書く方が速いかもしれませんが、コードをレビューして維持することは、何かを探しているコードをスキップする方が簡単なので、最良のものではありません。たとえば、「foo」、「Foo」、「FOO」、「FOo」を検索するよりも、一目ですべての「foo」文字列を見つける方が簡単です...

大文字と小文字を区別しない言語は、非ASCII文字セットに簡単に一般化できません。英語以外の言語の大文字小文字の適切な変換は簡単な作業ではなく、システムロケールなどに依存します。

大文字と小文字を区別しないのは、構文をasciiに制限しない限り(または大文字と小文字の区別をASCII文字のみに適用する場合)、ロケールを制限する必要がない限り、非常に困難です。

文字の大文字と小文字を決定する規則は、明確に定義されておらず、無損失でもありません。

一部の文字は、複数の「小文字」形式を持つことができます。一部の人々は、正しい大文字の形式がどうあるべきかについて意見が分かれます。

(一部の言語および環境では、ほとんどの文字を名前に使用できます)

考慮 C#では違いは何ですかToUpper()とToUpperInvariant()の間?

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top