Android命名约定

时间:2012-10-13 06:19:58

标签: android naming-conventions

我正在寻找一个彻底的Android命名约定建议。 我在这里发现了一点:

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

说:

  • 非公开的非静态字段名称以m。
  • 开头
  • 静态字段名称以s开头。
  • 其他字段以小写字母开头。
  • 公共静态最终字段(常量)为ALL_CAPS_WITH_UNDERSCORES

然而,我正在寻找更广泛的内容涵盖Android的所有方面:

  • 如何在其中命名布局和视图
  • 如何命名菜单
  • 如何命名样式
  • 如何在
  • 中命名数据库表(单数,复数)和字段

如果有一些普遍接受的建议我会喜欢这样做。所有SDK似乎都采用自己的方式,所以我对Android的方式特别感兴趣。

7 个答案:

答案 0 :(得分:74)

ribot's Android Guidelines是标准命名约定的一个很好的例子:

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 btn 之类的前缀或短名称 例如,登录活动组件的名称应如下所示。

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

答案 1 :(得分:18)

这是一系列优秀的最佳实践: https://github.com/futurice/android-best-practices

这是我使用的。我也会从该链接中复制。

对象命名

  • 根据Google指南,请勿使用ms前缀。我已经停了多年,没有他们我觉得更容易。 IDE将告诉您何时使用私有或静态的东西;这似乎是一个过时的惯例。
  • CONSTANTS以大写字母开头
  • 缩略语只应将第一个字母大写。例如,functionUrlunitId。不是unitID
  • 具有对象类型的前缀。例如,包含名称的TextView将为tvName。带有密码的EditView将为etPass
  • 如果某项活动通常只在活动中使用过一次(例如ListView),请不要只是称它为lv
  • 如果它不是对象类型,只需按其功能命名即可。例如,如果它是包含ID的字符串,则将其命名为id,而不是stringId。 IDE会告诉您它何时是字符串,浮点数或长字符。
  • 保持清晰。使用Pass而不是Password之类的内容。
  • 在XML中,名称应该是下划线,没有大写字母,例如tv_nameet_pass
  • android:id作为XML中的第一个属性。

文件命名

  • 具有类型的前缀布局。例如。 fragment_contact_details.xmlview_primary_button.xmlactivity_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

  • 如果要设置特定于按钮颜色或填充的内容,请使用样式文件。

的strings.xml

  • 使用类似名称空间的键命名字符串,并且不要害怕重复两个或更多键的值。

  • 使用error.message.network,而不是network_error

推理

命名约定的目的is not to make everything neat and consistent。它标志着可能出现的错误并改善了工作流程。其中大多数都是为方便键盘快捷键而设计的。尽量集中精力减少错误并改善工作流程,而不是看起来不错。

前缀非常适合那些人,&#34; TextView的名称是什么?&#34;时刻。

对于您不经常以这种方式访问​​的内容,有后缀,但可能会令人困惑。例如,我可能不确定是否将我的代码放在该页面的Activity,Fragment或Adapter中。如果你愿意,可以放弃它们。

XML ID通常是小写的,并且使用下划线只是因为每个人似乎都是这样做的。

答案 2 :(得分:10)

<强>一致性
每个人(除非团队合作)都有自己的约定,你选择哪一个并不重要。确保在整个应用程序中一致非常重要。


结构
就个人而言,我使用这样的命名约定,因为它从类名运行到组件并且在整个xml中是一致的:

  • CLASS <ClassName>
  • ACTIVITY <ClassName>**Activity**
  • 布局classname_activity
  • COMPONENT IDS classname_activity_component_name

此示例包括OrderActivity.classorder_activity.xmlorder_activity_bn_cancel。请注意,所有XML都是小写的。


缩减布局
如果您想使用较短的名称来保持代码更整洁;那么另一种方法可以是缩写 ALL XML中的名称以及布局。

此示例包括 OrderActivity .class: ord_act .xml, ord_act _bt_can, ord_act _ti_nam , ord_act _tv_nam。我把名字分成三个,但这取决于你有多少相似的名字


缩减组件类型
缩写组件类型时,尽量保持这些一致性。我通常使用两个字母作为组件类型,使用三个字母作为名称。但是,如果这是布局中该类型的唯一元素,有时名称将不再必要。 ID的原则是唯一的

  • COMPONENT IDS nam_act_component_nam

组件类型缩写 (此列表显示两个字母很多)
框架布局: fl
线性布局: ll
表格布局: tl
表格行 tr
网格布局: gl
相对布局: rl

文字观点:电视
按钮: bt
复选框: cb
切换: sw
切换按钮: tb
图片按钮: ib
图片视图 iv 进度条: pb
寻求酒吧: sb
评分栏: rb
Spinner: sp
WebView: wv
修改文字:

广播组: rg
列表视图: lv
网格视图: gv
展开式列表视图 el 滚动视图: sv
水平滚动视图: hs
搜索视图:* se
标签主持人: 视频观看:vv
拨号过滤器: df

包括: ic
片段: fr
自定义视图(其他): cv

答案 3 :(得分:8)

我认为还没有这方面的惯例。每家公司都有自己的规则,我认为这里没有人关心它。

对我来说,我更喜欢将名称绑定到上下文。例如,如果存在名为“MainActivity”的活动,则其布局名称将为“main_activity.xml”,并且对于与此活动关联的每个资源,我添加前缀“main_activity”,以便我知道它使用它。用于此活动的ID也是如此。

我使用这些命名的原因是它更容易找到它们,如果需要可以删除,如果你使用安卓库你就不会用别人替换它们,因为名字很独特。

我也尽可能地尝试给出有意义的名字,所以你通常不会将“listView”或“imageView2”视为ids,而是像“contactsListView”和“contactImageView”。相同的名称(或类似名称)也会匹配java代码中的变量,以便于查找。

因此,简而言之,我的提示是:

  • 尽量避免名字中的数字。它们通常没有多大意义,并表明你只是为UI设计师使用了拖放功能。

  • 对于演示,POC和此处的问题,请不要担心命名。

  • 尝试为所有资源名称(包括ID)添加前缀,以显示它们属于哪个上下文,并实现唯一性。

  • 尽可能提供有意义的名称。

答案 4 :(得分:1)

每个人都使用自己的,主要目标是避免错误和误解,特别是当其他人阅读你的代码时。虽然现代IDE中的语法突出显示和自动代码检查使其更加轻松。

但是这些命名约定也使得在打开代码完成时非常方便。例如,只需输入m,自动完成就会显示一个类字段列表。

但很多时候你必须使用其他代码,而不使用这种约定。这样的受保护变量和重写的方法参数只会增加混乱。

几个例子:

  • 使用m前缀类变量,并使静态韵母变量全部大写,_分隔单词。不要将任何东西作为较低范围变量的前缀。

  • UI父级后的名称布局,例如act_main.xmlfrg_detail.xmlitm__act_main__list1.xml;对于活动MainActivity,片段DetailFragmentListViewMainActivity的项目布局,分别为list1

  • xml布局中的名称元素Id,例如:lsv__act_main__list1用于ListView,btn__act_main__submit用于“Button元素”。这使得使用自动完成功能更容易找到它们。

答案 5 :(得分:0)

最新的Android Eclipse插件会创建一些您在创建新项目时自动提到的文件。从那以后,命名是这样的:

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

我遵循这个方案,例如

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

所以它就像包名,从一般到详细。它还允许整齐排序。

答案 6 :(得分:0)

关于命名约定和/或最佳实践,我经常遵循github中this md file存储库中的ribot/android-guidelines,其中列出了项目和编码指南。