




已阅读5页,还剩37页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
编码规范编码规范第 1.0 版2009年4月16日修订履历修订日内容担当2009/4/16初版。目录1. 前言42. HTML开发规范52.1 HTML的记述53. JavaScript开发规范83.1 基本方针83.2 命名标准93.3 注释103.4 JavaScript的记述114. JSP开发规范124.1 基本方针124.2 命名标准144.3 注释144.4 JSP的记述155. JAVA开发规范165.1 命名标准175.2 注释215.3 JAVA的记述265.4 字符集386. SQL开发规范396.1 SQL的记述401. 前言本书展示的是基于JAVA语言开发的项目,编程应遵循的编码规范和记述规则。其目的是便于制作出具有良好可读性、可维护性,且在形式上统一的程序。本书记述了HTML以及CSS(层叠式样式表)、JavaScript、JSP、JAVA语言的规范。2. HTML开发规范以下为HTML的开发规范。2.1 HTML的记述以下为HTML的记述方法。2.1.1 所有记述方法(1) 元素、属性的书写方法 元素名称全部采用大写的半角英文字母。 属性名、属性值(中文除外)全部采用小写的半角英文和数字。 但是、属性的值为路径名、文件名、类选择器等时,记述本来的值(记述例1)。不使用前缀。属性变更后需修改所有相应的地方,很有可能产生错误,所以不使用前缀。记述例1: 属性值使用”(引号)围起来。(2) 转义符的使用 对特殊符号,使用文字转义符或数值转义符。 以下为主要的文字转义符:文字转义符表示符号<&"“ (空白)®2.1.2 HTML基本信息(1) 文档型声明(DOCTYPE声明) 记录所使用的HTML的版本号。(2) 字符集指定 为防止在浏览器上出现乱码,指定以下字符集。2.1.3 标题 各画面的标题组成中要添加功能名。 标题长度为20个字符以内。2.1.4 链接(1) 指定链接名 指定链接名以便明了链接地址的内容。 指定内容标题、一览页的标题等。(2) 指定A元素的标题属性 在A元素里、通过标题属性来说明连接地址。记述例: TTNI-C(3) 使用时,不换行,且记述在作为链接对象的字符串和图标后。2.1.5 图片(1) 图片文件的种类 使用GIF、JPEG、PNG的其中一种。2.1.6 字体(1) 指定字体 指定标准字体为浏览器的默认字体,不指定不同机种的字体。 字体的大小、粗体、斜体、颜色等,根据样式表来指定。3. JavaScript开发规范以下为JavaScript的开发规范。3.1 基本方针3.1.1 适用场合JavaScript基本上在实现以下功能的场合下使用。 指定业务流程的迁移位置。 指定从错误画面返回时的迁移位置。 子画面的打开关闭。 确认、选择对话框的显示。 复选框的ON/OFF控制等。 显示MESSAGE等。 输入项目的检查等。 其他特殊操作等。3.2 命名标准以下为JavaScript的命名标准。3.2.1 变量名 遵循Java开发规范的类变量、实例变量的命名。3.2.2 函数名 遵循Java开发规范的方法的命名。3.3 注释以下为JavaScript的注释标准。 注释的开始位置,要与相应程序的记述位置对齐。 程序部分,要记述每个处理单位的处理概要。 程序部分的注释,要写在程序执行的前一行。 为了在浏览器的源代码显示中不显示出注释,作为JSP的注释来记述。 JavaScript脚本文件中记述的头注释,如下所示。记述例:/=/ 项目行追加函数/ 【 输入 】projectCd 项目代码/ projectNm 项目名/ 【返回值】false/ 【制作者】T.A/ 【制作日】2008/09/01/ 【更新者】/ 【更新日】/=%function addProjectRow(projectCd, projectNm)3.4 JavaScript的记述以下为JavaScript的记述。3.4.1 整体 语句末尾必须加上;(分号)结束。 文字字符串必须用(单引号)围起来。3.4.2 缩进 为方便阅读程序,插入缩进。 缩进量使用4个半角空格,不使用Tab键。 3.4.3 嵌套 If语句、while语句、for语句等的嵌套,原则上最多三级。3.4.4 空白行的记述 过程内的处理与处理间,为方便分段,插入空白行。3.4.5 按钮TYPE 在JavaScript中控制动作的按钮的TYPE,使用button,而不使用Submit(这是为了防止在不能使用JavaScript的环境下,点击按钮时产生错误的提交处理)。3.4.6 弹出画面 如要显示日历画面,则在调用处的图标右下方打开窗口。4. JSP开发规范以下为JSP的开发规范。4.1 基本方针4.1.1 JSP源文件的构成以下为JSP源文件的构成。主体JSP(Include Jsp)Page指令语句Taglib指令语句Page指令Include指令语句获取ContentsHTML HeadInclude指令HTML BodyJS、CSS链接Include指令语句HTML Foot4.1.2 Page指令以下为Page指令内的记述方法。记述例:(*)(*)行必须有4.1.3 Taglib指令以下为使用Taglib时,taglib指令内的记述方法。记述例:4.1.4 Include指令以下为Include指令的记述方法。记述例:4.1.5 JS、CSS链接以下为使用外部Script及样式表时的记述方法。4.1.6 HTML Body关于HTML BODY、HTML 源程序,请参照2. HTML开发规范、3. JavaScript开发规范。4.1.7 HTML Foot以下为HTML(JSP)最终行的记述方法。 记述例: 4.2 命名标准以下为JSP的命名标准。 文件名遵循程序命名规则。 源程序变量、常量、方法的命名标准,遵循JAVA开发规范。4.3 注释以下为JSP的注释标准。 逻辑处理部分以功能为单位来注释。 考虑到源代码的可维护性,方法和实例变量需遵循JAVA开发规范。4.4 JSP的记述关于JSP的记述方法,有如下注意事项。4.4.1 整体 对值的显示,采用。 异常处理(画面上的错误处理),是在错误页面的JSP上进行共通处理。4.4.2 字符集 源文件编码、HTML输出文件编码采用GB2312。 JSP源文件用GB2312制作。 JSP源文件内的JSP Page指令的content-type和HTML meta标签的content-type设定为” GB2312”。5. JAVA开发规范以下为JAVA的开发规范。5.1 命名标准以下为基于JAVA语言开发的项目的命名标准。5.1.1 Package(1) Package名 Package名采用AAA. xxxx (AAA,xxxx根据项目需要自行定义) 。(2) 文件 遵循程序命名规则。5.1.2 命名规则(1)命名形式的定义本书中所使用的命名形式定义如下: Pascal case将各单词的第一个字母大写。适用于由3个及3个以上字符组成的标识符。例)MyClass Camel case将第一个单词小写。之后的每个单词第一个字母大写。例)myParameter Upper case将标识符的所有字母大写。仅用于2个及2个以下的字符组成的标识符。 上述以外的用语上述以外的情形,使用以下用语。前缀(Prefix)后缀(Suffix)(2) 通用规则 大小写不要使用不一致的写法。例)index和Index 缩略形式尽量不使用缩略形式。例)errerrorprocprocedure 匈牙利记法不使用。例)intIndexindex 下划线不使用。常量、事件的情形使用。(3)Package 命名形式:Camel case 使用方法:制作有意义的Package,并进行管理。(4) 类(A) 业务类 遵循程序命名规则。 例)opcAlarmListBean(B) Action类 遵循程序命名规则。例)opcAlarmListAction (C) Form类 遵循程序命名规则。例)opcAlarmListForm 如为Head、明細形式画面的情形,Form名为JSP文件名加上Form。例)opcAlarmListForm包含以下类opcAlarmListHeadderFormHead用opcAlarmListForm明细用(5) 抽象类 命名形式:Pascal case(6) 枚举型 命名形式:Camel case 命名方法:使用单数形式的名称。(例)enum camelCase 注意事项:不用Enum等后缀。(7) 静态字段 命名形式:Camel case 注意事项:尽可能的不使用静态字段。(8) 参数 命名形式:Camel case(例)string Parse(int targetIndex); 命名方法:不使用说明参数类型的名称,而使用说明参数含义的名称。 注意事项:不使用匈牙利记法。(9) 接口 命名形式:Pascal case使用后缀Interface。例)FileInterface(10) 异常类 命名形式:Pascal case使用后缀Exception。例)ApplicationException(11) 返回boolean的方法 命名形式:Camel case 命名方法:is形容词、can动词、has过去分词、第三人称单数动词、第三人称单数动词名词。(正确例)isEmpty()、canGet()、hasChanged()、contains()、containsKey()(错误例)empty()设为空的说法有动词含义。(12) getter/setter 命名形式:Camel case 注意事项:不使用匈牙利记法。返回Boolean时,用is来代替get。(13) 常量 命名形式:Upper case 命名方法:分隔单词,使用下划线_。(14) 局部变量 命名形式:Camel case(15) 循环计数器 for语句的循环计数器,每个阶段按i、j、k的字母顺序来使用。(16) 方法名 命名形式:Camel case 用动词名詞为基本形,使用带处理含义的名称。例)getData() (获取数据)getDAO() (获取DAO)deleteData() (删除数据) 动词使用以下定义好的词。动词(中文)动词(物理名)使用实例制作makemakeReport转换totoString获取getgetAttribute设定setsetAttribute判定isisYear计算calccalcTax输入inputinputSlip输出outputoutputSlip注册registerregisterEntry更新updateupdateEntry显示displaydisplaySlip打印printprintReport参照referencereferenceSlip删除deletedeleteData关闭closecloseWindow DAO关联的方法,使用SQL命令(select等)名词(作为对象的表名)。但是类名中明确记录了表名时,则省略。(表名除去前缀) 对象为多表时,使用非表名的含处理含义的名词。 用上述命名方式形成的方法名不是唯一时,则按条件的key,OrderBy的key的顺序来指定。例)selectAcceptSlipAll()selectAcceptSlipAcceptNoAcceptNoDesc()insert()updateSlipStatus()5.2 注释为了从源文件的注释语句输出程序设计书,本项目遵循JavaDoc的标准进行注释。本项目的注释标准如下所示。另外,文中的 ”表示的是半角的空格。5.2.1 注释位置和输出设计书注释位置、以及输出注释的程序设计书名如下所示。例)SampleClass.java文件头类注释public class SampleClass . . .方法开头 public function getSample() 方法处理说明 5.2.2 文件头文件头注释不参考JavaDoc标准,记述方式如下:/* * 项目名 * * 制作者: * 制作日: * 更新履历: 更新日担当者修改内容 * XX.XX.XX YYYY/MM/DDXXXXXXXXXXXXXXXXXXXXXXXXXXXX */5.2.3 类类注释参考JavaDoc标准,记述方式如下:/* * *Fxx-xx.功能名*记述类的功能概要 * * *author 记述制作者*/5.2.4 方法方法的注释基准如下所示。(1) 方法开头的注释 类注释应在/*/之间记述。 在*后记述功能、概要、备注(可省略)。 在* param后记述参数名及参数的说明。 在* return后记述返回值的说明。 在* exception后记述异常类名及异常的说明。/* * * * * param * return * exception */例)/* * 按指定格式返回数值字符串。 * num为0.0是,返回 。 * param num double型 记述对参数的说明 * param f DecimalFormat 记述对参数的说明 * return 格式转换后的字符串 * exception java.lang.ArithmeticException 指定数据为0时发生该异常*/(2) 方法处理说明注释 单行注释用/。 块注释时使用/* */。 下列处理必须进行注释。A) 处理的模块单位B) if语句C) 方法调用D) 变量(3) setter、getter方法注释 不必进行方法开头注释。 对于setter、getter方法中使用的变量、应在变量声明的末尾记述说明的注释例)/类变量声明/private String InhouseCd = null; /保存本公司的编码用变量5.3 JAVA的记述JAVA的记述标准如下所示。5.3.1 整体处理整体的记述标准如下所示。 缩进使用4个半角空格,不可以使用tab键进行缩进。 原则上每行不超过80个字符(但是,如果因为换行而不易读解时、可以不必遵守此规则)。 命令行超过80个字符时,可在逗号后面或在优先级较低的运算符前换行,或者使用局部变量。 声明行超过80个字符时,在extends implements throws节,或在参数的逗号处换行。换行处开始2行以后的缩进对齐。 的后面,不记述声明语句直接换行(注释除外)。 每行不可以记述2个以上的声明语句。 条件语句(if、else、while、for、do-while)的 不可以省略。 无声明语句时,不记述空的 模块。 控制条件要求计数时,使用for语句;若只需控制循环终了条件,则使用while语句。 尽量避免循环处理中的对象生成。 原则上循环处理中不使用try/catch块语句。5.3.2 声明语句本项目的声明文的记述标准如下。(1) Import语句Import语句的记述标准如下。 使用类时、用import语句声明使用的Package。 按照Java项目、javax项目、其他项目的顺序记述,并按照Package名、类名升序排列。 Import语句中指定类时,应使用“Package名类名”进行指定、不使用星号*。但是、如果同一个Package中导入3个以上的类时,可以使用星号*。(2) class、interface声明class、interface声明的记述标准如下。 声明语句开始的花括号应在该行末尾。 声明语句结束的花括号应与对应语句采用相同的缩进。 class、interface的声明,应按照访问修饰词public、protected、默认值、private的顺序声明。 在声明语句行只包括上述内容中的花括号。正误class Sample extends Object 语句;class Sample extends Object语句;(3) 属性(类变量、实例变量)声明属性声明的记述标准如下所示。 属性声明应按照访问修饰词public、protected、default、private的顺序进行声明。 属性声明时,每行只包括一个属性。(4) 常量声明常量声明的记述标准如下所示。 常量、不被继承的类、不被重写的方法应使用final进行声明。 尽量使用常量(用Final定义),避免直接使用数值。但是,for循环中的记数值(如0、1、-1等),即使直接使用数值也不会造成可读性的低下,所以不在此限制之列。(5) 局部变量的声明局部变量声明的记述标准如下。 每行只记述一个声明正误long level = 0; / Level long size = 256; / Sizelong level,size; 变量声明时,应在代码块的开头进行声明,并进行初始化。正误void sample(long start) long level_ = start + 1; / Level long size = 0; / Size 语句;void sample(long start) 语句; long level = start + 1; long size = 0; 标识符之间插入1个空格,不使用Tab键对齐。正误long level;long size;longlevel;longsize; 不在For语句的括号内声明局部变量。但是循环计数器变量则作为例外可在括号内声明局部变量。 数组应在数据类型后接 进行声明、并进行初始化。正误long iArray = 1,2,4,8;long iArray = 1,2,4,8;long ARRAY_SIZE = 10;String strArray = new StringARRAY_SIZE;long ARRAY_SIZE = 10;String strArray = new StringARRAY_SIZE; 尽量不要使用2元以上的数组。 子模块中、不声明与子模块外部已经声明了的局部变量名称相同的变量。 没有必要使用类变量和实例变量的地方,尽量使用局部变量。(6) 方法定义方法定义的记述标准如下。 一个方法只进行一种处理。 方法根据每个机能进行总结排列。 声明语句开始的花括号应在该行末尾记述。 声明语句结束的花括号、应与对应的声明语句的缩进相同。 在声明语句行只记述上述情况的花括号。正误class Sample extends Object sample (long i, long j) 语句; long method() 语句; class Sample extends Object sample (long i, int j) 语句; long method() 语句; 5.3.3 语法语法的记述基准如下: 每行只记述一个语句。 在逗号、for语句后、算术运算符、赋值运算符的前后插入半角空格。正误语句;语句;语句; 语句;a = 0;b = 0;a = b = 0;(1) if语句、if else语句 即使if语句只有一个语句,也必须用块的形式记述。 else前不换行。正误if (条件) 语句; else if(条件) 语句; else 语句;if (条件) 语句;else 语句;if (条件) 语句;else 语句;(2) for语句 不在for语句的括号内声明局部变量。但循环计数器则作为例外可以在括号内声明局部变量。 为了简化for语句的括号内的初始化和更新,变量应控制在3个以内。 即使For语句只有1个语句,也必须用块的形式记述。正误for (int i = 0; i 10; i+) 语句;for (i = 0; i 10; i+);(3) While语句 即使While语句只有1个语句时,也必须用块的形式记述。正误While (条件) 语句;while (条件);(4) do while语句 while前不换行。正误do 语句; while (条件) do 语句;while (条件) (5) switch语句 原则上不使用switch语句,而使用if语句和else if语句的组合。 Case标签不缩进。 每个case标签都要有break语句。 对于下一行也要执行的case(没有break语句的case)应进行注释。 必须有defalut语句。Defalut标签中也要有break语句。 Case标签不使用花括号。正误Switch(条件) case A: 语句; /* 下一行也执行 */case B: 语句; break;default: 语句; break;switch(条件) case A: 语句; case B: 语句; break; default: 语句;(6) break语句 switch命令以外的break语句,禁止用于终了处理和错误处理之外的情况。(7) return语句 返回值不使用()。正误Return;return();Return 1;return (1);Return value;return (value); 应用于了解程序构造的意图。正误Return ;if () return true; else return false;(8) try / catch语句 catch前不换行。 原则上、异常用“e”接收。正误try 文; catch (ExceptionClass e) 文;try 语句;catch (ExceptionClass e) 语句;try 文; catch (ExceptionClass e) 文; finally 文;try 语句; catch (ExceptionClass e) 语句; finally 语句; catch语句捕获的异常,应为详细的异常类。 catch块必须进行处理(不需要处理时应进行注释)。(9) Finally语句 Finally节前不换行。 Finally节中不用return语句(需要记述时应进行注释)。 intra-mart J2EE Framework中,即使发生异常,也可以自动进行disconnect、close等的处理,因此在finally节中不必明确记述。5.3.4 与记述的注意事项以下是关于记述相关的一些注意事项。(1) 使用括号 为了明确多个运算符的优先顺序,应在表达式中使用括号。正误if (a = b) & (c = d)if (a = b & c = d)(x = 0) ? x : -x;x = 0 ? x : -x;(2) 比较大小的运算符 使用、=。但是,常量通常位于比较符的右侧。(3) 类变量、类方法的访问 类变量、类方法不是通过特定的实例,而是通过类名进行访问。正误aClass.classMethod();anObject.classMethod();(4) 对象的等值比较 字符串型、数值型对象的比较使用equals( )方法。(5) 与性能相关的注意事项性能相关的注意事项如下。(6) 对象共享 对象只是临时且局部使用。(7) 数组复制 java.lang.System等System.arraycopy方法的速度快,所以请积极使用。例) 复制数组的元素时使用System.arraycopy()。(8) 执行控制 考虑循环处理的最优化,应选择所需的最低循环次数。(9) 字符串操作 字符串操作(合并插入),使用StringBuffer类。正误StringBuffer sb = new StringBuffer();for (i = 0; i s.length() & s.charAt(i) = t; i+) sb.append( );String strRes = “”;for (i =0; i s.length() & s.charAt(i) = “t”;i+) strRes += ;(10) 数组操作 数组大小无变更时,应使用对象数组(String等)(因为占用内存少)。 决定元素个数后,进行数组的初始化。正误String rows;public void toArray(List list) rows = new Stringlist.size(); for(int i=0;i list.size();i+) String rows = new String100;public void toArray(List list) for(int i=0;i list.size();i+) 需要更改数组的大小时,使用ArrayList类(List接口)(既可高速检索,又可实现更改数组大小)。 检索结果分配等通过key进行检索时,用HashMap类(Map接口)(可实现key值与对象对应的检索功能)。 指定ArrayList和HashMap的初期缓冲大小(Default Size为10)、尽量避免使用变动的Size值。例)需要取得的Size应通过参数传递,并进行初始化(小于Default Size时也应指定参数并进行初始化)。正误ArrayList list1 = new ArrayList(1000);ArrayList list2 = new ArrayList(5);ArrayList list = new ArrayList();(11) 垃圾回收 变量应在适当的有效范围内进行定义,避免其长时间占用多余内存空间。例)只在特定的方法内使用变量正误public class A public void test1(int v) int a = v + 1; System.out.println(a); public void test2(int v) int a = v + 2; System.out.println(a); public class A int a; public void test1(int v) a = v + 1 System.out.println(a); public void test2(int v) a = v + 2; System.out.println(a); 5.4 字符集本项目的字符集标准如下。 文件的字符集标准为GB2312。6. SQL开发规范SQL的开发规范如下。6.1 SQL的记述SQL的记述方法应注意事项如下。6.1.1 整体 原则上SQL语句应使用半角的大写英文和数字进行记述。 SQL语句应遵照ANSI/ISO制定的SQL92进行记述。 SQL语句中禁止使用运算表达式进行记述。 作为特例,SQL语句内可以使用+(PLUS)符号。(JAVA源代码内不可以使用) 数据表的别名可以使用数据表的编号。6.1.2 与记述相关的注意事项关于记述的注意事项如下。(1) SQL语句换行 SQL语句换行时,应以SELECT列单位,WHERE条件1个语句节(直至A=B为止)为单位换行。正误SELECT B_M_ITEM.ITEM_CD,B_M_ITEM.ITEM_NAME,B_M_ITEM.ITEM_NAME_KANAWHERE ITEM_CD = 00100SELECT B_M_ITEM.ITEM_CD, B_M_ITEM.ITEM_NAME, B_M_ITEM.ITEM_NAME_KANAWHERE ITEM_CD = 00100(2) 数据表命名 使用的列名在多个参照数据表中存在时,必须使用别名.列名的形式进行记述。正误SELECT d3.ITEM_CD,d4.ITEM_NAMEFROM B_M_ITEM as d3,SMS_M_ITEM as d4ORDER BY B_M_ITEM.ITEM_CDSELECT ITEM_CD,ITEM_NAMEFROM B_M_ITEM,SMS_M_ITEMORDER BY ITEM_CD(3) 使用COUNT项目的别名 用SELECT项目记述的“count()”必须赋予别名。别名应按照SELECT 项目名 AS 别名的形式指定,AS可省略。正误SELECT COUNT(*) AS ITEM_COUNT FROM B_M_ITEM WHERE ITEM_DIV = 01SELECT COUNT(*)FROM
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 装饰装修工程施工顺序安排方案
- 铅锌矿洗选建设项目技术方案
- 高效热力设备节能改造方案
- 装修墙吊顶施工方案
- 颍东区加固施工方案
- 全心守候校园安全教育
- 支部书记考试题目及答案
- 政治考试题库及答案
- 郑州工务考试题库及答案
- 雨污管网及设施改造项目技术方案
- 2025年四川省凉山州中考生物试卷真题(含答案解析)
- 产前外周血炎症指标与绒毛膜羊膜炎相关自发性早产的关联性研究
- 仓库货物运送管理制度
- 《思想道德与法治》课件-第一节 人生观是对人生的总的看法
- 颈深间隙感染诊疗与管理
- 安徽科技馆笔试题目及答案
- 厂房分割租赁协议书
- 会计中级职称《财务管理》电子书
- 足球教练员的职业素养与道德规范
- 产地证培训讲义
- 《南京理工大学化工》课件
评论
0/150
提交评论