83

徹底的な Android 命名規則の提案を探しています。ここで少し見つけました:

http://source.android.com/source/code-style.html#follow-field-naming-conventions

それは言う:

  • 非公開、非静的フィールド名は m で始まります。
  • 静的フィールド名は s で始まります。
  • 他のフィールドは小文字で始まります。
  • public static final フィールド (定数) はALL_CAPS_WITH_UNDERSCORES.

それでも、Android のすべての側面をカバーする、より広範なものを探しています。

  • 内部のレイアウトとビューに名前を付ける方法、
  • メニュー名の付け方
  • スタイルの命名方法
  • データベース テーブル (単数形、複数形) とフィールドに名前を付ける方法

一般的に受け入れられている提案があれば、それに従いたいと思います。すべての SDK は独自の方法で進んでいるように見えるので、特に Android の方法に興味があります。

4

7 に答える 7

93

ribot の Android ガイドラインは、標準的な命名規則の良い例です。

XML ファイルの命名規則:

activity_<ACTIVITY NAME>.xml - for all activities
dialog_<DIALOG NAME>.xml - for all custom dialogs
row_<LIST_NAME>.xml - for custom row for listview
fragment_<FRAGMENT_NAME>.xml - for all fragments

xml ファイル内のコンポーネント/ウィジェットの命名規則:

Xアクティビティのすべてのコンポーネントは、アクティビティ名で始まる必要があります。たとえば、ログインアクティビティButton コンポーネントの名前は次のようになります。

activity_login_btn_login
activity_login_et_username
activity_login_et_password

主要コンポーネントの略称:

Button - btn
EditText - et
TextView - tv
ProgressBar - pb
Checkbox - chk
RadioButton - rb
ToggleButton - tb
Spinner - spn
Menu - mnu
ListView - lv
GalleryView - gv
LinearLayout -ll
RelativeLayout - rl
于 2015-01-07T11:40:56.033 に答える
34

これは、開始するための優れたベスト プラクティスのコレクションです: https://github.com/futurice/android-best-practices

これが私が使用するものです。私もそのリンクからコピーします。

オブジェクトの命名

  • Google のガイドラインに従って、mまたは接頭辞を使用しないでください。s私は何年もやめていましたが、それらがなくても簡単だと思います。プライベートまたは静的なものを使用しているときは、IDE が通知します。時代遅れの慣習のようです。
  • CONSTANTS は大文字で始まります
  • 頭字語は最初の文字のみを大文字にする必要があります。たとえば、functionUrlunitId. 違いunitIDます。
  • オブジェクトのタイプのプレフィックス。たとえば、名前を含む TextView は になりますtvName。パスワード付きの EditView はetPass.
  • 通常、アクティビティで 1 回だけ使用されるもの (ListView など) の場合は、恐れずにlv.
  • オブジェクト型でない場合は、その関数で名前を付けてください。たとえば、ID を保持する文字列の場合は、idstringId ではなく として名前を付けます。IDE は、文字列、浮動小数点数、または長整数のいずれであるかを通知します。
  • 判読できるようにしてください。Passの代わりに次のようなものを使用しPasswordます。
  • XML 内では、名前は大文字を使用せずにアンダースコアにする必要がありますtv_nameet_pass
  • をXMLandroid:idの最初の属性として配置します。

ファイルの命名

  • レイアウトのプレフィックスとしてタイプを指定します。例: fragment_contact_details.xml, view_primary_button.xml, activity_main.xml.
  • クラスについては、それらをフォルダーに分類しますが、サフィックスを使用します。たとえば、/activities/MainActivity.javaまたは/fragments/DeleteDialog.java. 私のフォルダーは、アクティビティ、フラグメント、アダプター、モデル、およびutilsです。
  • アダプターは、いつ、どのように使用されるかを示す必要があります。そのため、ChatActivity の ListView アダプターが呼び出される場合がありますChatListAdapter

パレットとしての colors.xml および dimens.xml

  • 色についてはgray_light、 ではなくのような名前を使用しますbutton_foreground

  • spacing_large寸法の場合、 ではなくのような名前を使用しますbutton_upper_padding

  • ボタンの色やパディングに特定のものを設定したい場合は、スタイル ファイルを使用します。

文字列.xml

  • 名前空間に似たキーを使用して文字列に名前を付けます。2 つ以上のキーに対して値を繰り返すことを恐れないでください。

  • error.message.networkではなく、使用してくださいnetwork_error

