




已阅读5页,还剩20页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Java编程规范2007年11月 Java编程规范编程文档开发资料文档文档编号:BSD_SPP_PROC_SD_项目号_子项号文档名称:Java编程规范文档类别:开发资料文档密 级:机密版本信息:1.0建立日期:2007/11/25修改时间2010/05/12创 建 人:田玉兵审 核 者:批 准 人:批准日期:项目/客户:日 期:存放位置:项目管理代码编程规范编辑软件:Microsoft Office 中文版发行软件:文档状态:草稿; 正式发布;正在修改文档修订记录 | Outstanding Issues版本编号变化状态简要说明修订日期变更人批准日期批准人1.0AJava编程规范2007/11/25田玉兵1.1BJava编程规范2010/05/12田玉兵文档审批信息序号审批人角色审批日期签字目 录1文档介绍51.1文档目的51.2文档范围51.3读者对象51.4参考文档51.5术语与缩写解释52概述53Java编程规范63.1概述63.2基本语法规范63.2.1TAB63.2.2空格63.2.3空行73.2.4行长83.2.5换行83.2.6命名93.2.7控制语句113.2.8访问规则133.3定义133.3.1每行的数量133.3.2初始化133.3.3位置133.3.4类和接口语句143.4注释153.4.1行注释153.4.2段注释153.5文档注释153.5.1文件注释153.5.2类/接口注释163.5.3方法注释163.5.4属性注释173.5.5方法内注释173.6文件组织173.6.1包声明183.6.2类导入183.6.3类和接口的定义183.7其它183.7.1变量赋值183.7.2括号193.7.3?前的条件表达式193.8文件示例194附注214.1访问控制214.2类、方法和变量修饰符214.3程序控制语句224.4错误处理224.5包相关224.6基本类型224.7变量引用23编程文档1 文档介绍1.1 文档目的本文档是java的编程规范文档,用于定义网银项目开发过程中,程序写作基本的要求。1.2 文档范围华厦银行网上银行项目组。1.3 读者对象华厦银行网上银行项目组设计人员、开发人员以及有关监督指导管理者。1.4 参考文档本编程规范主要摘自Sun官方文档:Java Code Conventions. 官方地址为:/docs/codeconv/html/CodeConvTOC.doc.html1.5 术语与缩写解释2 概述本规范包括整个项目中使用的:Java/Servlet/JSP等规范,每部分都涉及到:1. 命名规范;2. 书写规范;3. 接口规范(以例子方式,描述接口标准);涉及到: 页面和程序的接口; 程序和数据库表的接口; 事务处理的规则和标准;3 Java编程规范3.1 概述Java是网银项目开发中的基础语言之一。因此,Java编程规范也是整个编程规范的基础规范之一。3.2 基本语法规范本部分定义Java中,程序写作的规范。3.2.1 TAB程序必须注意代码的层次关系,每下一层,退后一个TAB位置。每个TAB退后4字符。3.2.2 空格在程序中,应该使用空格。规则如下:关键字和括弧之间,必须有空格:while (true) .2. 在用“,”分割的表达式间,必须使用空格;for (expr1; expr2; expr3)3. 在二元操作符(“.”除外)和它的操作数之间,必须有空格;a += c + d;a = (a + b) / (c * d);4. 强制转换前,必须后空格;myMethod(byte) aNum, (Object) x);如下情况,不使用空格:1. 函数名和“()”之间,没有空格。可以和分开;someMethod(longExpression1, longExpression2, longExpression3, longExpression4,longExpression5);2+/-运算符,不能用空格;即:i+,不能写为:i +;while (d+ = s+) n+;3在控制语句的“()”和括号内的表达式间,没有空格。if (condition1 & condition2) | (condition3 & condition4) |!(condition5 & condition6) doSomethingAboutIt(); 4. “.”运算符之间,不能有空格。MyClass.MyMethod( );3.2.3 空行在程序中,使用1个/2个空行。 1个空行1个空行应用在如下几个方面:1 方法定义之间,必须有1个空行;2 方法内的局部变量定义和第一行语句之间;3 注释前(包括段注释和行注释);4 一个方法内,不同的程序段之间; 2个空行2个空行应用在如下几个方面:1 在类和接口声明/定义之间;3.2.4 行长每行代码长度必须小于120字符。即使所用的编辑器足够长,也必须遵守该规范。3.2.5 换行代码换行时,必须遵守如下规范:1 在逗号(“,”)之后换行;2 在操作符之前换行;3 不要在高优先级的表达式中换行(后面有低优先级);4 换行后的新行,和前一行的同一层的表达式,对齐或退后一个TAB;5 若遵守第4条,发现新行位置太靠后,则可以以最原始行为标准,后退两个TAB。6 若遵守第4条,发现可能导致代码层次不清楚,混乱,则后退两个TAB。如下例子说明:1逗号后换行;新行对齐;someMethod(longExpression1, longExpression2, longExpression3, longExpression4,longExpression5); var = someMethod1(longExpression1, someMethod2(longExpression2, longExpression3); 2操作符号前换行,后退一个TAB,且注意运算符的优先级;longName1 = longName2 * (longName3 + longName4 - longName5) + 4 * longname6; / PREFERlongName1 = longName2 * (longName3 + longName4 - longName5) + 4 * longname6; / AVOID 3后退连个TAB./CONVENTIONAL INDENTATIONsomeMethod(int anArg, Object anotherArg, String yetAnotherArg, Object andStillAnother) ./INDENT 8 SPACES TO AVOID VERY DEEP INDENTSprivate static synchronized horkingLongMethodName(int anArg, Object anotherArg, String yetAnotherArg, Object andStillAnother) .4后退一个TAB,代码混乱,则后退两个TAB./DONT USE THIS INDENTATIONif (condition1 & condition2) | (condition3 & condition4) |!(condition5 & condition6) /BAD WRAPS doSomethingAboutIt(); /MAKE THIS LINE EASY TO MISS /USE THIS INDENTATION INSTEADif (condition1 & condition2) | (condition3 & condition4) |!(condition5 & condition6) doSomethingAboutIt(); /OR USE THISif (condition1 & condition2) | (condition3 & condition4) |!(condition5 & condition6) doSomethingAboutIt(); 3.2.6 命名在java中,遵守如下命名规则: 类/接口驼峰式命名,大写字母开头;class Raster;class ImageSprite; interface RasterDelegate;interface Storing; 局部变量驼峰式命名,小写字母开头。int i;char c;float myWidth; 方法1、驼峰式命名,小写字母开头;run();runFast();getBackground(); 2、方法代码原则; 业务级别类属性不可以使用static修饰符定义,除非为系统级别的全局属性定义。 类的单一方法,包含不可以超出25行,超过25行的需要增加其它方法简化流程代码。 同一工程中, 同一逻辑段代码,只容许出现一次。 同一工程中如果有10行一样的代码,也作为重复代码,只容许出现一次。 常量全部为大写字符,需要短句使用“_”下划线分割。static final int MIN_WIDTH = 4; static final int MAX_WIDTH = 999; static final int GET_THE_CPU = 1; 属性以小写字母开头,变量组合含义的使用驼峰方式分割。比如:String departCode;String emplCode; 包包名前缀总是以全小写的ASCII 字符书写首字符不可以为数字字符,并且应当是一个顶级域名。如com, edu, gov, mil, net, org, 或者两个字符的国家代码比如:com.sun.eng com.apple.quicktime.v2 edu.cmu.cs.bovik.cheese在SRM项目中,包名定义为:com.thtfpc.srm.()3.2.7 控制语句程序控制语句中,遵守如下规范: 层次规范,控制语句内的代码,必须退后一个TAB; 括弧位置规范,见如下例子。 if语句。注意第一个例子,即使只有单条语句,也必须使用“”。if (condition) statements;if (condition) statements; else statements;if (condition) statements; else if (condition) statements; else statements; for语句:for (initialization; condition; update) statements;for (initialization; condition; update); while语句:while (condition) statements;while (condition); do/while语句:do statements; while (condition); switch/case语句switch (condition) case ABC: statements;break;case DEF: statements; break;case XYZ: statements; break;default: statements; break; try/catch语句try statements; catch (ExceptionClass e) statements;try statements; catch (ExceptionClass e) statements; finally statements;3.2.8 访问规则若要访问具有静态成员方法的类,则规范如下:1直接使用方法名访问;2使用类名.方法名访问;比如:classMethod(); /OKAClass.classMethod(); /OK注意:不要使用对象名.方法名访问。3.3 定义3.3.1 每行的数量每行只定义一个变量,便于书写注释int level; / indentation levelint size; / size of table不要在同一行书写不同类型的定义,如: int foo, fooarray; /错误的3.3.2 初始化在定义时对变量进行初始化。其中一个原因是:如果不在定义时初始化,其他变量在初始化时可能会依赖该变量3.3.3 位置仅仅在块开始的地方放置定义。 (块是指由 和 围绕的代码.) 不要在变量使用时才定义;void myMethod() int int1 = 0; / 在方法块的开头定义 if (condition) int int2 = 0; / 在if 块的开头定义。 . 一个例外的情况是:FOR循环的索引变量, 可以在FOR语句中定义: for (int i = 0; i 1) / Do a double-flip. .else return false; / Explain why here.3.4.2 段注释所谓段注释,即注释需要多行表述。规范如下:/* * Here is a block comment. * 我必须写成多行 * 才能完成 */3.5 文档注释文档注释用于自动生成技术文档;文档注释包括:文件,Java类/接口,方法,属性。文档注释全部采用:/*/格式注释。3.5.1 文件注释文件注释总是存在于文件的最开始。它包括:文件名、作者、版本、建立日期、修改日志、描述。格式如下:/* * (#)Demo.java 2007/11/30* Copyright (c) 2007 北京雅普兰科技发展有限公司 版权所有* Yapulan Company of Beijing. All rights reserved.* author 张文远* version 1.0.0* Modify:*张文远 modify first time at 2007/08/14* 描述 :* This software is the confidential and proprietary * information of Yapulan Company of Beijing. * (Confidential Information). You shall not disclose * such Confidential Information and shall use it only* in accordance with the terms of the contract agreement * you entered into with Yapulan. */3.5.2 类/接口注释类/接口的注释存在于类接口的定义之前。包括:类接口名、类描述、版本。例如:/* Name: Demo.java* * Description:* This class store the value of two integers,the purpose of this * class is to compute the sum of the two integers and return * the sum .* version 1.0.0*/3.5.3 方法注释方法注释存在于方法定义之前,描述部分注明方法的:名字、功能、入口参数、返回值,异常、复杂算法说明等信息。格式如下:/* Method function description:* Initializes both integers to arguments* * param firstparam (参数描述) * param secondparam (参数描述)* * return addresult* * exception java.lang.Exception throw when switch is 1* exception NullPointerException throw when parameter n is null* complex algorithm description: (optional)*/3.5.4 属性注释/* * var variable description */3.5.5 方法内注释在方法内,所有的注释,只能用“/”。包括单行和多行注释。3.6 文件组织一个Java源文件只能包含一个公共的类或者接口。公共类和接口应当是文件中的第一个类或者接口。当该类接口需要使用私有的类接口时,该私有的类接口可以和这个公共的类和接口在同一个文件中。Java源文件的布局规则如下:1. 文件注释 (参见 文件注释) 2. 包声明3. 类导入4. 公共类接口定义 (参见 类和接口定义) 5. 私有类接口定义(optional)3.6.1 包声明JAVA源文件的第一个非注释行是package语句。之后, import 语句出现。如: package com.thtfpc.srm;3.6.2 类导入import java.awt.peer.CanvasPeer3.6.3 类和接口的定义注释格式见2.5.2。3.7 其它3.7.1 变量赋值在同一行中只能将一个值赋给一个变量,不能赋给多个变量,如:fooBar.fChar = barFoo.lchar = c; / 禁止!下面的写法不被接受: if (c+ = d+) / 应当避免! (Java 不接受) .应当这样写if (c+ = d+) != 0) .不要为了提高性能而使用内嵌的赋值语句. 那是编译器的任务. 如: d = (a = b + c) + r; / 应当避免!应当这样写 a = b + c;d = a + r;3.7.2 括号使用括号来改变表达式中的运算次序是不错的主意. 有时也可以强制加上()以使代码更好理解,尽管在某些情况下不加()的结果正确的. if (a = b & c = d) / 应当避免!if (a = b) & (c = d) / 正确3.7.3 ?前的条件表达式 如果条件表示式包含二元操作符,应当用()包围起来. 如: (x = 0) ? x : -x;3.8 文件示例/* * (#)Demo.java 2007/08/13* Copyright (c) 2007 京雅普兰科技发展有限公司 版权所有* Yapulan Company of Beijing. All rights reserved.* author 张文远* version 1.0.0* Modify:*张文远 modify first time at 2007/08/14* Description :* This software is the confidential and proprietary * information of Yapulan Company of Beijing. * (Confidential Information). You shall not disclose * such Confidential Information and shall use it only* in accordance with the terms of the contract agreement * you entered into with TongFang. */package java.blah;import java.blah.blahdy.BlahBlah;/* Name: Demo.java* * Description:* This class store the value of two integers,the purpose of this * class is to compute the sum of the two integers and return * the sum .* version 1.0.0*/public class Demo extends SomeClass /* * classVar1 documentation comment */ public static int m_classVar1; /* * classVar2 documentation comment that happens to be * more than one line long */ private static Object m_classVar2; /* * .constructor Demo documentation comment. */ public Demo() / .implementation goes here. /* Method function description:* Initializes both integers to arguments* * param firstparam (参数描述) * param secondparam (参数描述)* * return addresult* * exception java.lang.Exception throw when switch is 1* excepti
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年工业互联网平台数据加密算法效能评估与政策法规影响报告
- 2025年民办教育机构合规运营与品牌建设实践案例研究报告
- 2025年海洋生态修复技术与海洋环境保护政策创新研究报告
- 2025年房地产企业多元化布局下的产业链协同效应深度分析报告
- 现代煤化工培训课件
- 2025年营养师资格证考试冲刺试卷:深度解析基础理论与实操技巧
- 2025年Python边缘计算架构考试专项训练试卷 知识点精讲版
- 2025年注册会计师(CPA)考试 会计科目冲刺复习必做模拟试卷
- 2025年公务员考试申论热点问题押题试卷 时政素材专项训练
- 2025年高考数学三角函数专项训练冲刺押题试卷
- 河南省安阳市文峰区2024-2025学年八年级上学期期末语文试题(原卷版+解析版)
- 2024-2025学年广东省河源市小升初分班考试数学试卷(附答案解析)
- 《中国现代农业发展》课件
- 2024-2025学年九年级化学人教版教科书解读
- 2024-2025学年湖北省武汉市武昌区五年级(上)期末数学试卷(含答案)
- 《神农架的传说》课件
- 《植物资源学》课件
- 建筑工程质检与验收
- 小学数学课堂互动与作业设计的关联性研究
- 幼儿园教师考核评价量化表
- 台达DELTA变频器VFD-EL系列使用说明书和手册(完整中文版)VFD007EL23A
评论
0/150
提交评论