开发规范rxc.docx

上传人:b****6 文档编号:7583710 上传时间:2023-01-25 格式:DOCX 页数:34 大小:94.83KB
下载 相关 举报
开发规范rxc.docx_第1页
第1页 / 共34页
开发规范rxc.docx_第2页
第2页 / 共34页
开发规范rxc.docx_第3页
第3页 / 共34页
开发规范rxc.docx_第4页
第4页 / 共34页
开发规范rxc.docx_第5页
第5页 / 共34页
点击查看更多>>
下载资源
资源描述

开发规范rxc.docx

《开发规范rxc.docx》由会员分享,可在线阅读,更多相关《开发规范rxc.docx(34页珍藏版)》请在冰豆网上搜索。

开发规范rxc.docx

开发规范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);

Listrows=table.getRows();

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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1