7

大文字と小文字を区別するための本当に良いケース ( :-) ) を作成できる人はいますか?

C#: 大文字と小文字を区別します VB.NET: 大文字と小文字を区別しませんC++: 大文字と小文字を区別します ...

さらに悪いことに、VB.NET などの言語内で使用される XML大文字と小文字が区別されます。

私は、XML には値ノードと値ノードの両方があるという事実のために、システムにバグが見つかった後にのみ害を及ぼす可能性があり、それはばかげていると主張していまし...

コメントで何度も聞かれる

「このような世界で大文字と小文字を区別しないことが正しい選択である理由について、1 つの議論を思い付くことができるでしょうか?」

以下に例を示します: URL は大文字と小文字を区別する必要がありますか? の問題に似ていると思います。www.cnn.com <> www.cNN.com ? もちろん同じはずです、ID盗難天国!人間は、同じでも大文字と小文字が異なる可能性がある 2 つの文字列にあまり注意を払わないためです。プログラマーは人間です。したがって、getAge() と getage() は、ほとんどの人間の頭の中では同じです。


注意してください: コードに実際に getAget() として定義された関数があり、それを getage() を呼び出すコードが必要だとは思いません。VS (vb.net) は getaget を getAge に自動的に修正します。そのため、コードは明確で、プログラマーは大文字と小文字の区別が正しいことを認識しています。私のポイントは、良いIDEは問題を無関係にしますが、vb.netのような大文字と小文字を区別しない言語ではうまく機能し、c#と言います。参考:こちら

4

7 に答える 7

11

ケースルールは文化によって異なります。変数が呼び出されたものと同じであると見なされることあれば、異なる変数であることがあるプログラミング言語が必要ですか?(これは作り上げの例ではありません。ところで、トルコ語では大文字ではありませんiIIi

正直なところ、それはかなり簡単です。タイプミスをしたときにコンパイラーに訂正してもらいたいですか、それともあなたが何を意味しているのかを推測させたいですか?あなたが知っているように、後者はバグにつながります。VBは、「ああ、あなたはおそらく同じことを意味している、それは大丈夫だ、私たちはあなたを止めない」と想定し、XMLは文字通りあなたを連れて行った。

大文字と小文字の区別が悪いためにバグは発生しませんでした。ずさんなことが悪いために発生しました。ケースを任意に変更しても、せいぜい問題は発生せず、最悪の場合はエラーが発生します。最悪の事態を想定し、あなたのケースと一致してください。ちなみに、これは大文字と小文字を区別する言語があなたに強制することです。ツールで大文字と小文字が区別されるかどうかに関係なく、プログラマー大文字と小文字を区別する必要があります。大文字と小文字を区別することで、世界が大文字と小文字を区別しないツールと区別するツールを備えている限り、多くの問題を回避できます。すべてが大文字と小文字を区別しないように世界を作り直すことができれば、大文字と小文字を区別する理由の多くはなくなります。しかし、私たちはできません。

もちろん、ちょっとした注意点:多くの言語では、変数と型に同じ名前を付けるのが一般的ですが、大文字は異なります。

Foo foo; // declare a variable foo of type Foo

もちろん、「そうすべきではない」と主張することもできますが、それは便利であり、変数のタイプをすぐに読者に知らせます。これにより、Logクラスとログオブジェクトを作成できます。また、このオブジェクトの目的はログに記録することであるため、名前はわかりやすいものです。

そして考慮すべき最後のポイント:

大文字と小文字は実際の言語で重要です。大文字で始まる単語は同じ単語とは異なりますが、先頭に小文字が付きます。「worD」という単語は正しい英語ではありません。情報はケースにエンコードされているため、テキストが読みやすくなっています。たとえば、名前に出会ったときや、文が始まったときに教えてくれるので便利です。大文字と小文字の規則を無視できるようにすると、テキストが読みにくくなります。そして、コードは一般的に可能な限り読みやすいように書かれるべきなので、プログラミングで同じことをすべきではないのはなぜですか?ケースに重要な情報をエンコードさせます。多くの言語でFooは、はタイプであり、fooは変数です。それは重要な情報です。プログラムするときにこれを知りたいです。「Getage」という関数を見たら、今まで聞いたことがない英語の単語なのかしら。しかし、「GetAge」を見ると、「Get」の後に「Age」という単語が続くものとして読む必要があることがすぐにわかります。

ちなみに、大文字と小文字を区別する言語で遭遇する可能性のある楽しい驚きの良い例を次に示します

于 2009-05-21T22:17:20.987 に答える
4

プログラミング言語では、スロップは決して良い考えではありません。あなたは物事をできるだけ具体的にしたいと思っています。言語に何かを推測させたくないので、与えられた問題を解決する方法をできるだけ少なくする必要があります。

具体的な回答として、可読性はどうですか?視覚的には、stoRetroData は storeTRodAtA とはかなり異なりませんか? 誰もがそのようなことをするわけではありませんが、それを許可することに何の意味があるのでしょうか?

大文字と小文字を無視できる理由が思いつきません。

少なくともそれは私の意見ですが、走行距離は異なる場合があります。

編集:おそらく免責事項から始めるべきだったでしょう:

私は基本的にプログラミングを学び、約18年前にこれと同じ考えをつかの間持っていました. 私を信じてください、それはあなたが20年後に振り返って「ああ、そうです、私はそれについてかなり間違っていました」と言うようなことの1つです(私は今です)

于 2009-05-21T22:11:44.930 に答える
2

いくつかの理由。

  • 大文字と小文字を区別しないものを見つけるには、どこにでも「大文字と小文字を区別しない」フラグを付ける必要があります。クリンゴンの小さなケースにも注意する必要があるUTF-8を使用します。

  • さらに重要なのは、CamelCasing、CAMelcaSingです。きれいではありませんが、よく使われ、かなり正気です。大文字と小文字を区別しない場合、ほぼ不可能です。

  • 言語パリティ、たとえばxsd.exe(VS200xに付属)は、提供するxsdのクラスを生成できます。あなたが「価値」も持っているとき、あなたの「価値」は何と名付けられますか?したがって、これはさらに別の可能なインピーダンスを取り除きます。

于 2009-05-21T22:17:12.530 に答える
2
  1. 歴史それはそれが行われた方法です。XMLはVB.NETであり、XML標準では大文字と小文字が区別されます。
  2. 国際化すべての言語(フランス語、日本語、ヘブライ語、クリンゴン語など)でケースをサポートしますか?
于 2009-05-21T22:07:33.393 に答える
2

最近のいくつかの大文字と小文字を区別する言語は、それらが基づいていた言語が大文字と小文字を区別し、移行が容易になるため、そのようになっています。個人的には大文字と小文字を区別する方が好きですが、大文字と小文字を区別する必要がなくなった理由については、Jeff Atwood がかなり良い記事を書いています。

于 2009-05-21T22:10:32.933 に答える
1

Caseはプログラミング言語には適していますが、記号名で使用するのではなく、本来の意図どおりに使用する必要があります。つまり、文やコマンド、または固有名の先頭を区切るためです。例えば:

Var test = 0;
Console.writeline(test);
Test = test + 1;
Console.writeline(test);

とても美しい、...:P

于 2009-05-21T22:19:01.640 に答える
0

大文字と小文字を区別しないのはばかげていると思います。元の宣言の大文字化に従う必要があります。TheRealNameの代わりに入力するのが面倒である以外に、そうしない理由はわかりませんtherealname

実際、大文字と小文字を区別しない言語の使用を検討することすらありません。

于 2009-05-21T22:07:18.637 に答える