Android活动命名

时间:2011-02-26 09:58:51

标签: android android-activity naming-conventions naming

我在Android活动和其他类之间遇到越来越多的命名冲突。我想知道你是否可以告诉我你是如何避免这些的。遗憾的是,我在SO的相关问题中没有涉及我的特定命名问题。

第一个例子

我有一项显示游戏等级的活动。但是,该级别所需的数据(背景图片,实体等)存储在单独的类中。当然,我会称之为后一课Level。但是,我也会调用活动Level,因为它会显示级别。

第二个例子

我有一个活动可以播放切割场景。它基本上连续显示几个图像。显示图像显示多长时间的信息存储在单独的类中。与前一种情况一样,我自然会同时调用两个类CutScene

您如何解决这些命名问题?将活动命名为LevelActivityCutSceneActivity?将表示类命名为LevelModelCutSceneModel?还有别的吗?

2 个答案:

答案 0 :(得分:18)

我通过使用“类型”对类进行前缀或后缀来解决这些问题,就像您在问题末尾所建议的那样:

  • LevelActivityGameActivityMainActivity,...
  • CommentsListAdapter,...
  • CheckNewCommentsService,...
  • 等等。

但我通常对模型类执行一个execption,它是包含该数据的对象:我仍然会将我的Level模型类Level命名为LevelModel,而不是com.something.yourapp.activity.Level来表示我是操纵和使用Level。


另一个解决方案(输入^^的时间更长)可能是在引用您的类时使用完全限定名称​​(请参阅here

  • com.something.yourapp.model.Level
  • {{1}}

有了这个,你总能知道真正使用哪个类。

答案 1 :(得分:2)

一般来说,命名android application components的最佳方法是将其“组件类型”添加为后缀。 示例: -

  • LevelActivity(LevelActivity扩展活动)
  • InboxUpdateService(InboxUpdateService扩展服务)
  • ContactsContentProvider(ContactsContentProvide扩展了ContentProvider)
  • SMSBroadcastReceiver(SMSBroadcastReceiver扩展BroadcastReceiver)

通过使用上述方法进行命名,当您在应用程序中处理具有大量相似名称的大型代码流时,丢失跟踪的可能性很小。

因此,请使用后缀“活动”命名您的活动。

并将为LevelActivity提供数据的类命名为Level

在对Pascal MARTIN答案第二部分的矛盾中,您也可以同时使用LevelActivityLevelInfo。因为它们提供了明确的差异,如下所述:

  

以这样的方式区分名称,以便读者知道什么   差异提供    - 罗伯特C. Martin,Clean Code

的作者

但后缀在认知基础上往往是多余的。仅使用单词Level清楚地强调课程Level提供有关关卡的信息。 因此,对提供有关Level的数据的类使用Level

注意:如果您使用后缀,请为每个概念选择一个单词。 例如:如果您使用后缀Info来标识提供信息的类,则应在整个应用程序中仅使用Info(而不是DataModel)以避免混淆。