关于从同级包访问 类 的经验法则
rule of thumb relating to access of classes from sibling packages
是否有关于您的包结构是否应允许从同级包中的另一个 class 访问 class 的经验法则。
一个例子我有一个代表登录页面的 class:
project.page.login.LoginPage
还有一个代表帐户主页的 class:
project.page.account.AccountHome
两个页面都访问项目的标准 chrome(页眉、页脚、菜单内容和 BasePage),将这些 classes 放在同级包中是否更好,例如project.page.chrome
project.page.chrome.BasePage
project.page.chrome.Menu
project.page.chrome.Footer
project.page.chrome.Header
或在父包中:
project.page
例如
project.page.BasePage
project.page.chrome.Menu
etc
我知道这是一个风格上的经验法则问题,在某种程度上是主观的。
我想知道的是,对于这类事情是否有普遍接受的规则。如果是这样的话,背后的原因是什么?每种方法的问题或好处是什么。
进一步吸血鬼的回答。
我的问题不是您是否 可以 将 classes 从一个同级包引用到另一个。关键是你是否应该以及原因是什么(无论哪种方式)。
没有父包或子包这样的东西。 Java 中的每个包都是完全独立的。将它们分层命名并像这样存储在文件系统中只是一种约定,但从技术上讲,这些包都是绝对不相关的独立包。
如何在包中组织源代码完全取决于您。
没有传统的方法来命名您的包或在包中对您的 类 进行分组。但大多数时候人们倾向于遵循标准 Java API,并采用其中的风格。
(仅举几例)
例如:util
、common
、basic
Package 允许将相关的 classes/packages 与适当的抽象组合在一起。
从技术上讲,在 Java 中没有规定兄弟包应该允许 class 相互访问。
从设计方法和良好实践的角度来看,建议以结构化和直观的方式对 classes/packages 进行分组。
例如,
project.page
project.page.login
project.page.chrome
project.page.account
这有助于应用程序的模块化和单元测试。此外,正确的包层次结构有助于使用 log4j 等工具快速 调试 应用程序。
您可以使用 this,但最好的方法是检查您的规范并使其最易读和可扩展。
我能给你的最好建议是学习规则然后忘记它们来制定你的规则
可能没有确切的规则,但有一些准则。 Link to answer to another similar question 由于此答案出现在 SO 上,因此仅在此处粘贴 link。阅读 Uncle Bob 文章可能会给您一些指导。
是否有关于您的包结构是否应允许从同级包中的另一个 class 访问 class 的经验法则。
一个例子我有一个代表登录页面的 class:
project.page.login.LoginPage
还有一个代表帐户主页的 class:
project.page.account.AccountHome
两个页面都访问项目的标准 chrome(页眉、页脚、菜单内容和 BasePage),将这些 classes 放在同级包中是否更好,例如project.page.chrome
project.page.chrome.BasePage
project.page.chrome.Menu
project.page.chrome.Footer
project.page.chrome.Header
或在父包中:
project.page
例如
project.page.BasePage
project.page.chrome.Menu
etc
我知道这是一个风格上的经验法则问题,在某种程度上是主观的。
我想知道的是,对于这类事情是否有普遍接受的规则。如果是这样的话,背后的原因是什么?每种方法的问题或好处是什么。
进一步吸血鬼的回答。 我的问题不是您是否 可以 将 classes 从一个同级包引用到另一个。关键是你是否应该以及原因是什么(无论哪种方式)。
没有父包或子包这样的东西。 Java 中的每个包都是完全独立的。将它们分层命名并像这样存储在文件系统中只是一种约定,但从技术上讲,这些包都是绝对不相关的独立包。
如何在包中组织源代码完全取决于您。
没有传统的方法来命名您的包或在包中对您的 类 进行分组。但大多数时候人们倾向于遵循标准 Java API,并采用其中的风格。
(仅举几例)
例如:util
、common
、basic
Package 允许将相关的 classes/packages 与适当的抽象组合在一起。 从技术上讲,在 Java 中没有规定兄弟包应该允许 class 相互访问。 从设计方法和良好实践的角度来看,建议以结构化和直观的方式对 classes/packages 进行分组。 例如,
project.page
project.page.login
project.page.chrome
project.page.account
这有助于应用程序的模块化和单元测试。此外,正确的包层次结构有助于使用 log4j 等工具快速 调试 应用程序。
您可以使用 this,但最好的方法是检查您的规范并使其最易读和可扩展。
我能给你的最好建议是学习规则然后忘记它们来制定你的规则
可能没有确切的规则,但有一些准则。 Link to answer to another similar question 由于此答案出现在 SO 上,因此仅在此处粘贴 link。阅读 Uncle Bob 文章可能会给您一些指导。