Java/Spring项目的包开头为什么是com?

下面是一个使用Maven构建的项目初始结构

src/
  main/
    java/         -->Java源代码
     com.example/--->为什么这里是com开头
    resources/    -->资源文件(配置、静态文件等)
test/
    java/         -->测试代码
    resources/    -->测试资源文件

通过具体的例子理解


com.ruoyi或许不好理解,那你反转一下 ruoyi.com 这下是不是就好理解了?ruoyi.com 不就成了若依的官网了吗(注:若依官网是ruoyi.vip,因为com是商业组织的结尾,所以若依域名不是ruoyi.com)!

这个叫域名反转功能,通过域名反转,你可以很快捷的明白生产公司在哪里    域名反转规则是 Java 中的包命名惯例,它的核心思想是使用公司的域名反转(比如  com.example )作为包的前缀来确保包名的唯一性。这个规则来源于防止不同公司或组织开发的项目之间发生命名冲突。

- 域名:`example.com`
- 包名:`com.example`

为什么反转而不是直接使用域名?

域名反转的原因主要是因为包名的标准书写方式:包名从最顶层到最具体的层次结构依次递增。在域名反转规则中:

com  是顶层包,表示这是一个商业(commercial)域名。  example  是次级包,代表公司的名称或组织名称。 后续的包名逐渐细化,表示项目、模块或者功能。

这么做的好处

1. 避免命名冲突

如果所有人都使用类似的简单包名(如  utils  或  service ),那么当多个项目被集成到一起时,可能会发生命名冲突,导致编译错误或者功能异常。通过使用域名反转(如  com.example.utils  和  org.somecompany.utils ),每个公司的包名都是唯一的,即使包的功能相似,也不会产生冲突。  

这点其实很多小伙伴都有体会,随着代码开发水平的提高,使用轮子是一个常见的事,但轮子用多了,就能发现自己项目中充斥这一堆相同的东西--来自不同轮子。

2. 全球唯一

公司拥有独特的域名,反转后的包名前缀自然是唯一的。每个公司都可以根据自己的域名创建不重复的包结构,确保包在全世界范围内的唯一性。例如:

com.google.androidcom.microsoft.azure

3. 提高代码的可读性

通过包名,开发者可以立即知道某个代码片段来自哪个公司或者项目。比如  com.example.project  可以立即指出代码来自  example.com ,而  org.apache.commons  则来自 Apache 的项目。

4. 逻辑分层

域名反转后,包名可以继续向下扩展,用来表示不同的模块或功能。例如:

com.example.app.controller :example公司的app的控制器层代码  com.example.app.service :example公司的app的业务逻辑层代码  com.example.app.model :example公司的app的数据模型

总结与问题

这个包名,从诞生开始就考虑到了很多东西(发布唯一性、代码可读性等)。看到包名,你也就知道很多信息啦。 

https://juejin.cn/post/7416908856867520550

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值