数据中心产品开发规范.docx
《数据中心产品开发规范.docx》由会员分享,可在线阅读,更多相关《数据中心产品开发规范.docx(72页珍藏版)》请在冰豆网上搜索。
数据中心产品开发规范
数据中心产品开发标准
XXXX公司业务部年XX月
文档说明本文档所涉及到的文字、图表等,仅限于内部使用,未经双方书面许可,请勿扩散到第三方。
文档属性
属性内容
客户名称:
工程名称:
文档主题:
文档编号:
文档版本:
版本日期:
文档状态:
文档变更版本修订日期修订人描述文档送呈
单位姓名目的审阅
参阅
1
概述......................................................................
最根本原那么........................................................
Java技术标准.............................................................平台使用的相关技术................................................根本核心框架包................................................其他框架包....................................................程序设计标准......................................................
命名约定......................................................包名,类名,方法名,属性名,常量名命名约定....................
注释约定......................................................快速浏览JavaDoc..............................................开发标准..........................................................工程结构说明..................................................整体包结构说..................................................工程模块包结构及命名..........................................各子工程模块功能包结构........................................
配置文件包结构................................................命名规那么..........................................................共用类........................................................业务层........................................................展现层........................................................模型层........................................................持久层........................................................XML配置......................................................资源文件......................................................
JSP文件......................................................事务命名约束..................................................JS命名约束...............................................
3
数据库技术标准.
...........................................................
概述..............................................................
命名根本规那么......................................................
数据库表空间......................................................
命名根本规那么..................................................
默认用户方案......................................................
表的命名规那么、约定................................................
视图的命名规那么、约定..............................................
字段命名规那么、约定................................................
存储过程的命名规那么、约定..........................................
序列对象的命名规那么、约定..........................................
触发器命名规那么、约定..............................................
4
HIVE技术标准.............................................................
5
HBase设计标准............................................................
Namespace命名空间设计............................................
.Table
表设计....................................................
理想HBase表..................................................
预创立分区....................................................
列族数量......................................................
可配置的数据块大小............................................
数据块缓存....................................................
激进缓存......................................................
布隆过滤器〔Bloomfilters
〕...................................
生存时间〔TTL〕...............................................
数据压缩......................................................
数据分割......................................................
单元时间版本..................................................
ColumnFamily列族设计.............................................
Qualifier
列设计..................................................
版本设计
..........................................................
HBase命名标准....................................................
1概述本文提供一整套编写高效可靠的Java代码的标准、约定和指南。
它们以平安可靠的软
件工程原那么为根底,使代码易于理解、维护和增强。
而且,通过遵循这些程序设计标准,你作为一个Java软件开发者的生产效率会有显着提高。
经验证明,假设从一开始就花时间编
写高质量的代码,那么在软件开发阶段,对代码的修改要容易很多。
最后,遵循一套通用的程序设计标准将带来更大的一致性,使软件开发团队的效率明显提高。
最根本原那么运用常识当找不到任何规那么或指导方针,当规那么明显不能适用,当所有的方法都失效的时侯:
运用常识并核实这些根本原那么。
这条规那么比其它所有规那么都重要。
驼峰命名法
驼峰命名法〔Camel-Case〕:
就是当变量名或函式名是由一个或多个单字连结在一起,而构成的唯一识别字时,第一个单字以小写字母开始;第二个单字的首字母大写或每一个单字的首字母都采用大写字母,例如:
myFirstName、myLastName,这样的变量名看上去就像骆驼峰一样此起彼伏,故得名。
驼峰命名法的命名规那么可视为一种惯例,并无绝对与强制,目的是增加识别和可读性。
2Java技术标准
平台使用的相关技术平台使用的框架包分核心框架包和其他必须的框架包,各框架包本身所依赖的开源包不做列举,由框架包本身的信息来定。
根本核心框架包平台采用Spring+Struts2+myBatis的三层架构作为根本框架。
〔+〕。
参考如下:
名称版本备注Struts2
不支持跨数据库建议,目前开发在mysql上,现网环境
在db2上mybatis-spring其他框架包除根本框架外,平台其他将采用的一些框架包,参考如下:
〔+〕名称版本备注
SpringSecurity
Commons常用的工具包等SLF4JLogginglog4jAnt程序设计标准Java的程序设计标准很重要,原因在于它将提高开发团队各成员的代码的一致性。
一致性的提高会使代码更易理解,这意味着它更易开发和维护。
从而降低了应用程序的总开发本钱。
你必须牢记的是:
你的Java代码在你已离开并开始另一个工程之后,会保存相当长的一段时间。
因此开发过程中一个很重要的目标就是要确保在开发成员或开发团队之间的工作可以顺利交接,不必花很大的力气便能理解已编写的代码,以便继续维护和改良以前的工作。
如果代码难以理解,很有可能被废弃和重写。
s
命名约定我们将在整个标准中讨论命名约定,以下是几个根本点:
使用可以准确说明变量/字段/类的完整的英文描述符例如,采用类似firstName,grandTotal或CorporateCustomer这样的名字。
虽然象x1,y1或fn这样的名字很简短,输入起来容易,但是我们难以知道它们代表什么、结果是什么含义,因而使代码难以理解、维护和改良。
采用该领域的术语
如果用户称他们的“客户〞(clients)为“顾客〞(customers),那么就采用术语Customer来命名这个类,而不用Client。
许多程序开发者会犯的一个错误是,不去使用工业或领域里已经存在着很完美的术语时,却生造出一些普通词汇。
采用大小写混合,提高名字的可读性一般应该采用小写字母,但是类和接口的名字的首字母,以及任何中间单词的首字母应该大写。
尽量少用缩写,但如果一定要使用,就要谨慎地使用这意味着应该保存一个标准缩写的列表,明智地从中选取,并且在使用时保持一致。
例如,想对单词“number〞采用缩写,那么可从nbr,no或者num中选取一个,
说明一下采用了哪一个〔具体是哪个倒无所谓〕,并且只使用这一种形式。
防止使用长名称〔不超过15个字母〕
例如:
PhysicalOrVirtualProductOrService看起来似乎是个不错的类名,但是
名字太长,应该考虑重新给它起个短一点的名字,比方象Offering。
防止使用相似或者仅在大小写上有区别的名字例如,不应同时使用变量名persistentObject和persistentObjects及anSqlDatabase和anSQLDatabase这样的名称
防止使用下划线作为名字的首末字母
以下划线为首末字母的名字通常为系统保存,除预处理定义之外,一般不用作用
户命名。
更重要的是,下划线经常造成麻烦而且难输入,所以尽量防止使用。
包名,类名,方法名,属性名,常量名命名约定包命名包命名全部使用小写英文字母,中间不允许有数字下划线等特殊字符。
类,接口命名类,接口名开头使用大写英文字母,多单词使用驼峰命名法。
类名中不要使用下划线和数字等特殊字符,正确的写法例如:
HibernateDaoSupport。
如果表示特殊功能的类,在类名的末尾加上所要表示的功能英文名称,如:
****Listener,表示监听器等。
方法命名方法命名使用驼峰命名法,方法名中间不要使用下划线和数字等特殊字符,正确的例如:
processing()。
方法的参数以及方法内部的局部参数可自定,符合要求就行。
特殊Bean类的属性命名约定Bean的属性命名规那么严格使用驼峰命名法,不允许使用下划线,名字长度最长不要超过15个字符,确实需要长名字时,适当缩写局部英文字母。
常量属性命名常量的命名规那么一般为常量名全部采用大写字母,多单词之间使用下划线隔开,不允许使用数字等特殊字符,并且常量的声明一定要是staticfinal的。
普通类的属性命名普通类的属性命名除常量依照常量命名法外,其他的属性的名字使用“英文名字〔首字母大写〕〞命名,多单词可使用驼峰命名法或用下划线隔开。
注释约定
本文还会对注释进行约定,相关注释风格可以在
eclipse
中导入文件。
以下是几个基
本点:
注释应该增加代码的清晰度
代码注释的目的是要使代码更易于被同时参与程序设计的开发人员以及其他后继开发人员理解。
如果你的程序不值得注释,那么它也很可能也不值得运行。
保持注释的简洁最好的注释应该是简单明了的注释。
注释不必洋洋洒洒,只需提供足够的信息,使别人能够理解你的代码。
先写注释,后写代码写代码注释的最好方法是在写代码之前就写注释。
这使你在写代码之前可以想想代码的功能和运行。
而且这样确保不会遗漏注释。
另一种方法是边写代码边写注释。
因为注释可以使代码更易理解,所以在程序开发的过程中,也可以利用这一点。
如果打算花些时间写注释,那么至少你应从这个过程中获得些什么。
注释信息不仅要包括代码的功能,还应给出原因
例如,下面例1中的代码显示金额在$1,000以上〔包括$1,000〕的定单可给予5%的折扣。
为什么要这样做呢?
难道有一个商业法那么规定大额定单可以得到折扣吗?
这种给大额定单的特殊是有时限的呢,还是一直都这样?
最初的程序设计者是否只是
由于慷慨大度才这样做呢?
除非它们在某个地方〔或者是在源代码本身,或者是在一
个外部文档里〕被注释出来,否那么你不可能知道这些。
快速浏览JavaDocSun公司的JavaDevelopmentKit(JDK)中有一个名为javadoc的程序。
它可以处理Java的源代码文件,并且为Java程序产生HTML文件形式的外部注释文档。
Javadoc支持一定数目的标记,标识注释文档中各段起始位置的保存字。
详情请参考JDKjavadoc文
档。
标记
用于
目的
@authorname
类、接口
说明特定某一段程序代码的作者。
每一个作者
各有一个标记。
@deprecated
类、成员函数。
说明该类的应用程序编程接口(API)
已被废
弃,因此应不再使用。
@exception
name
说明由成员函数发出的异常。
一个异常采用一
description
成员函数
个标记,并要给出异常的完整类名。
@param
name
用来说明传递给一个成员函数的参数,其中包
括参数的类型/类和用法。
每个参数各有一个标
description
成员函数
记。
@returndescription
成员函数
假设成员函数有返回值,对该返回值进行说明。
应说明返回值的类型
/类和可能的用途。
@since
类、成员函数
说明自从有JDK
以来,该项已存在了多长时
间。
@seeClassName
类、接口、成员函
在文档中生成指向特定类的超文本链接。
可以
数、字段
并且应该采用完全合法的类名。
@seeClassName#member类、接口、成员函
在文档中生成指向特定成员函数的超文本链
functionName
数、字段
接。
可以并且应该采用完全合法的类名。
@versiontext
类、接口
说明特定一段代码的版本信息。
你注释代码的方式很大地影响着你的工作效率以及所有维护改良代码的后继开发者的
工作效率。
在软件开发过程中及早注释代码,会促使你在开始撰写代码之前仔细考虑这些代码,从而带来更高的工作效率。
而且,当你重新阅读数天前或者数星期前所写的代码时,
你可以很容易地判断出当时你是怎么想的,因为这一切都有记录。
开发标准
工程结构说明数据中心FDC工程采用多module式工程结构,其中包含如下工程,各工程模块功能说
明如下:
父模块
模块
依赖模块
主要业务功能描述
FDC
Fdc-common
none
提供FDC工程中公用框架包及公用工具包
FDC
Fdc-monitor
Fdc-common
提供FDC工程中监控告警功能
FDC
Fdc-compute
Fdc-monitor,
提供FDC工程中核心数据运算功能〔包括
Fdc-common
ETL,汇总,分发〕。
FDC
Fdc-report
Fdc-monitor,
提供FDC工程中数据展现功能〔报表展现,
Fdc-common
短信、邮件展现,数据导出等〕
整体包结构说包结构整体遵循按功能不同分包,主要表达出平台的整体架构。
常用的包结构如常用包结构及命名。
2.各个模块包结构,如业务层,控制层,持久层,异常,模型POJO,常量类,工具类等。
3.这里的常用类和公共里的不一样如果各大模块在公共类里没有找到,可以在自己的模块中自行扩展。
到达遵循“开—闭〞原那么。
常用xml配置文件结构,如配置文件包结构。
平台核心的配置文件,存放在包的根目录,如国际化,数据库连接,日志配置,缓存配置,系统级配置等。
自定义xml的scheme,dtd,以及tld文件存放于Web根目录的WEB-INF文件夹下,文件名全部使用小写字母。
工程模块包结构及命名Fdc-common.cache说明:
所有的缓存结构。
例如平台所使用的Oscache和Ehcache缓存技术。
.framework说明:
各个技术层框架类。
如下子包
controller:
控制层提供的共有框架类。
Module:
数据bean公共根底类。
Business:
业务层公共业务控制类,提供通用功能。
Persistence:
数据持久层公共数据操作类。
.utils说明:
存放根本常用的类。
例如文件类,字符串类等。
2.Fdc-moniter,Fdc-compute,Fdc-reportconfigs说明:
该包存放所有关于读取配置信息的类Controller说明:
存放在控制层下面的业务类。
例如登陆,登出,角色切换等。
Module说明:
存放各个业务数据bean类。
下分各个子业务包。
Busines说明:
存放个业务层公共业务控制类。
下分各个子业务包。
Persistence
说明:
数据持久层数据控制类。
下分各个子业务包。
extends说明:
平台扩展功能类。
下分子包,第一级子包名表示扩展功能模块名。
Exceptions
各子工程模块功能包结构按照各个层次结构包分完:
功能包根本分为2个包:
各个层次的接口包。
对于接口的实现包。
配置文件包结构配置文件夹命名为configs,可存放在Web根目录下的WEB-INF文件夹下,也可放在与javaclass文件根目录同级的目录下。
configs目录下主要包含以下目录结构:
commons存放公共的Xml配置文件,如:
struts,spring,mybatis等的xml配置文件。
core/*存放平台核心模块,各功能模块,扩展功能模块的所需的配置文件。
如各模块的spring,struts,mybatis配置文件。
命名规那么
共用类公共用类要求以“功能英文名称(首字母大写)+Utils〞驼峰命名。
例如:
日期的英文名为date,按照规那么要求,命名为:
DateUtils。
业务层业务层接口要求以I+“模块英文名称(首字母大写)〞+Manager命名。
例如:
导航菜单的英文名为navigator,按照规那么要求,命名为:
INavigatorManager;接口的实现类要求以“模块英文名称(首字母大写)〞+ManagerImpl命名。
例如:
导航菜单的英文名为navigator,按照规那么要求,命名为:
NavigatorManagerImpl;
展现层
基类要求以“模块英文名称
(首字母大写)〞+ActionBase命名。
例如:
导航菜单的
英文名为navigator,按照规那么要求,命名为:
NavigatorActionBase;
查询模块列表类要求以
List+“模块英文名称(首字母大写)〞+s+Action
命名。
例如:
导航菜单的英文名为navigator
,按照规那么要求,命名为:
ListNavigatorsAction
;
创立模块对象类要求以
Create+“模块英文名称(首字母大写)〞+Action
命名。
例如:
导航菜单的英文名为navigator
,按照规那么要求,命名为:
CreateNavigatorAction
;
修改模块对象类要求以
Modify+“模块英文名称(首字母大写)〞+Action
命名。
例如:
导航菜单的英文名为navigator
,按照规那么要求,命名为:
ModifyNavigatorAction
;