来源:http://bbs.hackline.net/thread-3620-1-1.html

隐藏具体实现是Java语言的主要特点之一。正是因为这个原因,所以Java语言的移植性就特别好。如有个程序员编写了一个实现随机数的程序库,那么其他 程序开发人员只需要知道这个程序库需要传入那些参数,就可以使用这个类。现在无论是网上还是平时的工作中,有很多现成的程序库可以拿来使用。不过这也造成 了一个问题。为了便于管理,通常情况下都将实现某一块功能的类放在同一个文件夹中,组成一个程序库。如应用系统是根据模块来开发的话,则往往是将同一个模 块的程序库或者类放在同一个子文件夹中。而同一个子文件夹中的程序库或者类必须保证名字的唯一。为此无论是自己开发的类给他人使用,还是直接引用他人开发 的类,如何保证这个类名字的唯一,可以拿来直接使用,这就是一个Java高级程序开发人员必须要考虑的问题。  

一、 Java类远比Java原程序文件要多的多。
  在谈如何给Java类取一个独一无二的名字之前,笔者想先强调一下,Java类远比Java原程序文件要多的多。如一个应用程序可能有2000个 Java原文件组成。但是,最终生成的Java类文件可能就有6000个,甚至更多。而应用程序的最终功能则都是依靠这些Java类来完成的。所以说,如 何有效的管理这些类就是一个考验项目管理员能力的关键了。
  
  如上图所示,一个Java源文件中往往可能包含多个具体的类。其中必须有一个类叫做Public类。而且一个Java源文件中之能够含有一个 Public类。这也就是说,一个应用程序往往需要有很多Java源文件组成。另外需要注意的是,对于Public类的名字也有规定。通常情况 下,Public类的名字必须与Java源文件的相同,大小写也必须相同。Java源文件经过Java解释器编译之后,会生成多个Class 文件,这就是类文件。默认情况下,Java源文件中有多少个类,则一个Java源文件编译后就会产生多少个类文件。可见,最终生成的类文件就比源文件要多的多。
  为了便于管理,往往把实现某个特定功能的一组类组合成一个包,也叫做程序库单元。其实,从网上或者其他程序人员那边拿过来不是类,而是包含比较多类的一个程序库单元。为此其实我们只需要做到程序库单元的名字唯一即可,也就是说包名唯一。

二、 申请一个域 名来保证类名的唯一。
  既然一个应用程序有这么多的类或者程序库文件,而且还有可能直接引用他人编写的类或者程序库,那么如何来保障这个程序库名字的唯一,这是在一个项目开 始之前必须要考虑的问题。笔者曾负责过多个大型项目的开发,在这方面积累的比较丰富的经验。今天就借这个平台,跟大家分享一下。
  其实,这个经验若说破了,就好像跟魔术一样,就没有什么神秘了。但是不说破的话,外头人看来就会觉得很神奇。笔者在给类进行命名的时候,就利用了公司 的域名。要知道,网络上的域名是全世界唯一的。如果利用域名来给类进行命名的话,那么类名子重复的几率就会非常的少,除非有人搞恶作剧。具体的来说,可以 按照如下的步骤来设置命名规则。

第一步:申请一个域名。
  首先,软件公司在开发Java应用程序的时候,可以申请一个域名。在域名申请的时候,相关机构会进行唯一性审查。所以最后审查出来的域名肯定是全世界唯一的。如果公司已经有域名了,那么就可以直接拿来使用了。假设笔者申请了一个域名为www.abc.com 。如果企业开发的项目比较多,则可以为每个项目申请一个域名。不过通常情况下一个公司只需要申请一个域名即可。如果有多个项目的话,则自己再设置下一级域名即可。

第二步:规划应用系统的模块。
  现在应用系统越来越复杂。为了把复杂的事情简单化,越来越多的项目管理员喜欢把系统分为相对独立的模块,进行模块化设计与开发。为此,最终一个应用程 序的话,往往有多个模块构成。所以在应用程序开发之前,需要先规划应用系统的模块。如在开发一个ERP系统时,需要分为销售管理模块、财务管理模块、采购 管理模块、库存管理模块、生产管理模块等等。然后为其分别取一个简称,以方便以后称呼。如销售管理模块可以叫做PO等等。然后再将这些模块的简称加入到域 名中。注意模块的简称最好也用小写英文字母,这可以与域名匹配。

