博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
6、Java包的命名与划分
阅读量:5858 次
发布时间:2019-06-19

本文共 1236 字,大约阅读时间需要 4 分钟。

6、包的命名与划分

(一)使用Java包的目的

在了解做一件事之前,需要了解做这件事的目的。而使用Java包的目的大概如下:
1    对类进行归类,便于开发查找。
2    将软件在代码层面上模块化,提升可测试,可维护性。
3    将软件在代码层面上层次化,提升可读性,层次分明

(二)包的命名

要梳理包的依赖关系,首先我们要把握包的命名规则,一旦名字取的不好。在梳理包依赖关系时,便各种纠结。

Java的包是多个类的集合。包的命名,或以独立功能为准,或以层次划分为准。

 

(三)命名与依赖关系

项目中以独立功能命名的包,往往倾向被其它包依赖,而不能依赖其它包。
项目中以层次划分的包,往往倾向于向下依赖,而不能依赖于上层包。
总的来说,“包依赖关系体现出软件层次划分(竖向),功能模块划分(横向)”。

(四)获取代码中的包依赖关系

a.使用Java编译报错特性:同事通过Eclipse工具,对依赖包进行“refrector”操作(不勾选“update reference”选项),查看编译时的其它包报错,这样去确定哪些包依赖此包。从而逐个通过画图工具把包依赖关系绘制出来。(注:这种方式比较取巧,幸亏项目中的包并不是很多,同事花了30分钟就搞定了)

b.使用Eclipse插件modelgoon:http://www.oschina.net/p/modelgoon。利用此工具可以方便的导出包依赖关系。(注:同事觉得非常简单好用)

(五)对“单向依赖”的追求

从包依赖关系图中,通过箭头可以清晰的看到:一个包被哪些包依赖,而这个包又依赖哪些包。一般呢,一个包更倾向于“被单向依赖”,这意味这个包是可独立,可维护。对于软件测试来讲,单向依赖的包更容易进行单元测试。额外的,如果此包被广泛使用,则更多会将该包作为一个开发组件,并以一个独立项目的方式来对其进行维护。

(六)消灭“循环依赖”

“循环依赖”是指两个包之间互相依赖。消灭“循环依赖”有以下三种方法:
1  拆迁法。
A包的某些类或某些方法规划不合理,应该将其放在B包或者放在C包。
2  合并法。
B包所包含的业务属于A包的范围。将B包作为A包的子包。
3  依赖于接口法。
A包依赖B包,B包依赖A包的特定函数方法。这样可以通过依赖于抽象,来执行包与包之间的解耦。

(七)附转:包划分的几个小原则:

      1  一个包要么包含独立的功能,要么代表某层的功能。否则包的划分就没有意义,且查找起来很混乱。

      2 某类的子类。(比如接口或者虚类不同的实现)应当单独放到某个包中。

      3 假设A包依赖B包,那么B包不应该依赖A包。例如不应当在B包中出现包含A包中类的接口或属性。如果必须增加接口,则应当使用普通类或者B依赖的包中的类组织信息。

否则提取B包中的功能时,会牵扯出不需要的A包。

     4 如果A包,B包均依赖于C包,则包c不应当为A或B的子包。

转载于:https://www.cnblogs.com/hthuang/p/3465373.html

你可能感兴趣的文章
Syscan360会议胸牌破解揭秘
查看>>
你应该了解的数据分析入门知识
查看>>
数据挖掘与数据化运营实战. 1.2 数据化运营的主要内容
查看>>
《代码整洁之道》—第13章13.5节了解执行模型
查看>>
如何在 Debian 和 Ubuntu 上安装 MariaDB 10
查看>>
《计算机科学概论》—第1章1.2节计算的历史
查看>>
如何在 Antergos/Arch Linux 中使用 iPhone
查看>>
《编译与反编译技术》—第1章1.2节编译过程
查看>>
宇宙第一 shell —— fish 入门
查看>>
资源编排最佳实践之入门篇:云服务器如何从 1 到 N?
查看>>
容器,你还只用Docker吗?(下)
查看>>
Vertica的这些事<十>—— vertica中group by 和join 语句的优化
查看>>
Spark修炼之道(基础篇)——Linux大数据开发基础:第九节:Shell编程入门(一)...
查看>>
常见问题:阿里云服务器对外攻击解锁后怎么办?
查看>>
大数据开发—常见问题(1)
查看>>
《C语言及程序设计》实践参考——数组的排序
查看>>
Power9问世又怎样,一条SQL就把最牛小型机搞瘫了(有彩蛋)
查看>>
数据结构例程——最小生成树的普里姆算法
查看>>
java开发小细节分享
查看>>
MySQL 5.7.6: wl#5757 InnoDB支持大page
查看>>