我和我的研发团队有一个大的代码库。我们已经将业务逻辑划分为多个包。其中有些类具有相同的名称。
您可以猜到,当两个类在同一个Java文件中引用时,名称会发生冲突。
例如:
com.myapp.model (package)
- Device (class)
- ...
com.myapp.data (package)
- Device (class)
- ...我们就治疗这些病例的最佳做法进行了辩论,提出了以下备选方案:
我们目前正在混合这两种方法,并开始出现不一致的情况。
发布于 2016-01-17 12:27:26
使用包名。这种类型的问题正是Java使用包命名约定的原因。它可以防止这些问题,无论是同一家公司的两个团队,还是地球对面的两个团队。
发布于 2016-01-19 19:10:29
到目前为止,您有一个ModelDevice类(模型包中的设备)。如果您有另一个这样的ModelDevice来进行不同的分类呢?这个问题可能仍然存在,而且间接费用也将继续增加。
虽然暂时您可能会发现重命名类有一定的帮助,但从长远来看,建议的替代方法是为包名加上前缀,这就是行业标准。
发布于 2018-10-19 14:57:15
只想补充一个尚未被提及的方面:
查看一下使用模式,即引用一个或两个类的Java源代码。
IMHO,在大多数情况下,源文件应该只引用一个相互冲突的类,从上下文来看,应该清楚它们是处理模型还是处理数据世界。如果由于任何原因这很困难,我会重命名这些类,因为我通常不喜欢源代码中以包为前缀的类名(它降低了可读性)。
如果您有处理这两个世界的源文件,它们可能是具有可读性的类,可以在两个不同的世界视图之间进行转换,在这里我更愿意找到包前缀类名。
但是,在一个源中看到两个设备类可能是一个提示,表明源通过混合来自模型和数据世界的任务而违反了单一责任原则。
https://softwareengineering.stackexchange.com/questions/307616
复制相似问题