数据中心产品开发规范.docx
《数据中心产品开发规范.docx》由会员分享,可在线阅读,更多相关《数据中心产品开发规范.docx(40页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、数据中心产品开发规范XXXX公司XX业务部XXXX年XX月开发规范(JAVA部分)文档说明本文档所涉及到的文字、图表等,仅限于内部使用,未经双方书面许可,请勿扩散到第三方。文档属性属性内容客户名称:项目名称:文档主题:文档编号:文档版本:版本日期:文档状态:作者:文档变更版本修订日期修订人描述文档送呈单位姓名目的审阅参阅目 录1概述51.1最根本原则52Java技术规范62.1平台使用的相关技术62.1.1基本核心框架包62.1.2其他框架包62.2程序设计标准72.2.1命名约定82.2.2包名,类名,方法名,属性名,常量名命名约定92.2.3注释约定102.2.4快速浏览JavaDoc11
2、2.3开发规范122.3.1项目结构说明122.3.2整体包结构说122.3.3项目模块包结构及命名132.3.4各子项目模块功能包结构142.3.5配置文件包结构142.4命名规则152.4.1共用类152.4.2业务层152.4.3展现层152.4.4模型层162.4.5持久层162.4.6XML配置162.4.7资源文件192.4.8JSP文件202.4.9事务命名约束202.4.10JS命名约束213数据库技术规范223.1概述223.2命名基本规则223.3数据库表空间223.3.1命名基本规则223.4默认用户方案223.5表的命名规则、约定223.6视图的命名规则、约定233.7
3、字段命名规则、约定233.8存储过程的命名规则、约定233.9序列对象的命名规则、约定243.10触发器命名规则、约定244HIVE技术规范255HBase设计规范265.1Namespace命名空间设计265.21.2. Table表设计275.2.1理想HBase表275.2.2预创建分区285.2.3列族数量285.2.4可配置的数据块大小295.2.5数据块缓存295.2.6激进缓存295.2.7布隆过滤器(Bloom filters)305.2.8生存时间(TTL)315.2.9数据压缩325.2.10数据分割335.2.11单元时间版本345.3ColumnFamily列族设计35
4、5.4Qualifier列设计365.5版本设计375.6HBase命名规范371 概述本文提供一整套编写高效可靠的Java代码的标准、约定和指南。它们以安全可靠的软件工程原则为基础,使代码易于理解、维护和增强。而且,通过遵循这些程序设计标准,你作为一个Java软件开发者的生产效率会有显著提高。经验证明,若从一开始就花时间编写高质量的代码,则在软件开发阶段,对代码的修改要容易很多。最后,遵循一套通用的程序设计标准将带来更大的一致性,使软件开发团队的效率明显提高。1.1 最根本原则r 运用常识当找不到任何规则或指导方针,当规则明显不能适用,当所有的方法都失效的时侯: 运用常识并核实这些基本原则。
5、这条规则比其它所有规则都重要。r 驼峰命名法驼峰命名法(Camel-Case):就是当变量名或函式名是由一个或多个单字连结在一起,而构成的唯一识别字时,第一个单字以小写字母开始;第二个单字的首字母大写或每一个单字的首字母都采用大写字母,例如:myFirstName、myLastName,这样的变量名看上去就像骆驼峰一样此起彼伏,故得名。驼峰命名法的命名规则可视为一种惯例,并无绝对与强制,目的是增加识别和可读性。2 Java技术规范2.1 平台使用的相关技术平台使用的框架包分核心框架包和其他必须的框架包,各框架包本身所依赖的开源包不做列举,由框架包本身的信息来定。2.1.1 基本核心框架包平台采
6、用Spring+Struts2+myBatis的三层架构作为基本框架。(JDK1.6+)。参考如下:名称版本备注Struts22.2.1Spring3.0.5mybatis-core3.1.1不支持跨数据库建议,目前开发在mysql上,现网环境在db2上mybatis-spring1.1.1MySQL5.0Tomcat7.0jQuery1.82.1.2 其他框架包除基本框架外,平台其他将采用的一些框架包,参考如下:(JDK1.5+)名称版本备注Spring Security2.0.4Apache Commons2.6常用的工具包等SLF4J1.6.1Apache Logging log4j1.
7、2.15Apache Ant1.7.1Oscache2.4.1XMemcache1.2.5C3P00.9.1Dom4j2.0commons-beanutils1.8.3Mybatis-spring1.1.1Hadoop-core0.20.2-cdh3u5Hive-cli0.7.1-cdh3u5Hbase0.90.6-cdh3u52.2 程序设计标准Java的程序设计标准很重要,原因在于它将提高开发团队各成员的代码的一致性。一致性的提高会使代码更易理解,这意味着它更易开发和维护。从而降低了应用程序的总开发成本。你必须牢记的是:你的Java代码在你已离开并开始另一个项目之后,会保留相当长的一段时间
8、。因此开发过程中一个很重要的目标就是要确保在开发成员或开发团队之间的工作可以顺利交接,不必花很大的力气便能理解已编写的代码,以便继续维护和改进以前的工作。如果代码难以理解,很有可能被废弃和重写。s2.2.1 命名约定我们将在整个标准中讨论命名约定,以下是几个基本点:r 使用可以准确说明变量/字段/类的完整的英文描述符例如,采用类似firstName,grandTotal 或 CorporateCustomer这样的名字。虽然象x1,y1或fn 这样的名字很简短,输入起来容易,但是我们难以知道它们代表什么、结果是什么含义,因而使代码难以理解、维护和改进。r 采用该领域的术语如果用户称他们的“客户
9、” (clients) 为“顾客” (customers),那么就采用术语Customer 来命名这个类,而不用 Client。许多程序开发者会犯的一个错误是,不去使用工业或领域里已经存在着很完美的术语时,却生造出一些普通词汇。r 采用大小写混合,提高名字的可读性一般应该采用小写字母,但是类和接口的名字的首字母,以及任何中间单词的首字母应该大写。r 尽量少用缩写,但如果一定要使用,就要谨慎地使用这意味着应该保留一个标准缩写的列表,明智地从中选取,并且在使用时保持一致。例如,想对单词“number”采用缩写,那么可从 nbr,no 或者 num 中选取一个,说明一下采用了哪一个(具体是哪个倒无所
10、谓),并且只使用这一种形式。r 避免使用长名称(不超过15 个字母)例如: PhysicalOrVirtualProductOrService 看起来似乎是个不错的类名,但是名字太长,应该考虑重新给它起个短一点的名字,比如象 Offering。 r 避免使用相似或者仅在大小写上有区别的名字例如,不应同时使用变量名 persistentObject和persistentObjects及anSqlDatabase和 anSQLDatabase这样的名称r 避免使用下划线作为名字的首末字母以下划线为首末字母的名字通常为系统保留,除预处理定义之外,一般不用作用户命名。更重要的是,下划线经常造成麻烦而且
11、难输入,所以尽量避免使用。2.2.2 包名,类名,方法名,属性名,常量名命名约定r 包命名包命名全部使用小写英文字母,中间不允许有数字下划线等特殊字符。r 类,接口命名类,接口名开头使用大写英文字母,多单词使用驼峰命名法。类名中不要使用下划线和数字等特殊字符,正确的写法示例:HibernateDaoSupport。如果表示特殊功能的类,在类名的末尾加上所要表示的功能英文名称,如:*Listener,表示监听器等。r 方法命名方法命名使用驼峰命名法,方法名中间不要使用下划线和数字等特殊字符,正确的示例:processing()。方法的参数以及方法内部的局部参数可自定,符合要求就行。r 特殊Bea
12、n类的属性命名约定Bean的属性命名规则严格使用驼峰命名法,不允许使用下划线,名字长度最长不要超过15个字符,确实需要长名字时,适当缩写部分英文字母。r 常量属性命名常量的命名规则一般为常量名全部采用大写字母,多单词之间使用下划线隔开,不允许使用数字等特殊字符,并且常量的声明一定要是static final的。r 普通类的属性命名普通类的属性命名除常量依照常量命名法外,其他的属性的名字使用“英文名字(首字母大写)”命名,多单词可使用驼峰命名法或用下划线隔开。2.2.3 注释约定本文还会对注释进行约定,相关注释风格可以在eclipse中导入codetemplates.xm文件。以下是几个基本点:
13、 r 注释应该增加代码的清晰度代码注释的目的是要使代码更易于被同时参与程序设计的开发人员以及其他后继开发人员理解。r 如果你的程序不值得注释,那么它也很可能也不值得运行 。r 保持注释的简洁最好的注释应该是简单明了的注释。注释不必洋洋洒洒,只需提供足够的信息,使别人能够理解你的代码。r 先写注释,后写代码写代码注释的最好方法是在写代码之前就写注释。这使你在写代码之前可以想想代码的功能和运行。而且这样确保不会遗漏注释。另一种方法是边写代码边写注释。因为注释可以使代码更易理解,所以在程序开发的过程中,也可以利用这一点。如果打算花些时间写注释,那么至少你应从这个过程中获得些什么。r 注释信息不仅要包
14、括代码的功能,还应给出原因例如,下面例1中的代码显示金额在 $1,000 以上(包括 $1,000)的定单可给予 5% 的折扣。为什么要这样做呢?难道有一个商业法则规定大额定单可以得到折扣吗?这种给大额定单的特殊是有时限的呢,还是一直都这样?最初的程序设计者是否只是由于慷慨大度才这样做呢?除非它们在某个地方(或者是在源代码本身,或者是在一个外部文档里)被注释出来,否则你不可能知道这些。2.2.4 快速浏览JavaDocSun 公司的 Java Development Kit (JDK) 中有一个名为 javadoc 的程序。它可以处理 Java 的源代码文件,并且为 Java 程序产生 HTM
15、L 文件形式的外部注释文档。Javadoc 支持一定数目的标记,标识注释文档中各段起始位置的保留字。详情请参考 JDK javadoc 文档。标记用于目的author name类、接口说明特定某一段程序代码的作者。每一个作者各有一个标记。deprecated类、成员函数。说明该类的应用程序编程接口 (API) 已被废弃,因此应不再使用。exception name description成员函数说明由成员函数发出的异常。一个异常采用一个标记,并要给出异常的完整类名。param name description成员函数用来说明传递给一个成员函数的参数,其中包括参数的类型/类和用法。每个参数各有一
16、个标记。return description成员函数若成员函数有返回值,对该返回值进行说明。应说明返回值的类型/类和可能的用途。since类、成员函数说明自从有 JDK 1.1 以来,该项已存在了多长时间。see ClassName类、接口、成员函数、字段在文档中生成指向特定类的超文本链接。可以并且应该采用完全合法的类名。see ClassName#member functionName类、接口、成员函数、字段在文档中生成指向特定成员函数的超文本链接。可以并且应该采用完全合法的类名。version text类、接口说明特定一段代码的版本信息。你注释代码的方式很大地影响着你的工作效率以及所有维护
17、改进代码的后继开发者的工作效率。在软件开发过程中及早注释代码,会促使你在开始撰写代码之前仔细考虑这些代码,从而带来更高的工作效率。而且,当你重新阅读数天前或者数星期前所写的代码时,你可以很容易地判断出当时你是怎么想的,因为这一切都有记录。2.3 开发规范2.3.1 项目结构说明数据中心 FDC项目采用多module式项目结构,其中包含如下项目,各项目模块功能说明如下:父模块模块依赖模块主要业务功能描述FDCFdc-commonnone提供FDC项目中公用框架包及公用工具包FDCFdc-monitorFdc-common提供FDC项目中监控告警功能FDCFdc-computeFdc-monito
18、r, Fdc-common提供FDC项目中核心数据运算功能(包括ETL,汇总,分发)。FDCFdc-reportFdc-monitor, Fdc-common提供FDC项 目中数据展现功能(报表展现,短信、邮件展现,数据导出等) 2.3.2 整体包结构说包结构整体遵循按功能不同分包,主要体现出平台的整体架构。1. 常用的包结构如2.3.2常用包结构及命名。2. 各个模块包结构,如业务层,控制层,持久层,异常,模型POJO,常量类,工具类等。这里的常用类和公共里的不一样如果各大模块在公共类里没有找到,可以在自己的模块中自行扩展。达到遵循“开闭”原则。3. 常用xml配置文件结构,如2.3.4配置
19、文件包结构。4. 平台核心的配置文件,存放在包的根目录,如国际化,数据库连接,日志配置,缓存配置,系统级配置等。5. 自定义xml的scheme,dtd,以及tld文件存放于Web根目录的WEB-INF文件夹下,文件名全部使用小写字母。2.3.3 项目模块包结构及命名1. Fdc-commonr mon.cache说明:所有的缓存结构。例如平台所使用的Oscache和Ehcache缓存技术。r mon.framework 说明:各个技术层框架类。如下子包 controller:控制层提供的共有框架类。Module:数据bean公共基础类。Business:业务层公共业务控制类,提供通用功能。P
20、ersistence:数据持久层公共数据操作类。r mon.utils说明:存放基本常用的类。例如文件类,字符串类等。2. Fdc-moniter , Fdc-compute, Fdc-reportr configs说明:该包存放所有关于读取配置信息的类r Controller说明:存放在控制层下面的业务类。例如登陆,登出,角色切换等。r Module说明:存放各个业务数据bean类。下分各个子业务包。r Busines说明:存放个业务层公共业务控制类。下分各个子业务包。r Persistence说明:数据持久层数据控制类。下分各个子业务包。r extends说明:平台扩展功能类。下分子包,第
21、一级子包名表示扩展功能模块名。r Exceptions2.3.4 各子项目模块功能包结构按照各个层次结构包分完:功能包基本分为2个包:1. 各个层次的接口包。2. 对于接口的实现包。2.3.5 配置文件包结构配置文件夹命名为configs,可存放在Web根目录下的WEB-INF文件夹下,也可放在与java class文件根目录同级的目录下。configs目录下主要包含以下目录结构:r commons存放公共的Xml配置文件,如:struts,spring,mybatis等的xml配置文件。r core/*存放平台核心模块,各功能模块,扩展功能模块的所需的配置文件。如各模块的spring,str
22、uts,mybatis配置文件。2.4 命名规则2.4.1 共用类公共用类要求以“功能英文名称(首字母大写)+ Utils”驼峰命名。例如:日期的英文名为date,按照规则要求,命名为:DateUtils 。2.4.2 业务层q 业务层接口要求以 I +“模块英文名称(首字母大写)”+ Manager命名。例如:导航菜单的英文名为navigator,按照规则要求,命名为:INavigatorManager ;q 接口的实现类要求以“模块英文名称(首字母大写)”+ ManagerImpl 命名。例如:导航菜单的英文名为navigator,按照规则要求,命名为:NavigatorManagerIm
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据中心 产品 开发 规范
限制150内