数据中心产品开发综合规范.docx
- 文档编号:16049007
- 上传时间:2023-07-10
- 格式:DOCX
- 页数:28
- 大小:55.07KB
数据中心产品开发综合规范.docx
《数据中心产品开发综合规范.docx》由会员分享,可在线阅读,更多相关《数据中心产品开发综合规范.docx(28页珍藏版)》请在冰点文库上搜索。
数据中心产品开发综合规范
数据中心产品开发规范
XXXX公司
XX业务部
XXXX年XX月
文档阐明
本文档所涉及到文字、图表等,仅限于内部使用,未经双方书面允许,请勿扩散到第三方。
文档属性
属性
内容
客户名称:
项目名称:
文档主题:
文档编号:
文档版本:
版本日期:
文档状态:
作者:
文档变更
版本
修订日期
修订人
描述
文档送呈
单位
姓名
目
审视
参阅
1概述
本文提供一整套编写高效可靠Java代码原则、商定和指南。
它们以安全可靠软件工程原则为基本,使代码易于理解、维护和增强。
并且,通过遵循这些程序设计原则,你作为一种Java软件开发者生产效率会有明显提高。
经验证明,若从一开始就花时间编写高质量代码,则在软件开发阶段,对代码修改要容易诸多。
最后,遵循一套通用程序设计原则将带来更大一致性,使软件开发团队效率明显提高。
1.1最主线原则
❒运用常识
当找不到任何规则或指引方针,当规则明显不能合用,当所有办法都失效时侯:
运用常识并核算这些基本原则。
这条规则比其他所有规则都重要。
❒驼峰命名法
驼峰命名法(Camel-Case):
就是当变量名或函式名是由一种或各种单字连结在一起,而构成唯一辨认字时,第一种单字以小写字母开始;第二个单字首字母大写或每一种单字首字母都采用大写字母,例如:
myFirstName、myLastName,这样变量名看上去就像骆驼峰同样此起彼伏,故得名。
驼峰命名法命名规则可视为一种惯例,并无绝对与强制,目是增长辨认和可读性。
2Java技术规范
2.1平台使用有关技术
平台使用框架包分核心框架包和其她必要框架包,各框架包自身所依赖开源包不做列举,由框架包自身信息来定。
2.1.1基本核心框架包
平台采用Spring+Struts2+myBatis三层架构作为基本框架。
(JDK1.6+)。
参照如下:
名称
版本
备注
Struts2
2.2.1
Spring
3.0.5
mybatis-core
3.1.1
不支持跨数据库建议,当前开发在mysql上,现网环境在db2上
mybatis-spring
1.1.1
MySQL
5.0
Tomcat
7.0
jQuery
1.8
2.1.2其她框架包
除基本框架外,平台其她将采用某些框架包,参照如下:
(JDK1.5+)
名称
版本
备注
SpringSecurity
2.0.4
ApacheCommons
2.6
惯用工具包等
SLF4J
1.6.1
ApacheLogginglog4j
1.2.15
ApacheAnt
1.7.1
Oscache
2.4.1
XMemcache
1.2.5
C3P0
0.9.1
Dom4j
2.0
commons-beanutils
1.8.3
Mybatis-spring
1.1.1
Hadoop-core
0.20.2-cdh3u5
Hive-cli
0.7.1-cdh3u5
Hbase
0.90.6-cdh3u5
2.2程序设计原则
Java程序设计原则很重要,因素在于它将提高开发团队各成员代码一致性。
一致性提高会使代码更易理解,这意味着它更易开发和维护。
从而减少了应用程序总开发成本。
你必要紧记是:
你Java代码在你已离开并开始另一种项目之后,会保存相称长一段时间。
因而开发过程中一种很重要目的就是要保证在开发成员或开发团队之间工作可以顺利交接,不必花很大力气便能理解已编写代码,以便继续维护和改进此前工作。
如果代码难以理解,很有也许被废弃和重写。
s
2.2.1命名商定
咱们将在整个原则中讨论命名商定,如下是几种基本点:
❒使用可以精确阐明变量/字段/类完整英文描述符
例如,采用类似firstName,grandTotal或CorporateCustomer这样名字。
虽然象x1,y1或fn这样名字很简短,输入起来容易,但是咱们难以懂得它们代表什么、成果是什么含义,因而使代码难以理解、维护和改进。
❒采用该领域术语
如果顾客称她们“客户”(clients)为“顾客”(customers),那么就采用术语Customer来命名这个类,而不用Client。
许多程序开发者会犯一种错误是,不去使用工业或领域里已经存在着很完美术语时,却生造出某些普通词汇。
❒采用大小写混合,提高名字可读性
普通应当采用小写字母,但是类和接口名字首字母,以及任何中间单词首字母应当大写。
❒尽量少用缩写,但如果一定要使用,就要谨慎地使用
这意味着应当保存一种原则缩写列表,明智地从中选用,并且在使用时保持一致。
例如,想对单词“number”采用缩写,那么可从nbr,no或者num中选用一种,阐明一下采用了哪一种(详细是哪个倒无所谓),并且只使用这一种形式。
❒避免使用长名称(不超过15个字母)
例如:
PhysicalOrVirtualProductOrService看起来似乎是个不错类名,但是名字太长,应当考虑重新给它起个短一点名字,例如象Offering。
❒避免使用相似或者仅在大小写上有区别名字
例如,不应同步使用变量名persistentObject和persistentObjects及anSqlDatabase和anSQLDatabase这样名称
❒避免使用下划线作为名字首末字母
如下划线为首末字母名字普通为系统保存,除预解决定义之外,普通不用作顾客命名。
更重要是,下划线经常导致麻烦并且难输入,因此尽量避免使用。
2.2.2包名,类名,办法名,属性名,常量名命名商定
❒包命名
包命名所有使用小写英文字母,中间不容许有数字下划线等特殊字符。
❒类,接口命名
类,接口名开头使用大写英文字母,多单词使用驼峰命名法。
类名中不要使用下划线和数字等特殊字符,对的写法示例:
HibernateDaoSupport。
如果表达特殊功能类,在类名末尾加上所要表达功能英文名称,如:
****Listener,表达监听器等。
❒办法命名
办法命名使用驼峰命名法,办法名中间不要使用下划线和数字等特殊字符,对的示例:
processing()。
办法参数以及办法内部局部参数可自定,符合规定就行。
❒特殊Bean类属性命名商定
Bean属性命名规则严格使用驼峰命名法,不容许使用下划线,名字长度最长不要超过15个字符,的确需要长名字时,恰当缩写某些英文字母。
❒常量属性命名
常量命名规则普通为常量名所有采用大写字母,多单词之间使用下划线隔开,不容许使用数字等特殊字符,并且常量声明一定要是staticfinal。
❒普通类属性命名
普通类属性命名除常量依照常量命名法外,其她属性名字使用“英文名字(首字母大写)”命名,多单词可使用驼峰命名法或用下划线隔开。
2.2.3注释商定
本文还会对注释进行商定,有关注释风格可以在eclipse中导入codetemplates.xm文献。
如下是几种基本点:
❒注释应当增长代码清晰度
代码注释目是要使代码更易于被同步参加程序设计开发人员以及其她后继开发人员理解。
❒如果你程序不值得注释,那么它也很也许也不值得运营。
❒保持注释简洁
最佳注释应当是简朴明了注释。
注释不必洋洋洒洒,只需提供足够信息,使别人可以理解你代码。
❒先写注释,后写代码
写代码注释最佳办法是在写代码之前就写注释。
这使你在写代码之前可以想想代码功能和运营。
并且这样保证不会漏掉注释。
另一种办法是边写代码边写注释。
由于注释可以使代码更易理解,因此在程序开发过程中,也可以运用这一点。
如果打算花些时间写注释,那么至少你应从这个过程中获得些什么。
❒注释信息不但要涉及代码功能,还应给出因素
例如,下面例1中代码显示金额在$1,000以上(涉及$1,000)定单可予以5%折扣。
为什么要这样做呢?
难道有一种商业法则规定大额定单可以得到折扣吗?
这种给大额定单特殊是有时限呢,还是始终都这样?
最初程序设计者与否只是由于慷慨大度才这样做呢?
除非它们在某个地方(或者是在源代码自身,或者是在一种外部文档里)被注释出来,否则你不也许懂得这些。
2.2.4迅速浏览JavaDoc
Sun公司JavaDevelopmentKit(JDK)中有一种名为javadoc程序。
它可以解决Java源代码文献,并且为Java程序产生HTML文献形式外部注释文档。
Javadoc支持一定数目的记,标记注释文档中各段起始位置保存字。
详情请参照JDKjavadoc文档。
标记
用于
目
@authorname
类、接口
阐明特定某一段程序代码作者。
每一种作者各有一种标记。
@deprecated
类、成员函数。
阐明该类应用程序编程接口(API)已被废弃,因而应不再使用。
@exceptionnamedescription
成员函数
阐明由成员函数发出异常。
一种异常采用一种标记,并要给出异常完整类名。
@paramnamedescription
成员函数
用来阐明传递给一种成员函数参数,其中涉及参数类型/类和用法。
每个参数各有一种标记。
@returndescription
成员函数
若成员函数有返回值,对该返回值进行阐明。
应阐明返回值类型/类和也许用途。
@since
类、成员函数
阐明自从有JDK1.1以来,该项已存在了多长时间。
@seeClassName
类、接口、成员函数、字段
在文档中生成指向特定类超文本链接。
可以并且应当采用完全合法类名。
@seeClassName#memberfunctionName
类、接口、成员函数、字段
在文档中生成指向特定成员函数超文本链接。
可以并且应当采用完全合法类名。
@versiontext
类、接口
阐明特定一段代码版本信息。
你注释代码方式很大地影响着你工作效率以及所有维护改进代码后继开发者工作效率。
在软件开发过程中及早注释代码,会促使你在开始撰写代码之前仔细考虑这些代码,从而带来更高工作效率。
并且,当你重新阅读数天前或者数星期前所写代码时,你可以很容易地判断出当时你是怎么想,由于这一切均有记录。
2.3开发规范
2.3.1项目构造阐明
数据中心FDC项目采用多module式项目构造,其中包括如下项目,各项目模块功能阐明如下:
父模块
模块
依赖模块
重要业务功能描述
FDC
Fdc-common
none
提供FDC项目中公用框架包及公用工具包
FDC
Fdc-monitor
Fdc-common
提供FDC项目中监控告警功能
FDC
Fdc-compute
Fdc-monitor,Fdc-common
提供FDC项目中核心数据运算功能(涉及ETL,汇总,分发)。
FDC
Fdc-report
Fdc-monitor,Fdc-common
提供FDC项目中数据呈现功能(报表呈现,短信、邮件呈现,数据导出等)
2.3.2整体包构造说
包构造整体遵循按功能不同分包,重要体现出平台整体架构。
1.惯用包构造如2.3.2惯用包构造及命名。
2.各个模块包构造,如业务层,控制层,持久层,异常,模型POJO,常量类,工具类等。
这里惯用类和公共里不同样如果各大模块在公共类里没有找到,可以在自己模块中自行扩展。
达到遵循“开—闭”原则。
3.惯用xml配备文献构造,如2.3.4配备文献包构造。
4.平台核心配备文献,存储在包根目录,如国际化,数据库连接,日记配备,缓存配备,系统级配备等。
5.自定义xmlscheme,dtd,以及tld文献存储于Web根目录WEB-INF文献夹下,文献名所有使用小写字母。
2.3.3项目模块包构造及命名
1.Fdc-common
❒mon.cache
阐明:
所有缓存构造。
例如平台所使用Oscache和Ehcache缓存技术。
❒mon.framework
阐明:
各个技术层框架类。
如下子包
controller:
控制层提供共有框架类。
Module:
数据bean公共基本类。
Business:
业务层公共业务控制类,提供通用功能。
Persistence:
数据持久层公共数据操作类。
❒mon.utils
阐明:
存储基本惯用类。
例如文献类,字符串类等。
2.Fdc-moniter,Fdc-compute,Fdc-report
❒configs
阐明:
该包存储所关于于读取配备信息类
❒Controller
阐明:
存储在控制层下面业务类。
例如登陆,登出,角色切换等。
❒Module
阐明:
存储各个业务数据bean类。
下分各个子业务包。
❒Busines
阐明:
存储个业务层公共业务控制类。
下分各个子业务包。
❒Persistence
阐明:
数据持久层数据控制类。
下分各个子业务包。
❒extends
阐明:
平台扩展功能类。
下分子包,第一级子包名表达扩展功能模块名。
❒Exceptions
2.3.4各子项目模块功能包构造
按照各个层次构造包分完:
功能包基本分为2个包:
1.各个层次接口包。
2.对于接口实现包。
2.3.5配备文献包构造
配备文献夹命名为configs,可存储在Web根目录下WEB-INF文献夹下,也可放在与javaclass文献根目录同级目录下。
configs目录下重要包括如下目录构造:
❒commons
存储公共Xml配备文献,如:
struts,spring,mybatis等xml配备文献。
❒core/*
存储平台核心模块,各功能模块,扩展功能模块所需配备文献。
如各模块spring,struts,mybatis配备文献。
2.4命名规则
2.4.1共用类
公共用类规定以“功能英文名称(首字母大写)+Utils”驼峰命名。
例如:
日期英文名为date,按照规则规定,命名为:
DateUtils。
2.4.2业务层
❑业务层接口规定以I+“模块英文名称(首字母大写)”+Manager命名。
例如:
导航菜单英文名为navigator,按照规则规定,命名为:
INavigatorManager;
❑接口实现类规定以“模块英文名称(首字母大写)”+ManagerImpl命名。
例如:
导航菜单英文名为navigator,按照规则规定,命名为:
NavigatorManagerImpl;
2.4.3呈现层
❑基类规定以“模块英文名称(首字母大写)”+ActionBase命名。
例如:
导航菜单英文名为navigator,按照规则规定,命名为:
NavigatorActionBase;
❑查询模块列表类规定以List+“模块英文名称(首字母大写)”+s+Action命名。
例如:
导航菜单英文名为navigator,按照规则规定,命名为:
ListNavigatorsAction;
❑创立模块对象类规定以Create+“模块英文名称(首字母大写)”+Action命名。
例如:
导航菜单英文名为navigator,按照规则规定,命名为:
CreateNavigatorAction;
❑修改模块对象类规定以Modify+“模块英文名称(首字母大写)”+Action命名。
例如:
导航菜单英文名为navigator,按照规则规定,命名为:
ModifyNavigatorAction;
❑删除模块对象类规定以Remove+“模块英文名称(首字母大写)”+Action命名。
例如:
导航菜单英文名为navigator,按照规则规定,命名为:
RemoveNavigatorAction;
❑对模块对象操作类规定以“模块英文名称(首字母大写)”+Operator+Action命名。
例如:
导航菜单英文名为navigator,按照规则规定,命名为:
NavigatorOperatorAction。
2.4.4模型层
❑模型层存储是实体类,规定以“模块实体英文名称(首字母大写)”命名。
例如:
导航菜单英文名为navigator,按照规则规定,命名为:
Navigator;
❑属性字段参照Bean属性命名规则。
2.4.5持久层
❑dao接口规定以I+“模块英文名称(首字母大写)”+DAO命名。
例如:
导航菜单英文名为navigator,按照规则规定,命名为:
INavigatorDAO;
❑接口实现类规定以“模块英文名称(首字母大写)”+DAOImpl命名。
例如:
导航菜单英文名为navigator,按照规则规定,命名为:
NavigatorDAOImpl。
2.4.6XML配备
重要配备文献涉及spring.xml,struts.xml,mybatis.xml等。
由于这些文献都是分包存储,因此配备文献统一为spring.xml,struts.xml,mybatis.xml。
如果模块内spring,struts,mybatis配备较多时,需要分文献来写,那么可直接在spring,struts,mybatis背面直接加连接号“-”+名字来命名。
如spring-common.xml。
各模块mybatissqlmap配备文献放到相应模块Model包下,一种域模型相应一种sqlMap配备文献,如域模型名为Item,则与域模型相相应sqlMap文献名为Item.xml。
1、spring.xml平台Spring有关组件配备。
Module
❑需要新建一种顾客管理模块managerUserModule,设立其父节点是后台管理树根节点,也就是设立parentModeulId为#号,然后它子节点可以设立相应父节点为managerUserModule,。
❑ationURL:
指用来访问这个有关模块命名空间。
❑viewType:
查看类型,是指要阐明此模块节点是要在前台显示还是后台管理。
❑imgURL:
指当咱们把这些模块展示在有关树上显示图标链接。
Fuction
❑拟定包括功能,如增长顾客:
addUser。
Method
❑增长顾客入口办法:
saveAddUser。
❑actionUR:
指这个入口办法在当前模块命名空间下访问地址createUser.加一种点是用来判断最后后缀,如果是点结尾程序会自动补齐访问链接后缀,如果是其她后缀直接访问这个链接。
❑isDefault:
与否默认入口,一种模块功能只能有一种办法作为默认入口。
2、struts.xml平台struts组件有关配备,开发有关模块时候注意有关规范
❑package:
咱们可以在模块中定义包以避免命名空间重复,命名规则:
struts-xxx(模块名层)。
❑namespace:
有关模块命名空间。
这里涉及几种需要注意地方:
这个链接会和权限关联由过滤器判断命名空间管理权限功能。
凡是命名空间在/public/common这个途径下系统定义为前台没有权限管理访问链接,凡是命名空间在/manage/common这个途径下系统定义为后台没有权限管理访问链接。
在这个两个途径下面访问地址,过滤器不作权限判断。
其他访问地址会依照rights中配备定义权限进行过滤。
❑extends:
在struts配备中需要考虑各种拦截器和错误解决跳转,配备在struts-interceptor.xml这个文献。
Action
❑name:
定义action被访问id命名规范与定义java变量同样规范。
❑class:
就是咱们在spring.xml文献已经配备了注入actionspringbeanid。
❑result:
struts解决跳转,两种跳转方式dispatcher转向和redirect重定向。
❑interceptor-ref:
所使用拦截器。
在struts-interceptor.xml这个文献有有关注释。
3、mybatis.xml,平台myBATIS有关组件配备
❑配备sqlMap元素resource属性,批示域模型相应SQL配备文献包全途径。
4、myBATISSQLMap文献
配备域模型增删改查SQL语句,存储过程等;配备文献名与域模型同名。
❑sqlMap根元素namespace属性,设立成域模型自身名字。
如域模型名字为Item.java,那么namespace属性名就为Item。
❑typeAlias,resultMap,cacheModel,select,insert,delete,update等元素id属性名以“自定英文名字(首字母小写)”命名,多单词使用驼峰命名法。
❑在使用select,insert,update,delete元素配备增删改查时,id属性名字规则为,selectid属性名以get***开头,insert以add***开头,update以update***开头,delete以delete***开头,配合事务中配备,多单词使用驼峰命名法。
可在这些元素中使用复合查询配备。
❑procedure元素,id属性名以“功能英文名(首字母小写)+Procedure”命名,使用驼峰命名法。
❑sql元素id属性名以“自定义英文名字(首字母小写)”命名。
各种单词可使用下划线或使用驼峰命名法。
❑statement元素id属性名与sql元素命名规则一致。
statement重要配备复合查询。
5、ehcache.xml平台ehcache缓存实现配备文献
6、system-config.xml平台系统配备文献
2.4.7资源文献
平台properties以及国际化资源配备文献
❑commons-logging.properties公共日记配备文献。
❑config.properties平台数据连接,基本参数配备等。
❑log4j.properties平台日记输出保存等有关设立配备文献。
❑quartz.properties平台调度组件有关设立配备文献。
❑oscache.properties平台oscache缓存实现配备文献
❑struts.properties平台struts组件有关系统配备文献(国际化、上传等)。
国际化资源文献使用原则JSTL标签绑定。
通过不同local读取不同语言有关资源,国际化资源文献中key定义规则:
模块名称.功能名称.key描述,但此所有小写,各种单词之间用下划线分割。
国际化资源配备文献进行分割解决,属于本功能模块国际化资源文献放到本模块根包下,在JSP中使用JSTL标签 messagebundle=””/>调用,在文献开头处加上 setBundlebasename=””/>设立。 全局国际化配备文献如下(直接设立在struts.properties文献中): ❑messages开头资源文献包括有关国际化资源内容。 ❑exceptionMessages开头资源文献包括异常解决描述国际化资源内容。 各功能模块国际化配备文献使用如下: ❑文献名使用“功能模块名+”_”+messages”命名,如search_message.properties。 ❑在JSP文献最开头处使用标签 setBundlebasename=””/>设立全局bundle,其中basename属性名为模块资
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据中心 产品 开发 综合 规范