推論

命名規則の目的は、すべてを整然と一貫させることではありません。起こりうる間違いにフラグを立て、ワークフローを改善するためにあります。これらのほとんどは、キーボード ショートカットに便利なように設計されています。見栄えよりも、バグを最小限に抑え、ワークフローを改善することに集中してください。

プレフィックスは、「その TextView の名前は何ですか?」というような場合に最適です。瞬間。

接尾辞は、そのように頻繁にアクセスしないもののためにありますが、混乱を招く可能性があります. たとえば、自分のコードをそのページのアクティビティ、フラグメント、またはアダプターのどれに配置したかがわからない場合があります。必要に応じてドロップできます。

XML ID は多くの場合、小文字でアンダースコアを使用します。これは、誰もがこのようにしているように見えるからです。

于 2015-12-23T04:47:54.617 に答える
8

これについてはまだ慣例はないと思います。それぞれの会社には独自のルールがあり、ここでは誰も気にしないと思います。

私にとっては、名前をコンテキストにバインドすることを好みます。たとえば、「MainActivity」というアクティビティがある場合、そのレイアウト名は「main_activity.xml」になり、このアクティビティに関連付けられているリソースごとに、プレフィックス「main_activity」を追加して、それが使用されていることを確認します。このアクティビティに使用されるIDについても同じことが言えます。

私がこれらの名前を使用する理由は、それらを見つけ、必要に応じて削除する方が簡単であり、Androidライブラリを使用すると、名前が非常に一意であるため、他の名前に置き換えられないためです。

また、可能な限り意味のある名前を付けるようにしています。そのため、通常は「listView」や「imageView2」はIDとして表示されませんが、「contactsListView」や「contactImageView」のように表示されます。同じ名前(または類似の名前)も、見つけやすくするために、Javaコード内の変数と一致します。

つまり、簡単に言うと、私のヒントは次のとおりです。

  • 名前の中の数字は避けてください。通常、これらはあまり意味がなく、UIデザイナにドラッグアンドドロップのみを使用したことを示しています。

  • デモ、POC、およびここでの質問については、名前を気にする必要はありません。

  • リソースのすべての名前(IDを含む)にプレフィックスを追加して、リソースが属するコンテキストを示し、一意性を実現してください。

  • 可能な限り意味のある名前を付けてください。

于 2012-10-13T08:01:06.827 に答える
2

最新の Android Eclipse プラグインは、新しいプロジェクトを作成するときに、言及したファイルの一部を自動的に作成します。それから、ネーミングは次のようなものです。

layout/activity_main.xml
menu/activity_main.xml
...

私はこのスキームに従った

layout/fragment_a.xml
layout/fragment_b.xml
...

つまり、一般的なものから詳細なものまで、パッケージ名のようなものです。きれいな仕分けも可能です。

于 2012-10-13T08:13:44.253 に答える
1

誰もが独自のものを使用します。主な目標は、特に他の人があなたのコードを読んだときに、間違いや誤解を避けることです. ただし、構文の強調表示と、最新の IDE の自動コード検査により、ほとんど意味がなくなります。

しかし、これらの命名規則は、コード補完がオンになっている場合にも非常に便利です。たとえば、入力するだけmでオートコンプリートにより、クラス フィールドのリストが表示されます。

しかし、多くの場合、そのような規則を使用しない他のコードを使用する必要があります。このような保護された変数とオーバーライドされたメソッド パラメーターは、混乱を招くだけです。

いくつかの例:

  • クラス変数の前に m を付け、静的最終変数をすべて大文字にし、_単語を区切ります。スコープ変数を下げる前に何かを付けないでください。

  • act_main.xmlUI の親の後にレイアウトに名前frg_detail.xmlを付けますitm__act_main__list1.xml。activityMainActivityの場合は fragment 、 idのinDetailFragmentのアイテム レイアウトはそれぞれ。ListViewMainActivitylist1

  • lsv__act_main__list1ListView やbtn__act_main__submitButton 要素などの xml レイアウトで要素 ID に名前を付けます。これにより、オートコンプリートで見つけやすくなります。

于 2012-10-13T08:25:46.287 に答える
1

As to naming conventions and/or best practices, I often follow this md file of ribot/android-guidelines repository in github that has project and coding guidelines enlisted in it.

于 2020-09-08T03:18:01.677 に答える