我在Android活动和其他类之间遇到越来越多的命名冲突。我想知道你是否可以告诉我你是如何避免这些的。遗憾的是,我在SO的相关问题中没有涉及我的特定命名问题。
第一个例子
我有一项显示游戏等级的活动。但是,该级别所需的数据(背景图片,实体等)存储在单独的类中。当然,我会称之为后一课Level
。但是,我也会调用活动Level
,因为它会显示级别。
第二个例子
我有一个活动可以播放切割场景。它基本上连续显示几个图像。显示图像显示多长时间的信息存储在单独的类中。与前一种情况一样,我自然会同时调用两个类CutScene
。
您如何解决这些命名问题?将活动命名为LevelActivity
和CutSceneActivity
?将表示类命名为LevelModel
和CutSceneModel
?还有别的吗?
答案 0 :(得分:18)
我通过使用“类型”对类进行前缀或后缀来解决这些问题,就像您在问题末尾所建议的那样:
LevelActivity
,GameActivity
,MainActivity
,... CommentsListAdapter
,... CheckNewCommentsService
,... 但我通常对模型类执行一个execption,它是包含该数据的对象:我仍然会将我的Level模型类Level
命名为LevelModel
,而不是com.something.yourapp.activity.Level
来表示我是操纵和使用Level。
另一个解决方案(输入^^的时间更长)可能是在引用您的类时使用完全限定名称(请参阅here):
com.something.yourapp.model.Level
有了这个,你总能知道真正使用哪个类。
答案 1 :(得分:2)
一般来说,命名android application components的最佳方法是将其“组件类型”添加为后缀。 示例: -
LevelActivity
(LevelActivity扩展活动)InboxUpdateService
(InboxUpdateService扩展服务)ContactsContentProvider
(ContactsContentProvide扩展了ContentProvider)SMSBroadcastReceiver
(SMSBroadcastReceiver扩展BroadcastReceiver)通过使用上述方法进行命名,当您在应用程序中处理具有大量相似名称的大型代码流时,丢失跟踪的可能性很小。
因此,请使用后缀“活动”命名您的活动。
并将为LevelActivity提供数据的类命名为Level
。
在对Pascal MARTIN答案第二部分的矛盾中,您也可以同时使用LevelActivity
和LevelInfo
。因为它们提供了明确的差异,如下所述:
以这样的方式区分名称,以便读者知道什么 差异提供 - 罗伯特C. Martin,Clean Code
的作者
但后缀在认知基础上往往是多余的。仅使用单词Level
清楚地强调课程Level
提供有关关卡的信息。
因此,对提供有关Level的数据的类使用Level
。
注意:如果您使用后缀,请为每个概念选择一个单词。
例如:如果您使用后缀Info
来标识提供信息的类,则应在整个应用程序中仅使用Info
(而不是Data
或Model
)以避免混淆。