Android命名约定

dor*_*uck 70 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的方式特别感兴趣.

Pra*_*ale 78

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
Run Code Online (Sandbox Code Playgroud)

xml文件中组件/窗口小部件的命名约定:

X活动的所有组件必须以活动名称开头,所有组件都应具有前缀或短名称,例如btn for Button 例如,登录活动组件的名称应如下所示.

activity_login_btn_login
activity_login_et_username
activity_login_et_password
Run Code Online (Sandbox Code Playgroud)

主要组件的简称:

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
Run Code Online (Sandbox Code Playgroud)

  • 并不是真的会这样做..只要你(或你所有的公司)adpot 1风格谁关心它来自哪里.到目前为止,我做了4个或多或少简单的Android应用程序,我做了几乎与此相同的约定.我认为这就是你所需要的.我使用'a_'而不是'活动'等等,因为它太长了哈哈 (6认同)
  • MainActivity + activity_main?我知道这是标准,但废话是谁发明了这个?大部分都是无关紧要的,特别是当碎片到位时,名称变长的原因. (5认同)
  • 这并不是真正必要的,但是当您的项目不断增长时,这将非常有帮助 (2认同)

Muz*_*Muz 21

这是一个优秀的最佳实践集合: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.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.

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

strings.xml中

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

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

推理

命名约定的目的不是使一切都整洁和一致.它可以标记可能的错误并改善工作流程.其中大多数都是为方便键盘快捷键而设计的.尽量集中精力减少错误并改善工作流程,而不是看起来不错.

前缀非常适合那些人,"TextView的名称是什么?" 时刻.

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

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

  • 我正在使用m和s前缀.我发现它非常有用,并且肯定它不会使代码变得更糟.此外,有时我更喜欢在没有IDE的情况下打开一些文件.区分字段和简单变量非常容易. (4认同)

Jet*_*hro 11

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


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

  • 类别:<ClassName>
  • 活动:<ClassName>**Activity**
  • 布局:classname_activity
  • 组件IDS:classname_activity_component_name

这方面的一个例子是OrderActivity.class,order_activity.xml,order_activity_bn_cancel.请注意,所有XML都是小写的.


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

这方面的一个例子是OrderActivity .class:ord_act .xml,ord_act _bt_can,ord_act _ti_nam,ord_act _tv_nam.我把名字分成三个,但这取决于你有多少相似的名字



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

  • 组件IDS:nam_act_component_nam

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

文本视图:电视
按钮: bt
复选框: cb
开关: sw
切换按钮: tb
图像按钮: ib
图像视图: iv
进度条: pb
搜索栏: sb
评级栏: rb
Spinner: sp
WebView: wv
编辑文本: et

Radio Group: rg
List View: lv
Grid View: gv
Expandable List View: el
Scroll View: sv
Horizo​​ntal Scroll View: hs
Search View:* se
Tab Host: th
Video View: vv
Dialer Filter: df

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

  • 单选按钮=评级栏? (2认同)

and*_*per 8

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

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

我使用这些命名的原因是它更容易找到它们,如果需要可以删除,如果你使用android库你将不会被其他人替换,因为这些名称非常独特.

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

所以,简而言之,我的提示是:

  • 尽量避免名字中的数字.它们通常并不重要,并且表明您只使用拖放功能来设计UI设计器.

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

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

  • 尽可能给出有意义的名字.