首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何处理同名类(不同包)

如何处理同名类(不同包)
EN

Software Engineering用户
提问于 2016-01-17 08:22:45
回答 3查看 58.1K关注 0票数 15

我和我的研发团队有一个大的代码库。我们已经将业务逻辑划分为多个包。其中有些类具有相同的名称。

您可以猜到,当两个类在同一个Java文件中引用时,名称会发生冲突。

例如:

代码语言:javascript
运行
复制
com.myapp.model (package)
 - Device (class)
 - ...

com.myapp.data (package)
 - Device (class)
 - ...

我们就治疗这些病例的最佳做法进行了辩论,提出了以下备选方案:

第一选择

  • 重命名类,添加前缀ModelDevice DataDevice

第二选择

  • 使用完整的package+class名称,当两者都被引用时,com.myapp.model.Device com.myapp.data.Device

在代码管理和可伸缩性方面有什么更正确的?

我们目前正在混合这两种方法,并开始出现不一致的情况。

EN

回答 3

Software Engineering用户

回答已采纳

发布于 2016-01-17 12:27:26

使用包名。这种类型的问题正是Java使用包命名约定的原因。它可以防止这些问题,无论是同一家公司的两个团队,还是地球对面的两个团队。

票数 21
EN

Software Engineering用户

发布于 2016-01-19 19:10:29

到目前为止,您有一个ModelDevice类(模型包中的设备)。如果您有另一个这样的ModelDevice来进行不同的分类呢?这个问题可能仍然存在,而且间接费用也将继续增加。

虽然暂时您可能会发现重命名类有一定的帮助,但从长远来看,建议的替代方法是为包名加上前缀,这就是行业标准。

票数 2
EN

Software Engineering用户

发布于 2018-10-19 14:57:15

只想补充一个尚未被提及的方面:

查看一下使用模式,即引用一个或两个类的Java源代码。

IMHO,在大多数情况下,源文件应该只引用一个相互冲突的类,从上下文来看,应该清楚它们是处理模型还是处理数据世界。如果由于任何原因这很困难,我会重命名这些类,因为我通常不喜欢源代码中以包为前缀的类名(它降低了可读性)。

如果您有处理这两个世界的源文件,它们可能是具有可读性的类,可以在两个不同的世界视图之间进行转换,在这里我更愿意找到包前缀类名。

但是,在一个源中看到两个设备类可能是一个提示,表明源通过混合来自模型和数据世界的任务而违反了单一责任原则。

票数 2
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/307616

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档