第三步:进行命名规划。
  以上两个工作准备好之后,就可以进行包命名规则的制定了。如果安装以上的规则,则一个包的名字主要包括三个部分,分别为域名+模块名+功能名。如现在有一个创建销售订单的包,则按照上面的规则,就可以命名为com .abc.po.pocreate。 其中com.abc为域名,这是全世界唯一的;Po为模块名;Poctreate为功能名。如果所有的JAVA应用程序开发人员都能够按照这个规则来命名 的话,则全世界的Java程序库的名字就将唯一。如此的话,程序开发人员如果要实现某个功能,如果网上有现成的类的话,则马上可以拿来使用。而不需要经过 任何的调整。

第四步:设置独立的文件夹来管理类与包。
  虽然通过对类进行打包可以在某种程度上减少管理的工作量。但是笔者建议,最好还是根据模块来存放各自的类与包。如可以在文件服务器上建立目录/com /abc/模块名。即把各自模块需要用到的类与包放在各自的模块的目录下。这方便后续的维护与管理。如以后可能因为用户需求的调整,需要升级某个包或者 类。根据Java语言的特性,则只需要编译这个修改过的类或者包即可。而不需要重新编译全部源文件。所以,如果按照这个规则组织的话,那么只要把重新编译 好的类或者包复制过去,覆盖原有的类即可。
  

在使用这个域名对包进行命名的时候,还需要注意如下几个问题。
  首先,如果软件公司开发了多个项目的话,则以上的命名规则要稍微调整一下。如需要调整为域名+项目名+模块名+功能名。即中间多了一个项目名。毕竟企 业申请域名需要花费一定的支出,如果为每个项目申请一个域名的话,那就有点浪费了。而且在包名中使用公司域名的话,还可以顺便给软件公司进行宣传。
  其次,在使用域名的时候,需要倒过来些。即域名为abc.com,则命名的话就为com.abc。这主要是考虑到书写与阅读的方便。另外,在域名中最 好不要包含特殊字符,并且域名要取得简单,这些都有利于提高后续的工作效率。还需要注意的是,在以前版本的JAVA中,如果采用域名的话,则顶级域名如 COM等必须为大写。不过现在使用的Java版本,则没有这个要求了。根据现在行业的普通做法,往往都采用小写字母作为包名。为了加强Java包的移植 性,大家最好也遵守这个规则。
  第三,如果要设置子目录来存放特定模块包或者类文件的话,那么这个子目录的建立路径最好跟包名能够一致。这方便后续的管理。另外就是,目录也最好利用小写。以前那种利用大写字符来进行分割单词的习惯,最好不要用。因为在一些操作系统 中,如Linux操作系统,对于目录与文件的大小写是敏感的。而Java程序是支持跨平台的。如果在目录或者包名上采用大小写混用的情况时,那么把应用程序移植到Linux操作系统上进行部署的时候,就可能会出现问题,有些目录或者文件由于大小写敏感会出现错误。

