我正在寻找一个彻底的Android命名约定建议。 我在这里发现了一点:
http://source.android.com/source/code-style.html#follow-field-naming-conventions
说:
ALL_CAPS_WITH_UNDERSCORES
。然而,我正在寻找更广泛的内容涵盖Android的所有方面:
如果有一些普遍接受的建议我会喜欢这样做。所有SDK似乎都采用自己的方式,所以我对Android的方式特别感兴趣。
答案 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
这是我使用的。我也会从该链接中复制。
m
或s
前缀。我已经停了多年,没有他们我觉得更容易。 IDE将告诉您何时使用私有或静态的东西;这似乎是一个过时的惯例。functionUrl
和unitId
。不是unitID
。tvName
。带有密码的EditView将为etPass
。lv
。id
,而不是stringId。 IDE会告诉您它何时是字符串,浮点数或长字符。Pass
而不是Password
之类的内容。 tv_name
和et_pass
android:id
作为XML中的第一个属性。fragment_contact_details.xml
,view_primary_button.xml
,activity_main.xml
。/activities/MainActivity.java
或/fragments/DeleteDialog.java
。我的文件夹是活动,片段,适配器,模型,和 utils 。ChatListAdapter
。对于颜色,请使用gray_light
之类的名称,而不是button_foreground
。
对于尺寸,请使用spacing_large
之类的名称,而不是button_upper_padding
。
如果要设置特定于按钮颜色或填充的内容,请使用样式文件。
使用类似名称空间的键命名字符串,并且不要害怕重复两个或更多键的值。
使用error.message.network
,而不是network_error
。
命名约定的目的is not to make everything neat and consistent。它标志着可能出现的错误并改善了工作流程。其中大多数都是为方便键盘快捷键而设计的。尽量集中精力减少错误并改善工作流程,而不是看起来不错。
前缀非常适合那些人,&#34; TextView的名称是什么?&#34;时刻。
对于您不经常以这种方式访问的内容,有后缀,但可能会令人困惑。例如,我可能不确定是否将我的代码放在该页面的Activity,Fragment或Adapter中。如果你愿意,可以放弃它们。
XML ID通常是小写的,并且使用下划线只是因为每个人似乎都是这样做的。
答案 2 :(得分:10)
<强>一致性强>
每个人(除非团队合作)都有自己的约定,你选择哪一个并不重要。确保在整个应用程序中一致非常重要。
的结构强>
就个人而言,我使用这样的命名约定,因为它从类名运行到组件并且在整个xml中是一致的:
<ClassName>
<ClassName>**Activity**
classname_activity
classname_activity_component_name
此示例包括OrderActivity.class
,order_activity.xml
,order_activity_bn_cancel
。请注意,所有XML都是小写的。
缩减布局
如果您想使用较短的名称来保持代码更整洁;那么另一种方法可以是缩写 ALL XML中的名称以及布局。
此示例包括 OrderActivity .class: ord_act .xml, ord_act _bt_can, ord_act _ti_nam , ord_act _tv_nam。我把名字分成三个,但这取决于你有多少相似的名字
缩减组件类型
缩写组件类型时,尽量保持这些一致性。我通常使用两个字母作为组件类型,使用三个字母作为名称。但是,如果这是布局中该类型的唯一元素,有时名称将不再必要。 ID的原则是唯一的
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.xml
,frg_detail.xml
,itm__act_main__list1.xml
;对于活动MainActivity
,片段DetailFragment
,ListView
中MainActivity
的项目布局,分别为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,其中列出了项目和编码指南。