不久前,我看到这里回答了一个关于java包的细粒度组织的问题.例如,my.project.utilmy.project.factorymy.project.service等.

我现在找不到,所以我不妨问这个问题.

关于Java中包的组织以及其中包含的内容,是否有最佳实践?

您如何在Java项目中组织您的类?

例如,我正在与几个人合作的一个项目有一个名为beans的包.它最初是一个包含简单bean的项目,但最终(由于经验不足和时间不足)包含了所有内容(几乎).通过将一些工厂类放入工厂包(使用创建bean的静态方法的类)中,我对它们进行了一些清理,但我们还有一些类执行业务逻辑,还有一些类执行简单的处理(不使用业务逻辑),比如从属性文件中检索代码的消息.

感谢您的 idea 和意见.

推荐答案

包装组织或包装 struct 通常是一个热烈的讨论.以下是一些简单的包命名和 struct 指南:

  • 关注java package naming conventions
  • Structure your packages according to their functional role as well as their business role
    • 根据软件包的功能或模块对其进行细分.e、 g.com.company.product.modulea
    • 进一步的细分可能基于软件中的层.但是,如果你的包中只有很少的类,那么把所有的东西都放在包中是有意义的.e、 g.com.company.product.module.webcom.company.product.module.util等.
    • 避免过度 struct 化,除非有迫切需要,否则不要为例外情况、工厂等单独包装.
  • 如果你的项目很小,就用很少的软件包保持简单.e、 g.com.company.product.modelcom.company.product.util等.
  • 看看Apache projects上流行的开源项目.了解他们如何为各种规模的项目使用 struct 化.
  • 还考虑命名时的构建和分布(允许您在不同的包中分发API或SDK,参见servlet API)

经过几次实验和试用,你应该能够想出一个你感到舒服的 struct .不要拘泥于一个惯例,要乐于接受变化.

Java相关问答推荐

那么比较似乎不是词典学的,尽管doctor 这么说

Android -如何修复Java.time.zone. ZoneRulesExcept:未知时区ID:Europe/Kyiv

如何为具有多对多关系的实体的给定SQL查询构建JPA规范?

当我用OkHttpClient重写shouldInterceptRequest来发布数据时,Android WebView正在以纯HTML加载URL内容

使用包私有构造函数强制子类Java类

try 创建一个对象,使用它,然后使用一条语句将其存储为列表

Java 21 struct 化连接货币,需要可预知的子任务异常排序

暂停计时器

Com.example.service.QuestionService中的构造函数的参数0需要找不到的类型为';com.example.Dao.QuestionDao;的Bean

GSON期间的Java类型擦除

用户填充的数组列表永不结束循环

使用Jolt将字段转换为列表

Android Java:已设置但未读取SharedPreferences

如何配置空手道以使用FeignClient或RestTemplate代替ApacheHttpClient

是否有一个Java Future实现可以在池繁忙时在调用者线程中执行?

Java 21中泛型的不兼容更改

Intellij 2023 IDE:始终在顶部显示菜单栏

java21预览未命名的符号用于try-with-resources

为什么我得到默认方法的值而不是被覆盖的方法的值?

SonarQube在合并升级到java17后对旧代码提出错误