布局文件命名规范?

42

大家有哪些布局文件命名约定?

我在网上没有找到什么,但考虑使用以下约定。

大家觉得怎么样?

 - activity_* 
 - dialog_*
 - list_item_*

这是我到目前为止所涉及的全部内容。

另外,活动的命名与其布局有什么关系呢?例如:

-> res
    -> layout
        -> activity_about_us.xml
-> src
    -> activity
        -> AboutUs.java
6个回答

30

奇怪的是,尝试在谷歌上搜索这个问题只会得到这个页面作为有意义的结果... 过去半年中,我使用了类似于你的命名约定,但前缀更短。例如: 用于显示“关于我们”屏幕的活动:

类名: ActAboutUs。给类加前缀可能有些多余,但它清楚地区分了活动类和其他类。最初,我使用单独的目录存放所有活动(类似于你的方法),但过了一段时间后,我意识到对于较大的应用程序来说,按功能组织目录可能比按超类(即Activity)更好。当我在设置(Settings)方面工作时,单独一个目录/src/settings/更容易让我操作。这样,我需要的所有java文件都在同一个目录下,所以我不必四处找文件:

/src/settings/ActSettingsGlobal.java
/src/settings/ActSettingsNet.java
/src/settings/Settings.java
/src/settings/SettingsDBAdapter.java
/src/settings/etc...

这种方法还有助于将工作分配给不同的开发人员,即每个人都在自己的目录中独立地工作,因此彼此之间不会互相干扰 :-).

有些人喜欢使用后缀,但我发现它们不太有用。前缀有助于按字母顺序对事物进行分组,就像上面的例子一样:Act*前缀被首先排序,因此所有活动都方便地位于顶部。

我甚至考虑使用更易读的Act_作为前缀,尽管它与Java命名约定冲突...

布局文件名act_about_us.xml。在res/layout/中,我们没有子目录的“奢侈品”,这非常不幸,因此唯一的分组方式是使用适当的前缀,例如act_dlg_等...

字符串ID<string name="act_about_us_dlg_help1_title" ... string.xml是我们最常遇到具有重复name的问题的地方。如果不使用类似activity_element_item的命名约定,则很容易创建重复项。它会增加很多额外的输入,但可以避免日后的混乱。 对于全局(应用程序范围内)字符串,我们使用前缀"global_",例如global_btn_okglobal_msg_no_inet_conn。通常,我们会让一个人负责所有的global_字符串,因此如果有人需要新的字符串或更改,他需要与该人同步以避免创建混乱。

(现在我意识到activity__element__item(两个下划线)比activity_element_item更清晰易读)

总的来说,我仍然觉得我的方法存在问题,因为我无法相信Google开发人员在处理文件、ID、名称等方面创建了如此不方便的框架...


6
我整个Google搜索了一遍,希望找到一些自己可以遵循的指南,正如你发现的那样,这促使我发布了这个问题。 - Salsero69
你找到更好的解决方案了吗? - Shreyans

9

我认为应该遵循以下命名规则:

对于活动(Activity)

如果我们的活动名称是:

DisplayListActivity

那么我们的布局名称应该是:
display_list_activity.xml

对于列表项,我们可以在列表项布局名称中包含类别。

country_list_item.xml

并且对于对话框,它们的动作可以被包含。
delete_country_dialog.xml

7

当查找一组布局时,我通常会按照以下方式进行操作:始终在类名前添加前缀,并跟随任何子布局。例如:

类名:AboutActivity.java
布局名:about_activity.xml
子布局名:about_activity_menu.xml
子子布局名:about_activity_menu_item.xml

您的活动始终位于每个分组的顶部,查找非活动变得更加轻松。有人知道为什么子文件夹还没有成为事实吗?我认为这是出于后端的效率和简单性,但我想它不会损害太多。


7

这是一篇很好的阅读材料https://jeroenmols.com/blog/2016/03/07/resourcenaming/

基本上,你需要遵循WHAT WHERE DESCRIPTION SIZE

例如,布局文件

  • activity_main:MainActivity的content view
  • fragment_articledetail:ArticleDetailFragment的view

字符串

  • articledetail_title:ArticleDetailFragment的标题
  • feedback_explanation:FeedbackFragment中的反馈说明

drawable - all_infoicon_large:通用信息图标的大尺寸版本 - all_infoicon_24dp:通用信息图标的24dp版本


1
布局文件名的第一部分应该始终是相应类的类型。例如,如果我们有一个叫做MainActivity的类(在这种情况下类型是Activity),相应的布局文件应该被称为activity_main.xml。
这意味着,例如,如果我们有一个名为WarningDialog的对话框,则相应的布局文件应该被称为dialog_warning.xml,对于片段等也是如此。
这可能看起来很熟悉,因为这也是在Android Studio中创建新项目时activity/layout文件的命名方式(MainActivity->activity_main.xml)。

1

对我而言,命名应该满足两个重要的要求:

  1. 它应该给你关于文件内容和类型的提示(例如 activity_login/login_activity 或 movie_list_item/list_item_movie)
  2. 它应该将相关项目视觉上分组,以减少来回跳跃的次数

对于第二个要求,大多数人将“相关”定义为类型相关,这会给你类似于以下内容:

activity_login
activity_movie_list
activity_user_list
activity_settings
fragment_movie_list
fragment_user_list
item_movie 
item_user

我希望按特性分组,因为你几乎不会同时处理所有活动或所有片段,而是处理电影特性或设置特性等。所以,我的首选方式是这样的:
login_activity
movie_list_activity
movie_list_fragment
movie_list_item 
user_list_activity
user_list_fragment
user_list_item
settings_activity

源文件遵循xml命名规则,但使用驼峰式命名法,因此会存在这样的情况

LoginActivity
MovieListActivity
MovieFragment 
etc.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接