6、Java包的命名与划分
6、包的命名与划分
(一)使用Java包的目的
(二)包的命名
要梳理包的依赖关系,首先我们要把握包的命名规则,一旦名字取的不好。在梳理包依赖关系时,便各种纠结。
Java的包是多个类的集合。包的命名,或以独立功能为准,或以层次划分为准。
(三)命名与依赖关系
(四)获取代码中的包依赖关系
a.使用Java编译报错特性:同事通过Eclipse工具,对依赖包进行“refrector”操作(不勾选“update reference”选项),查看编译时的其它包报错,这样去确定哪些包依赖此包。从而逐个通过画图工具把包依赖关系绘制出来。(注:这种方式比较取巧,幸亏项目中的包并不是很多,同事花了30分钟就搞定了)
b.使用Eclipse插件modelgoon:http://www.oschina.net/p/modelgoon。利用此工具可以方便的导出包依赖关系。(注:同事觉得非常简单好用)
(五)对“单向依赖”的追求
从包依赖关系图中,通过箭头可以清晰的看到:一个包被哪些包依赖,而这个包又依赖哪些包。一般呢,一个包更倾向于“被单向依赖”,这意味这个包是可独立,可维护。对于软件测试来讲,单向依赖的包更容易进行单元测试。额外的,如果此包被广泛使用,则更多会将该包作为一个开发组件,并以一个独立项目的方式来对其进行维护。
(六)消灭“循环依赖”
(七)附转:包划分的几个小原则:
1 一个包要么包含独立的功能,要么代表某层的功能。否则包的划分就没有意义,且查找起来很混乱。
2 某类的子类。(比如接口或者虚类不同的实现)应当单独放到某个包中。
3 假设A包依赖B包,那么B包不应该依赖A包。例如不应当在B包中出现包含A包中类的接口或属性。如果必须增加接口,则应当使用普通类或者B依赖的包中的类组织信息。
否则提取B包中的功能时,会牵扯出不需要的A包。
4 如果A包,B包均依赖于C包,则包c不应当为A或B的子包。
6、Java包的命名与划分的更多相关文章
- Java包名命名规则
1. sun公司建议java包的命名规则为域名的倒写. 比如:sun公司www.sun.com 就用该是com.sun.www 2. indi : 个体项目,指个人发起,但非自己独自完成的项目,可公 ...
- Java包名命名规则(转载)
转载自:http://lilinhai548.blog.163.com/blog/static/5847332920155132151359/ 鸣谢原作者 学习Java的童鞋们都知道,Java的包. ...
- java包名命名规范
Java的包名都有小写单词组成,类名首字母大写:包的路径符合所开发的 系统模块的 定义,比如生产对生产,物资对物资,基础类对基础类.以便看了包名就明白是哪个模块,从而直接到对应包里找相应的实现. 由于 ...
- Java包的命名规则
按照惯例,包申明遵循特定的格式.虽然不是严格要求的Java语法,如果不遵循格式要求,大多数的Java认为你是不懂Java. 从右到左的顺序是: 1.systaxExample表明包的本地名称. 2.e ...
- Java包的命名规范
indi : 个体项目,指个人发起,但非自己独自完成的项目,可公开或私有项目,版权主要属于发起者. 包名为indi.发起者名.项目名.模块名*.*.* pers : 个人项目,指个人发起,独自完成,可 ...
- java包名命名规范[【转】
indi : 个体项目,指个人发起,但非自己独自完成的项目,可公开或私有项目,copyright主要属于发起者. 包名为“indi.发起者名.项目名.模块名.……”. pers : 个人项目,指个人发 ...
- java 包的命名规范
- 夯实Java基础系列5:Java文件和Java包结构
目录 Java中的包概念 包的作用 package 的目录结构 设置 CLASSPATH 系统变量 常用jar包 java软件包的类型 dt.jar rt.jar *.java文件的奥秘 *.Java ...
- Java文件和Java包结构
Java中的包概念 Java中的包是封装一组类,子包和接口的机制.软件包用于: 防止命名冲突.例如,可以有两个名称分别为Employee的类,college.staff.cse.Employee和co ...
随机推荐
- Java面试指导
Java面试指导 想要成为合格的Java程序员或工程师到底需要具备哪些专业技能,面试者在面试之前到底需要准备哪些东西呢?本文陈列的这些内容既可以作为个人简历中的内容,也可以作为面试的时候跟面试官聊 ...
- 老李推荐: 第8章4节《MonkeyRunner源码剖析》MonkeyRunner启动运行过程-启动AndroidDebugBridge 4
这一部分的代码逻辑关系是这样的: 344行: 一个外部循环每次从上次保存下来的设备列表获得一个设备Device实例 350行: 再在一个内部循环从最新的设备列表中获得一个设备Device实例 353行 ...
- iOS StoreKit
简述: 本文讲解iOS系统框架StoreKit中的SKStoreProductViewController与SKStoreReviewController这两个Controller. SKStoreP ...
- word-wrap: break-word;与word-break: break-all;文本自动换行
word-break:break-all和word-wrap:break-word都是能使其容器如DIV的内容自动换行它们的区别就在于:1,word-break:break-all 例如div宽200 ...
- Spring基础学习(五)—事务管理
一.事务基本认识 1.事务的概述 为了保证数据库中数据的一致性,数据的操作应当是离散的成组的逻辑单元.当它全部完成时,数据的一致性可以保持,而当这个单元中的一部分操作失败,整个事务应当全部视 ...
- JavaScript定时器分析
一.事件循环 JavaScript是单线程,同一个时间只能做一件事情,所以执行任务需要排队.如果前一个耗时很长,那么下一个只能等待. 1)两种任务 为了更好的处理任务,JavaScript语言的设计者 ...
- 使用opencv实现自定义卷积
对图像进行卷积是图像处理的基本操作,最近在研究图像滤波,经常要用到自定义卷积,所以实现了一下 #include "opencv2/imgproc/imgproc.hpp" #inc ...
- 浅析 Jndi / DataSource / ConnectionPool 三者
最近有个用户量 5W-10W 的 web 应用,频繁导致 weblogic 崩溃,让运维组很难受. 通过几天跟踪系统日志和 weblogic 运行状况,发现报错的姿势有很多,其中对定位问题比较关键的报 ...
- 透视I/O多路复用
透视I/O多路复用 我写的不是select这些函数的教学,需要了解的请自行Google或者去man,这些是帮助我理解函数的封装之下的道理. 需要回答的问题 I/O准备好了指什么?什么叫I/O已经可读/ ...
- php 启动过程 - reqeust RINIT 过程
php 启动过程 - reqeust RINIT 过程 概述 apache 接收到请求之后, 交给 php 处理 php 模块在接收到请求后, 会对请求进行初始化, 及 RINIT 过程 调用触发 a ...