2011-01-22 4 views
5

Swingを使ってJavaでプログラミングするときに覚えられた質問は、Swingコンポーネントの推奨または「公式」/最もよく使われる命名規則(接頭辞)ですか?Java Swingコンポーネントの名前規約(接頭辞)

このような(他は他の命名規則を好む場合であっても、これは私が現在使用しているものです)として:JButtonの

  • ためのJLabel
  • PNLのためLBLのためのBTN JTextFieldの
  • ため

    • TXT JPanel

    しかし、私のリストは終わりです。

    私はそのような接頭辞は私のコードの可読性を高めると思いますが、JComboBox、JList、JRadioButton、JCheckButtonなどのコンポーネントの名前はありません。

    ありがとうございます。

  • +0

    Swingの「公式」命名規則はありません。 –

    +0

    ハンガリーの表記のような臭い –

    答えて

    18

    接頭辞を使用することは悪いことです。ハンガリー表記であり、今日では、ハンガリー表記はプログラミングでは大きなノー・ノーとみなされるためです。個人的には、ある程度のGUI作業を行った人として、私はあなたに言うことができますが、ハンガリーの表記法はGUI以外のプログラミングでは絶対に避けてください。

    たとえば、ユーザー名の入力に使用するテキストボックスを持つ単純なフォームを考えてみましょう。このテキストボックスの前には、ユーザーにテキストボックスに名前を入力するように促すラベルを付ける必要があります。さて、あなたはどのようにテキストボックスに名前をつけますか? '名'?ラベルはどうですか? テキストボックスの先頭にtxtを付け、ラベルにlabelというラベルを付けることをお勧めします。これはハンガリー表記のすべてです。したがって、テキストボックスの名前は「txtName」になり、対応するラベルの名前は「lblName」になります。これにより、IDEのエディターでテキストボックス、コンボボックス、その他のウィジェットに簡単にアクセスできるというメリットがあります。たとえば、「txt」と入力し、EclipseでCTRL + Spaceを押すと、この表記法に従うと、すべてのテキストボックスをリストアップしたコンテキストメニューが開きます。

    あなたの質問にお答えします。プレフィックスに使用する3文字を定義する通常の方法は、すべての母音をウィジェットの名前から削除し、すべての子音を削除することです。 3つ以上の子音が残っている場合は無視する必要があります。したがって、テキストボックス(またはTextField、またはウィジェットがあなたの好みのウィジェットツールキットで呼び出されているもの)は、 'txt'、ラベル 'lbl'、コンボボックス 'cmb'、テーブル 'tbl'などになります。

    +0

    JCheckButtonに "chc"を使用しますか?私はおそらく "chb"を好むだろうから頼んでいる、そうでなければ私はそれが何を意味するかを決して知りません。私が考えることができる他のコンポーネントについては、正常に動作するはずです。 – maaartinus

    +0

    私は同意する必要があります。 Guiコンポーネントは、私からbtn_XXX、pnl_XXX、chk_XXXの治療を受ける唯一の変数です。 1つは、GUI varsを状態/データ変数から視覚的に分離するのに役立ちます。しかし、...ダフィーが言及した理由から、私はそれをやって少し汚いと感じます。 –

    +0

    私は主観的な質問に対する意見の回答を誰かが棄却する理由がわかりません。 –

    7

    ハンガリーの表記が苦手なので、私はいつもこのようなことを嫌います。タイプを変更すると、すべての変数名を変更する必要がないので、変数の名前にタイプを埋め込むという考えは嫌いです。

    しかし、スイングの場合、私はそれが受け入れられると思います。

    良いIDEはあなたのための変数名を生成します。なぜそれを聞かせてください?あなたが主張している場合は、そのタイプを記入してください(例:btnSubmitの代わりにsubmitButton)。キーストロークは安いです。

    +0

    ええ、あなたは私と一緒に取る良い点を持っています、ありがとう! – LuckyLuke

    4

    理由だけではなく、JTextFieldのtextField、JButtonのbutton、JLabelのlabel、とのJPanel panelを呼び出しません。変数を英語の単語のように読むためにいくつかの余分な文字を費やすことはとても悪いですか?

    また、変数名に型を入れると、最後に置いています。したがって、名前を表示するJLabelはnameLabelです(IMOはlblNameよりも読みやすくなります)。

    さらに、duffymoのアドバイスに従って、型を変数名に入れるのは悪い習慣です。より良いアプローチは、変数が何であるかを記述することです。名前ラベルの場合は、名前を表示するUIコンポーネントです。したがって、より良い名前はnameComponentです。 nameComponentがJLabelまたはその他の型であるという事実は、二次的であり、変数名を乱雑にするべきではありません。

    +0

    接尾辞を使用する方が接尾辞を使用するよりも(接尾辞を使用する方がよい)、なぜ私のanserを参照してください。 – Sandman

    +1

    @Sandmanあなたはあなたの答えに接尾辞について何も言わなかった。あなたが指摘していることは、接頭辞を使用する方が、それをまったく使用しない方が良いということです。しかし、私は接尾辞についても同じことが言える。例: 'nameTextField'と' nameLabel'です。 –

    +0

    @Andrew確かに、接尾辞を使うことができます。しかし、私の答えの2番目の段落の最後の2つの文章を読んで、接尾辞の上に接頭辞を使う利点を説明してください。 – Sandman

    関連する問題