【问题标题】:Layout files naming conventions?布局文件命名约定?
【发布时间】:2011-07-31 17:23:31
【问题描述】:

人们提出了哪些布局文件命名约定。

我没有在网上找到任何东西,但考虑使用以下约定。

大家怎么看?

 - activity_* 
 - dialog_*
 - list_item_*

这就是我到目前为止所做的一切。

另外,活动的命名与它的布局有关吗?例如:

-> res
    -> layout
        -> activity_about_us.xml
-> src
    -> activity
        -> AboutUs.java

【问题讨论】:

    标签: android layout naming-conventions android-layout


    【解决方案1】:

    我认为应该遵循以下命名约定

    活动

    如果我们的活动名称是

    DisplayListActivity
    

    那么我们的布局名称应该是

    display_list_activity.xml
    

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

    country_list_item.xml
    

    对于对话框,可以包含它们的操作

    delete_country_dialog.xml
    

    【讨论】:

      【解决方案2】:

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

      类名ActAboutUs。为类添加前缀有点矫枉过正,但它清楚地将活动类与其他类区分开来。最初我为所有活动使用单独的目录(类似于您的方法),但一段时间后我意识到对于更大的应用程序,按功能分组目录可能比按超类(即活动)分组更好。当我在设置上工作时,我更容易在单个目录中工作,例如 /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 是我们遇到重复 names 问题最多的地方。如果不使用 activity_element_item 之类的命名约定,则很容易创建重复项。它增加了很多额外的输入,但它可以让你免于以后的很多混乱。 对于全局(应用程序范围)字符串,我们使用前缀"global_",例如global_btn_okglobal_msg_no_inet_conn。通常我们让一个人负责所有global_ 字符串,所以如果有人需要新字符串或更改,他需要与他同步以避免造成混乱。

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

      总而言之,我仍然无法摆脱我的方法有问题的感觉,因为我无法相信 google 开发人员在处理文件、ID、名称时创建了如此不方便的框架,等等……

      【讨论】:

      • 我一直在谷歌上寻找某种指导方针来遵循自己,正如你所发现的那样,我发布了这个问题。
      • 您找到更好的解决方案了吗?
      【解决方案3】:

      在寻找一组布局时,我倾向于使用它们,我发现总是在类名前面加上任何子布局是有效的。例如:

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

      您的活动将始终位于每个分组的顶部,寻找非活动变得不那么繁琐。有人知道为什么子文件夹还没有吗?我期望后端的效率和简单性,但我想这不会造成太大的伤害。

      【讨论】:

        【解决方案4】:

        布局文件名的第一部分应该始终是相应类的类型。 比如我们有一个类MainActivity(本例中类型为Activity),对应的布局文件应该叫activity_main.xml

        这意味着假设我们有一个名为WarningDialog 的对话框,相应的布局文件应该称为dialog_warning.xml,片段等也是如此。

        这似乎很熟悉,因为这也是在 Android Studio 中创建新项目时 activity/layout 文件的命名方式 (MainActivity -> activity_main.xml)。

        【讨论】:

          【解决方案5】:

          这是一本好书https://jeroenmols.com/blog/2016/03/07/resourcenaming/

          基本上,你关注WHAT WHERE DESCRIPTION SIZE

          例如布局文件

          • activity_main:MainActivity 的内容视图
          • fragment_articledetail:ArticleDetailFragment 的视图

          字符串

          • articledetail_title:ArticleDetailFragment 的标题
          • feedback_explanation:FeedbackFragment 中的反馈解释

          可绘制 - all_infoicon_large:通用信息图标的大版本 - all_infoicon_24dp:24dp 版本的通用信息图标

          【讨论】:

            【解决方案6】:

            对我来说,命名应该解决两个重要要求:

            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命名,但在CamelCase中,所以会有

            LoginActivity
            MovieListActivity
            MovieFragment 
            etc.
            

            【讨论】:

              猜你喜欢
              • 2011-08-08
              • 2010-09-22
              • 2021-04-13
              • 2017-12-26
              • 2012-12-24
              • 1970-01-01
              • 2010-12-09
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多