架构杂谈:JAVA包命名设计

架构杂谈:JAVA包命名设计

常见的JAVA Package命名规范如下:

在java开发的过程中,每名Java开发人员都可以编写属于自己的java package,为了在编写中保证每一个java package命名的唯一性,要求开发人员在自己定义的包名前加上唯一的前缀。所以多数开发人员采用自己公司的名称.项目名.模块名...在互联网上的域名称作为自己程序包的唯一前缀。例如: com.sun.xml...

但要是个人的项目我们又应该怎么命名呢?
indi :
个体项目,指个人发起,但非自己独自完成的项目,可公开或私有项目,版权主要属于发起者。
包名为indi.发起者名.项目名.模块名*..
pers :
个人项目,指个人发起,独自完成,可分享的项目,版权主要属于个人。
包名为pers.个人名.项目名.模块名*..
priv :
私有项目,指个人发起,独自完成,非公开的私人使用的项目,版权属于个人。
包名为priv.个人名.项目名.模块名*..
另外,我为了区分团队项目和前面所说项目的区分,还有了一下扩展:
team :
团队项目指由团队发起,并由该团队开发的项目,版权属于该团队所有。
包名为team.团队名.项目名.模块名*..
com :
公司项目:由项目发起的公司所有。
包名为com.公司名.项目名.模块名*..

基于如上规则,假如要研发一个核心引擎,会频繁在各个项目中引用时,其命名规则有可能采用的,一般是com开头的最后一种命名规范,或者org开头的类似com的命名规范,甚至于有的会形成以下命名规范:

com.公司名.部门名.团队名.项目名.模块名…

这样的一个命名规范,对于普通类或者功能来讲,关系不大,长一点就长一点。但是对于底层基础设施的代码,则显得过于冗余了。让我们看看一些基础设施的命名举例:slf4j(org.slf4j,将项目名作为域名,同时作为包名),jdbc(java.sql.*)

所以,在必要的时候,这里是指的,一些非业务应用,比如开发平台或者基础框架类的,为了方便大家引用,尽量用精准的短命名。比如

特色部门名.项目名.模块名

实在是不放心的话,去maven中央仓库搜索一把:https://search.maven.org/

至少能保证很明显的重复是能快速发现的。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注