多くのコードがのような宣言を持っているのを見てきましたClass clazz
。これはある種の慣習ですか?「clazz」は英語の単語でもなく、まったく意味がないと思います。多くのプログラマーが誤って間違った名前を付けてしまうのはなぜでしょうか。
多くのコードがのような宣言を持っているのを見てきましたClass clazz
。これはある種の慣習ですか?「clazz」は英語の単語でもなく、まったく意味がないと思います。多くのプログラマーが誤って間違った名前を付けてしまうのはなぜでしょうか。
回答:
clazz
JDK 1.0以降、Javaでは予約語「クラス」の代わりに使用されています。「クラス」は必要なものですが、ジャンク(「a」、「the」、「_」など)を省略または挿入すると、明瞭さが低下します。clazz
クラスを言うだけです。「国際」英語話者(イギリス英語とアメリカ英語の両方を読む人)は、「s」と「z」の転置に使用されます。
Javaは最初からソースと適切な文化を開示してきたので、価値のあるJavaコードとチュートリアルは同じ規則を採用しています。これは、Javaエコシステムの優れた点の1つであり、Javaエコシステムの成功の重要な部分を占めていると思います。
Foo
クラスのスコープで定義されたとfoo
ローカル変数のスコープで法的にする必要がありますが、ローカルの範囲内でクラススコープの変数へのすべての参照を要求すべきですthis.Foo
。そのようなルールは...
someThing
、一部の場所で識別子のスペルを許可する実際の理由はありません。sOmEtHiNg
他では。
fnord
フィールドfnord
を使用して、問題、大文字、または意味のない単語を取得します。それは反例として十分だと思います。
彼らは彼らが使いたい言葉を使うことができないからですclass
。予約されています。
これは、単に「クラス」が予約済みのキーワードであるためにClass class
許可されていないためです。したがって、Class clazz
またはが表示されますClass cls
。
Class
与えられたプロジェクトには非常に多くのクラスがあり、クラスを呼び出すことは無意味に思えるので、クラスに名前を付ける理由は考えられません。また、VARIABLEを呼び出す理由も考えられませんclass
...
ClassInformation
、またはClassMetadata
類似の何かを検討します。すべてのクラスはクラスですが、すべてClass
に名前を付けるのではなく、メイン関数によって名前を付けます。
それは、実際のコンパイラーと、そのコンテキスト内でトークンが何を意味するかを区別する能力にかかっています。ただし、この特定のケースでは、異なるコンテキストでトークンが何を意味するのかを区別できないのはコンパイラclass
です。これは、class
そのコンテキストに関係なく、クラスの宣言を示すために使用されるので、予約語であるため、厳格な規則です。それは非常に単純で低レベルです。
やむを得ない場合は、独自のJavaコンパイラを記述してclass
、変数名として使用できるコンテキストルールを含めることができます。けれども私はそれだけで使用するために時間をはるかに良い使用になると思いますclazz
かklass
-それはおそらく同様にあなたの健康のために良いでしょう。
Javaには、C#の@
接頭辞とは異なり(たとえば@class
、有効な識別子)、キーワードを識別子として使用できる機能はありません。
class
および$class
は、JVMで有効な(ただし異なる)識別子です。"class"
VM で変換されるJavaソースファイルに記述できる識別子はありません。
簡単に言えば、そうclass
でclazz
はないクラスがあります。