【转】给Java包取一个独一无二的名字相关推荐

  1. 做好APP推广的关键,给自己的APP取一个好名字Yopai.com

    每一个做APP产品和运营的伙伴们都知道,一个好名字对于自己的旗下的APP产品推广是有多重要,既要保证叫起来响亮,有新意,又要保证贴切内容,让大伙一听就知道,这是你们家的APP.和给小孩取名字一样,真是 ...

  2. 怎样给孩子取一个好名字?搜狗“有名堂”大数据支招

    http://pinyin.sogou.com/youmingtang/ 在中国文化里,起名字是一件非常讲究的事情.给孩子起名字,既要考虑文字本身的涵义,又要读起来朗朗上口.那么,到底怎样才能给孩子取 ...

  3. 教你如何给孩子取一个好名字!

    古语有云:"赐子千金,不如教子一艺:教子一艺,不如赐子好名."可谓道出了姓名对人的重要性.那么,作为父母如何给孩子起一个大富大贵.提升运势的名字呢? 首先,须以孩子的生辰八字取用神 ...

  4. 独立产品灵感周刊 DecoHack #028 - 如何给你的项目取一个好名字

    本周刊记录有趣好玩的独立产品设计开发相关内容,每周发布,感兴趣的伙伴可以 点击订阅我的周刊.为保证每期都能收到,建议邮件订阅.欢迎通过 Twitter 私信推荐或投稿. 产品推荐 1. Napkin ...

  5. 给函数取一个“好”名字

    参考资料:https://www.cnblogs.com/dolphin0520/p/10567879.html 一.常见的函数命名风格 目前,函数最常见的两种命名风格: (1)驼峰命名法: 多个单词 ...

  6. java判断名字是否为张三_用java代码写一个判断名字是不是以K或T开头的?

    展开全部 package src; import java.util.Arrays; import java.util.Scanner; public class Assigment { public ...

  7. 为了取一个花名,我爬下了中草药网所有的名字!

    很酷哦! 不过,对我这个选择恐惧症来说,也很纠结- 我们先看一下有哪些要求吧? 中草药名?人参?西洋参?还有啥??? 作为一个不怎么吃药的非医学生,这题真的超纲了呀.我只能求助度娘. 但是有个问题,我 ...

  8. 【java】Java 包(package)

    文章目录 包的作用 创建包 import 关键字 package 的目录结构 设置 CLASSPATH 系统变量 系统包 为了更好地组织类,Java 提供了包机制,用于区别类名的命名空间. 包的作用 ...

  9. java中将类放入包中,Java 包

    Java 允许使用包(package)将类组织起来.借助于包可以方便地组织自己的代码,并将自己的代码与别人提供的代码库分开管理.使用包的主要原因是确保类名的唯一性.标准的 Java 类库分布在多个包中 ...

最新文章

  1. 【Android 插件化】基于插件化的恶意软件的加载策略分析 ( 自定义路径加载插件 | 系统路径加载插件 | 用户同意后加载插件 | 隐藏恶意插件 )
  2. nodejs+html转换pdf,Nodejs中使用phantom将html转为pdf或图片格式的方法.pdf
  3. 十一、“由专入分易,由分入专难。”(2020.12.18)
  4. CAS无锁(乐观锁、自旋锁)优化
  5. Drawwhile计算机软件,计算机程序设计、小女纸又怒编一程序、求鉴定、
  6. McAfee (麦咖啡) 360安全卫士 金山毒霸2008正式免费升级版 超级巡警 IceSword(冰刃)
  7. LM5017原理图PCB设计要点
  8. UEFI规范实现EDKII项目学习笔记绪论[0]
  9. 安卓开发自学技巧!我了解到的面试的一些小内幕!附面试题答案
  10. 开源传感器网络平台OpenWSN
  11. 回忆旧时读叶芝的WHEN YOU ARE OLD
  12. bilibiliC++概念遍览
  13. 微软打算用DNA存储数据 但成本和速度仍是个大问题
  14. 什么是BFC?BFC的原理是什么?如何创建BFC?
  15. 自然语言处理之-----Word2Vec
  16. 第六课:图层蒙版和快速蒙版
  17. 手机接收机的功能电路(3)---振荡电路、锁相环
  18. 产品精益画布 Lean Canvas
  19. 瑞利分布与莱斯分布仿真
  20. 思想、行为、习惯、性格、命运

热门文章

  1. Php微信无感支付实例,微信无感支付怎么用?支付方式是什么?
  2. spring cloud简单使用
  3. 树莓派有史以来首次涨价
  4. Android 输入法表情实现
  5. elasticsearch 之 histogram 直方图聚合
  6. Python中date、datetime、timedelta 讲解
  7. HTML学习成果 制作一个空白简历
  8. win7 64打开文件夹总是新窗口打开的解决办法
  9. java 全局变量线程安全_Java线程安全问题指的是全局变量,还是静态变量?
  10. 安卓手机访问 linux系统文件下载,安卓手机跑起完整的Linux系统