开发规范rxc.docx
- 文档编号:7583710
- 上传时间:2023-01-25
- 格式:DOCX
- 页数:34
- 大小:94.83KB
开发规范rxc.docx
《开发规范rxc.docx》由会员分享,可在线阅读,更多相关《开发规范rxc.docx(34页珍藏版)》请在冰豆网上搜索。
开发规范rxc
1平台使用向导
1.1命名规范
1.1.1单元编号
Ø单元编号尽量精简
Ø组编号:
子系统英文简称+功能名英文简称例如:
cmisProInfo(或者简称cmisPI)承包商项目信息
Ø组下单元编号:
子系统英文简称+功能名英文简称+[_功能后缀(form,list,query)(英文单词,同时为java的包名)]+[1,2,3,4…]后两项为可选项;
如果单元是简单父单元,也就是说,这个父单元是用来组织其他子单元的,那么该父单元编号不需要增加功能后缀;如:
cmisProInfo;如果有多个这样的简单父单元的话,那么需要增加a,b,c,d等序号区分,如cmisProInfo1,cmisProInfo2…;
否则,单元编号需要增加功能后缀,如cmisProInfo_list,cmisProInfo_query,如果组下有多个list或query或form时,则需要增加1,2,3,4等序号区分,如cmisProInfo_list1,cmisProInfo_list2…。
注:
子系统承包商管理系统,对应的子系统编号和英文简称如下:
承包商管理系统:
cmis
风险评估系统:
rmis
事故调查子系统:
amis
1.1.2提示消息
Ø前台显示错误提醒,错误信息尽量详细,例如:
输入不合法,开始日期必须在结束日期之前,等
Ø业务编号:
msg+”.”+消息类型(e:
ERROR;w:
WARNING;i:
INFO)+”.”+模块单元编号 例:
msg.e.srv001001
Ø平台编号:
FU+六位编号 例:
msg.fu000001
Ø统一向共通组申请,由共通组提供编号,申请同键值申请流程(即提供预想消息代码),此类消息代码前缀为“msg”
Ø消息内容包括:
编号及正文(编号同去掉msg的键值代码,正文中编号为大写)
Ø平台自己的提示需要加入编号。
错误编号用括号”[]”与中文分割。
注:
消息分为三类:
ERROR,WARNING,INFO.
ERROR:
系统显示为红色。
内容为系统提示错误信息。
(例:
数值、英字符、日期等输入检验,业务相关检验,DB异常,并发处理等)。
WARNING:
系统显示为黄色。
内容为系统提示的警告或提示信息。
(例:
对数据库进行增,删,改时的前台提示确认信息)。
INFO:
系统显示为绿色。
内容为系统提示处理成功信息。
(例:
操作数据库更新成功,(XXX行)数据导出成功等信息)。
1.1.3Js创建
Ø子系统名+业务名称+两位编号
例如:
srvPartsDetail01.js
Ø通用JS中间+Cmn
例如:
srvCmn01.js
Ø注:
编码格式为UTF-8
注:
针对于列表,单选或多选未选中情况下进行提交时,使用js前台检查,共通的js已经创建在fastunit/domain/cmn/下Cmn01.js调用方法deleteCheck('url','unitID')。
1.1.4Js编写规范
Ø编写js时应注意IE兼容性问题,建议使用mootools.js(1.2.4)平台已经将mootools.js引入到单元中。
例如:
获取当前页面ID为”aa“的元素
Ø正常可以写为document.getElementById(‘aa’);
Ømootools可写为$(‘aa’);
1.2表
1.2.1表创建
Ø所有的业务表创建在app域下;当在其他域中引用表时,表达式为app|tableName。
1.2.2表管理
Ø通常不在平台中创建表,而是在数据库中创建表之后导入平台;输入表名,如果导入的表不是来自其他的数据库则数据源为空,点击导入(不能导入相同的表名)。
下图为SRV_ACCOUNTRECV_TB导入平台;需要注意以下几点。
Ø数据类型:
必须与数据库字段类型保持一致。
Ø值生成器:
例如createdate创建时间,选择值生成器是为了不必程序处理,平台提供赋值功能,但数据类型是时间戳,值生成器也必须是时间戳,否则不会自动赋值。
Ø生成规则:
选择值生成器后,要选择生成规则,例如,创建时间生成规则选为新增;表示在新增时才可按值生成器赋值。
修改时间选择全部;表示新增、修改数据时都将按值生成器赋值。
Ø版本字段:
选择updatecount更新次数,唯一用来控制并发字段。
2后台开发向导
2.1命名规范
2.1.1Package命名
2.1.2Package的名字统一用小写英文单词书写
ØPackage的名字=包前缀+包名
Ø包前缀如下:
com.rxc+系统名+子系统
Ø包名:
程序功能的英文名(小写)如下:
Øpackagecom.rxc.amis.action;
2.1.3Class命名
Ø采用完整的英文描述符,所有单词的第一个字母大写
Ø类名=功能码+程序功能的英文名+类种类
Ø功能码(各功能名的缩写)例如:
Vehicle--VhcService-->Srv
Ø类种类:
Action/UI/Help/MapListFactory/SqlProvider等
Ø例如下:
Ø1)ActionLoginAction.java
Ø2)HelpLoginHelp.java
Ø3)UILoginUI.java
Ø4)MapListFactoryLoginMLF.java
Ø5)SqlProviderLoginSP.java
2.1.4方法命名
Ø第一个英文单词小写,后续每个英文单词首字母大写
Ø(说明:
构造函数的命名应与类名保持一致)例如:
getInboardColor()
2.1.5变量命名
Ø类型标识符小写,后续每个英文单词首字母大写
Ø变量名=类型标识符+描述词
变量类型
标示符
Int
i
Short
sh
Long
l
Float
f
Double
d
Boolean
b
Char
c
Byte
by
String
str
List
lst
Bigdecimal
bd
Biginteger
bi
Date
dt
一般对象
o
Ø描述词为一个简短且意思明确的英文单词
Ø如果通过以上规则,还出现同名的变量,可以在变量后添加后缀来解决,后缀以下划线"_"来连接
Ø例如:
intiLoop;StringstrUserName;
Ø数组应该总是用下面的方式来命名:
Øbyte[]byDataArray;
2.1.6常量命名
Ø常量的名字应该都大写,单词之间用下划线分隔
Ø例如:
staticfinalintMAX_WIDTH=999;
Ø不变化的定义成常量类。
每个域一个,后期修改。
2.1.7参数命名
Ø参数的名字必须跟变量的命名规范一致,
Ø参数的名字规则为第一个单词首字母小写,其后的单词的每个字母大写
Ø例如:
getColorDetail(StringstrColorCode)
2.2JAVA编码规范
2.2.1JDK版本要求
ØJdk1.5或以上。
注意:
所有的文本文件(js文件以及java文件,存储过程等)的编码格式都为UTF-8
2.2.2编码规定
2.2.2.1Import规则
Øimport语句不要直接引用类
例如:
importjava.util.Vector;
importjava.util.Date;/*错误*/
importjava.util.*;/*正确*/
引用顺序:
1>.引用java标准类库
2>.引用javax扩展类库
3>.引用马自达项目相关类库
4>.引用其他第三方类库
每一类import类库之后要加上一个空行
2.2.2.2格式约定
Ø缩进
本项目要求缩进采用4个半角空格
不要在源文件中使用Tab字符
行尾不要保留没有意义的空格
如果因为行过长发生换行,语句尚未结束的情况下,缩进为4个空格
Ø换行
前括号"{"不得出现在行首,只能出现在行尾,即"{"不得另起一行
"else"必须在后括号"}"之后,不得另起一行
"while"必须在后括号"}"之后,不得另起一行
"catch"必须在后括号"}"之后,不得另起一行
"finally"必须在后括号"}"之后,不得另起一行
一行内不得出现两条语句。
例如:
arrayInit[0]=7;
arrayInit[1]=8;/*正确*/
arrayInit[0]=7;arrayInit[1]=8;/*错误*/
示例代码:
publicclassUntitled1
extendsObject
implementsComparable{
publicintcompareTo(Objectsomething){
return3;
}
publicbooleancalcStringValue(intlength,StringvalueToTestFor,
booleantrim)
throwsException{
int[]arrayInit=newint[]{234,34,234,45};
if(trim){
if(valueToTestFor==null){
returnfalse;
}else{
valueToTestFor=valueToTestFor.trim();
}
}elseif(length<0){
length=5;
}else{
try{
length=234/34+
Integer.parseInt(valueToTestFor+Integer.toBinaryString(length)+
Integer.toHexString(length-4));
}catch(NumberFormatExceptionex){
throw(Exception)ex;
}finally{
returnfalse;
}
}
do{
switch(length){
case2:
break;
default:
arrayInit[0]=7;
arrayInit[1]=8;
break;
}
arrayInit[0]++;
}while(arrayInit[0]<3);
returntrue;
}
}
Ø空格
分号应该紧跟行尾最后一个字符,分号与行尾字符之间不应该有空格
方法名应该紧跟左括号"(",方法名与左括号之间不应该有空格
关键字、保留字跟左括号之间应该有一个空格
两个连续左括号之间应该有一个空格
左括号与同行后续内容之间不应该有空格
逗号与同行后续内容之间应该有一个空格
分号与同行后续内容之间应该有一个空格
前括号"{"与同行前面内容之间应该有一个空格
强制类型转换与同行后续内容之间应该有一个空格
算数运算符、逻辑运算符连接的两个元素之间应该用空格分隔
示例代码:
publicclassUntitled1{
publicvoidprintData(intx,inty){
int[]j=newint[y];
ArrayListlist=newArrayList();
for(inti=0;i j[i]=x+y; list.add(newInteger(x*i)); System.out.print((Integer)list.get(i)); } } } Ø空行 声明package之后有一个空行 声明import之后有一个空行 类内部全局变量声明与方法之间有一个空行 类内部各方法之间有一个空行 方法内部变量声明与正式代码之间有一个空行 方法内部代码各逻辑之间有一个空行 类内部不得出现连续两个及两个以上空行的情况 示例代码: packagecom.borland.samples; importjava.util.*; importcom.borland.test.*; publicclassUntitled1{ privateintheight; privateintwidth; publicvoidsetHeight(intheight){ this.height=height; } publicintgetHeight(){ returnheight; } } Ø行宽 行宽不得超出80个字符 2.2.2.3强调封装性 Ø根据OO编程思想,一个封装良好的类应该是所有的成员变量都是私有的,外部只能通过公有的接口方法来实现对内部属性的访问。 Ø因此,类内部所有的全局变量应该声明为private类型的 Ø同时设置public的get和set方法,实现从外部对此变量的访问 Ø示例代码: ØprivateStringstrStatus=""; ØpublicStringgetStatus(){ ØreturnstrStatus; Ø} ØpublicvoidsetStatus(StringstrInStatus){ ØstrStatus=strInStatus; Ø} Ø禁止使用内部类 类的声明最好不要使用final类。 2.2.3程序LOG 2.2.3.1级别描述 Ø5DEBUG测试信息 Ø4INFO正常运行信息 Ø3WARN可能的问题 Ø2ERROR错误信息 Ø1FATAL致命问题 (建议使用2,3,4,5四种)。 在捕捉异常时,输出errorLog信息。 数据库操作SQL文以及事件正常处理完成时,输出infoLog信息。 方法开始,结果时输出debugLog信息。 2.2.3.2样例代码 Ø程序Log,使用slf4j Øimportorg.slf4j.Logger; Øimportorg.slf4j.LoggerFactory; ØprivatestaticfinalLoggerlog=LoggerFactory.getLogger(类.class); Ølog.error("错误信息"); 2.2.3.3禁止事项 Ø最终提交程序版本不能包含system.out..打印日志等语句。 2.2.4注释 2.2.4.1注释品质要求 Ø注释品质要达到使新加入项目的PG能够独立看懂代码为最低要求 Ø注释行数要达到代码总行数的20%以上 Ø声明有重要作用的变量,调用函数,进入逻辑分支,进入循环等情况下必须加注释 Ø把javadoc的标准化集合进来 2.2.4.2版权声明 在各文件头添加如下版权声明 //////////////////////////////////////////////////////////////////////////// 2.2.4.3注释规则 Ø类 类的注释必须包含如下的内容: 类的简要描述,可以采用中文或英文,创建日期,创建的人前面加入@author, 当前的版本号前面加入@version 例: /** *经销店可以在系统上指定TFL发车的优先度 * 复杂的处理添加详细说明
*@authorrxcadmin
*@version1.00,2007/08/10新规作成
*@authorrxcadministrator(da)(变更时)
*@version1.10,2007/0910改善案件名(变更时)
**/
publicclassVlgDOTFLPriorityModelextendsCmnInfoModel{
…………………
Ø变量、方法
对类中变量声明的注释请使用注释符"//"如下:
privateTfpSubmitbtnReturn=null;
对于public的成员变量,使用块注释方法加注释,以便可以生成javadoc文档。
/**
*成员变量含义
*/
PublicTfpSubmitbtnReturn=null;
每个类的方法声明及方法内的代码都要有注释,其中类的方法注释含如下内容:
方法功能或作用的简要描述
参数数据类型,前面加入@param
返回数据类型,前面加入@return
抛出异常说明,前面加入@exception
例:
/**
*获得提取文件的结构体方法说明.
*@paramextStructCmnFontExtractionStruct参数说明
*@paramstrRootDirrealfiledir参数说明
*@returnStringexecuteresult返回内容说明
*@exceptionSQLException异常说明
*/
publicStringgetExtractDetail(CmnFontExtractionStructextStruct,StringstrRootDir)
throwsSQLException{
………………….
//Rollback
connection.rollback();
}
2.2.5常用类的使用
2.2.5.1Acion
Ø执行命令行:
继承DefaultAction
publicclassSavePartsActionextendsDefaultAction{
publicvoiddoAction(DBdb,ActionContextac)throwsException{
//获取命令行配置的table
Tabletable=(Table)ac.getTables().get(0);
List
ColumnRowrow=rows.get(0);
//time赋值
row.set("time","2009-09-09");
//调用命令行保存
super.doAction(db,ac);
}
}
Ø执行ajaxAction:
实现Action
publicclassGetPartsAjaxActionimplementsAction{
publicActionContextexecute(ActionContextac)throwsException{
Ajaxajax=newAjax(ac);
//获取零件代码
StringpartsCode=ac.getRequestParameter("partsCode");
//赋值
ajax.setValueByName(0,"pat004.order.list.partscode",partsCode);
ajax.send();
returnac;
}
}
Ø涉及处理数据库并没有执行命令行,可继承TransactionAction
publicclassSavePartsOrderActionextendsTransactionAction{
publicvoiddoAction(DBdb,ActionContextac)throwsException{
//保存主表
Tabletable=newTable("app","PAT_PARTSORDER_M");
for(inti=0;i StringorderNo=data.getRow(i).get("orderno"); StringfactoryCode=data.getRow(i).get("factorycode"); StringorderSum=data.getRow(i).get("ordersum"); StringordersType=data.getRow(i).get("orderstype"); ColumnRowrow_m=table.addInsertRow(); row_m.set("orderno",orderNo);//订单号 row_m.set("orderstype",ordersType);//供应商代码 row_m.set("companycode",companyCode);//公司代码 } db.save(table); } } 2.2.5.2Help Ø当业务比较复杂,避免一个类里的代码过多,可写一个辅助类。 //用单表查询作为样例,一般涉及到多表查询逻辑复杂时可创建此类 publicclassPartsrsdiinHelp{ //参数为零件代码 publicStringgetSql(Stringpartscode){ StringBuffersb=newStringBuffer(); sb.append("select*fromPAT_PARTSIN_TBwhere1=1"); //零件编码 if(! Checker.isEmpty(partscode)){ sb.append("andpartscode='"); sb.append(partscode); sb.append("'"); } //返回SQL returnsb.toString(); } } 2.2.5.3公共方法类 Ø公共方法类示例 publicclassUtilimplementsjava.io.Serializable{ publicvoidSrvCommonCheck(){} //默认除法运算精度 privatestaticfinalintDEF_DIV_SCALE=10; /** *提供精确的加法运算。 *@paramv1被加数 *@paramv2加数 *@return两个参数的和 */ publicstaticdoubleadd(doublev1,doublev2){ BigDecimalb1=newBigDecimal(Double.toString(v1)); BigDecimalb2=n
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 开发 规范 rxc