89

最近でも、Java の変数やメソッドでアンダースコアをよく見かけます。たとえば、メンバー変数 ("m_count" や "_count" など) です。私が覚えている限りでは、これらの場合にアンダースコアを使用することは、Sun では不適切なスタイルと呼ばれています。

定数はキャメルケースではなくすべて大文字にする必要があるため、それらを使用する必要がある唯一の場所は定数です (「public final static int IS_OKAY = 1;」など)。ここでは、アンダースコアによってコードが読みやすくなっています。

Java でアンダースコアを使用するのは悪いスタイルだと思いますか? もしそうなら(またはそうでない場合)、なぜですか?

4

15 に答える 15

149

現在それを使用しているコードがない場合は、それを続けることをお勧めします。コードベースで使用している場合は、それを続けてください。

コーディング スタイルの最大の特徴は一貫性です。一致するものが何もない場合は、言語ベンダーの推奨事項から始めるのがよいでしょう。

于 2008-09-29T19:17:43.573 に答える
125
sunDoesNotRecommendUnderscoresBecauseJavaVariableAndFunctionNamesTendToBeLongEnoughAsItIs();

as_others_have_said_consistency_is_the_important_thing_here_so_chose_whatever_you_think_is_more_readable();
于 2008-09-29T19:41:39.693 に答える
37

ルール:

  1. 編集中のコードの動作を実行する
  2. #1 が当てはまらない場合は、キャメルケースを使用し、アンダースコアは使用しないでください
于 2008-09-29T19:19:46.547 に答える
33

_ や m_ を使用してメンバー変数を示すことは、Java やその他の言語では悪いことではないと思います。私の意見では、スニペットを見て、ローカルからすべてのメンバー変数をすばやく識別できるため、コードの読みやすさが向上します。

ユーザーにインスタンス変数の先頭に「this」を追加するように強制することによってもこれを実現できますが、私はこれが少し厳しいと思います。これはインスタンス変数であるため、多くの点で DRY に違反しています。

私の個人的なスタイルは、_ の代わりに m_ を使用することです。その理由は、グローバル変数と静的変数もあるからです。m_/_ の利点は、変数のスコープを区別できることです。したがって、グローバルまたは静的に _ を再利用することはできません。代わりに、それぞれ g_ と s_ を選択します。

于 2008-09-29T23:05:35.913 に答える
7

「悪いスタイル」は非常に主観的なものです。特定の慣例があなたとあなたのチームにとって機能する場合、それは悪いスタイル/良いスタイルに分類されると思います.

あなたの質問に答えるには: 先頭のアンダースコアを使用して、プライベート変数をマークします。私はそれが明確であり、コードをすばやくスキャンして何が起こっているのかを知ることができます.

(ただし、名前の衝突を防ぐ場合を除いて、「this」を使用することはほとんどありません。)

于 2008-09-29T19:21:25.997 に答える
6

変数の前に「m_」または「_」を使用すると、オブジェクト全体のメソッドでメンバー変数を見つけやすくなります。

副次的な利点として、「m_」または「_」と入力すると、Intelsense がそれらを最初にポップアップ表示します ;)

于 2008-09-29T19:18:35.350 に答える
5
  • 私は(プライベート)インスタンス変数の先頭にアンダースコアを付けるのが好きです。読みやすく、区別しやすいようです。命名規則に違反していることは間違いありません。
  • private int _my_int; public int myInt;? _my_int? )

-これの_styleが好きで、読みやすいと思う限り、それは珍しいことであり、使用しているコードベースの他のものと一致しない可能性が高いため、間違いなく価値があるよりも問題が多いことがわかります。

- 自動化されたコード生成 (例: Eclipse のゲッター、セッターの生成) はこれを理解できない可能性が高いため、手動で修正するか、認識できるように Eclipse をいじる必要があります。

最終的には、残りの (Java) 世界の設定に反対することになり、そこから何らかの迷惑がかかる可能性があります。また、以前の投稿者が述べたように、コードベースの一貫性は上記の問題すべてに勝ります。

于 2008-09-29T20:25:41.240 に答える
5

昔、下線を使うのが悪いスタイルだと考えられていたのには理由があります。ランタイム コンパイラが手頃な価格ではなく、モニターの解像度が 320x240 という驚異的な解像度を備えていたとき、_name__name.

于 2012-07-09T13:35:42.037 に答える
5

Java に関する Sun の推奨事項へのリンクを次に示します。これらを使用しなければならないというわけではなく、それらのライブラリ コードがそれらすべてに従っているということでもありませんが、ゼロから始める場合は良いスタートです。Eclipse のようなツールには、これらの規則 (またはユーザーが定義する他の規則) に準拠するのに役立つフォーマッターとクリーンアップ ツールが組み込まれています。

私にとって、「_」は入力するのが難しすぎます:)

于 2008-09-29T19:55:07.040 に答える
4

プライベート変数とパブリック変数を区別するものがあると便利ですが、一般的なコーディングでは「_」は好きではありません。新しいコードでそれを助けることができるなら、私はそれらの使用を避けます.

于 2008-09-29T20:06:32.317 に答える
3

これは、コーディング スタイルのブレンドです。考え方の 1 つは、プライベート メンバーの前にアンダースコアを付けて区別することです。

setBar( int bar)
{
   _bar = bar;
}

それ以外の

setBar( int bar)
{
   this.bar = bar;
}

他の人はアンダースコアを使用して、メソッド呼び出しの最後にスコープ外になる一時ローカル変数を示します。(私はこれはかなり役に立たないと思います - 良い方法はそれほど長くあるべきではありません.宣言は正しいです!だから私はそれが範囲外になることを知っています) ! それは地獄でしょう。

生成されたコードは、変数の先頭に _ または __ を付ける場合があります。人間がこれを行うことは決してないという考えなので、安全です。

于 2008-09-29T19:20:35.780 に答える
2

(私の経験では)人々がそれを行う理由は、メンバー変数と関数パラメーターを区別するためです。Javaでは、次のようなクラスを持つことができます。

public class TestClass {
  int var1;

  public void func1(int var1) {
     System.out.println("Which one is it?: " + var1);
  }
}

メンバー変数を_var1またはm_var1にした場合、関数にあいまいさはありません。

だからそれスタイルであり、私はそれを悪いとは言いません。

于 2008-09-29T19:34:11.380 に答える
2

言語独自のスタイル ガイドラインを (正当な理由なく) 破るスタイルは醜く、したがって「悪い」と思います。

あなたが見たコードは、アンダースコアが許容される言語で働いていた人によって書かれたものであることは間違いありません.

新しいコーディングスタイルに適応できない人もいます...

于 2008-09-29T19:20:51.553 に答える
1

個人的には、言語はコーディング スタイルに関する規則を作るべきではないと思います。それは、好み、使用法、利便性、読みやすさに関する概念の問題です。
現在、プロジェクトは、リスト全体で一貫性を保つために、コーディング ルールを設定する必要があります。あなたはこれらのルールに同意しないかもしれませんが、貢献したい (またはチームで働きたい) 場合は、それらに固執する必要があります。

少なくとも、Eclispe のような IDE は不可知論的であり、変数の接頭辞や接尾辞、中括弧の配置やスペース管理のさまざまなスタイルなどのルールを設定できます。したがって、それを使用して、ガイドラインに沿ってコードを再フォーマットできます。

注: 私は、C/C++ からの古い習慣を維持し、メンバー変数に m_ プレフィックス (および静的変数には s_) を付けて Java をコーディングし、ブール値の先頭に b をプレフィックスとして付け、関数名の最初の大文字を使用し、中括弧を揃えている人々の 1 人です。 .. Java原理主義者にとっての恐怖!;-)
おかしなことに、私が働いているところでは、それが慣例になっています... おそらく、メインの最初の開発者が MFC の世界から来たからでしょう! :-D

于 2008-09-29T19:54:12.347 に答える
0

それはあなた自身のスタイルであり、悪いスタイルのコードではなく、良いスタイルのコードでもありません。私たちのコードを他のコードと区別するだけです。

于 2008-11-17T03:21:47.777 に答える