




已阅读5页,还剩13页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
. 部分内容来源于网络,有侵权请联系删除! JAVA 程序编码规范程序编码规范 目录 JAVA 程序编码规范程序编码规范.1 1简介简介 .3 1.1目的 .3 1.2范围 .3 1.3TAB.3 1.4缩进 .3 1.5空行 .3 1.6代码块长度 .3 1.7行宽 .3 1.8空格 .3 2注释注释 .5 2.1注释的基本约定 .5 2.2注释类型 .5 2.3注释那些部分 .5 3命名命名 .7 3.1命名的基本约定 .7 3.2标识符的命名约定 .7 4声明声明 .9 5表达式和语句表达式和语句 .10 5.1每行应该只有一条语句。 .10 5.2IF-ELSE.10 5.3FOR语句 .10 5.4WHILE语句.10 5.5DO-WHILE语句.10 5.6SWITCH语句.11 5.7TRY-CATCH语句.11 6错误处理和异常事件错误处理和异常事件 .12 7可移植性可移植性 .13 7.1尽量不要使用已经被标为不赞成使用的类或方法。 .13 7.2代码应遵循 UNIX 风格。 .13 . 部分内容来源于网络,有侵权请联系删除! 7.3如果需要换行的话,尽量用 PRINTLN 来代替在字符串中使用N。.13 7.4用SEPARATOR()方法代替路径中的”/”或” 。.13 7.5用PATHSEPTARATOR()方法代替路径中的 ” : ” 或 ” ;” 。.13 8JAVA 文件样式文件样式.14 8.1版权信息 .14 8.2PACKAGE/IMPORTS.14 8.3CLASS.14 8.4CLASS FIELDS.15 8.5存取方法 .15 8.6构造函数 .15 8.7克隆方法 .16 8.8类方法 .16 8.9TOSTRING 方法.17 8.10MAIN 方法.17 9程序编写规范程序编写规范 .18 9.1EXIT() .18 9.2垃圾收集 .18 9.3CLONE.18 9.4FINAL 类.19 9.5访问类的成员变量 .19 10编程技巧编程技巧 .20 10.1BYTE 数组转换到CHARACTERS.20 10.2UTILITY 类.20 10.3初始化 .20 10.4枚举类型 .20 10.5SWING.20 10.6调试 .21 10.7性能 .21 10.8使用 STRINGBUFFER 对象.21 10.9避免太多的使用 SYNCHRONIZED 关键字.22 10.10可移植性 .22 10.11换行 .22 . 部分内容来源于网络,有侵权请联系删除! 1简介简介 1.1目的目的 本规范为一套编写高效可靠的 Java 代码的标准、约定和指南。它以安全可靠的软件工程原 则为基础,使代码易于理解、维护和增强,提高生产效率。同时,将带来更大的一致性,使 软件开发团队的效率明显提高。 1.2范围范围 本规范应用于采用 J2EE 规范的项目中,所有项目中的 JAVA 代码(含 JSP,SERVLET,JAVABEAN)均应遵守这个规范。同时,也可作为其它项目的参考。代码组 织与风格 1.3Tab 一个 Tab 为 4 个空格长。 1.4缩进缩进 一个代码块内的代码都应该统一的缩进一个 Tab 长度。 1.5空行空行 适当的增加空行,来增加代码的可读性。 在下列情况下应该有两行空行: 同一文件的不同部分之间; 在类,接口以及彼此之间; 在下列情况之间应该有一行空行: 方法之间; 局部变量和它后边的语句之间; 方法内的功能逻辑部分之间; 1.6代码块长度代码块长度 每个代码块尽量控制在 1 个屏幕之内,方便浏览。 1.7行宽行宽 每行代码和注释不应超过 70 个字节或屏幕的宽度,如超过则应换行,换行后的代码应该缩 进 8 个字符。 1.8空格空格 括号和它里面的字符之间不应该出现空格。括号应该和它前边的关键词留有空格,如: while (true) ; . 部分内容来源于网络,有侵权请联系删除! 但是方法名和左括号之间不应该有空格。 参数之间的逗号后应该加一空格。如:method1(int i1, int i2) for 语句里的表达式之间加一空格。如:for(expr1; expr2; expr3) 二元操作符和操作数之间应该用空格隔开。如:i + c ; 强制类型转换时,在类型和变量之间加一空格。如:(int) i ;注释 1.9注释的基本约定注释的基本约定 注释应该增加代码的清晰度 持注释的简洁,不是任何代码都需要注释的,过多的注释反而会影响代码的可读性。 注释不应该包括其他的特殊字符。 先写注释,后写代码 1.10 注释类型注释类型 块注释:主要用来描述文件,类,方法,算法等。一般用在文档和方法的前面,也可以放在 文档的任何地方。以/*开头,*/结尾。例: /* *注释 */ 行注释:主要用在方法内部,对代码,变量,流程等进行说明。与块注释格式相似,但是整 个注释占据一行。例: /*注释*/ 尾随注释:与行注释功能相似,放在代码的同行,但是要与代码之间有足够的空间,便于分 清。例: int m=4 ;/*注释*/ 如果一个程序块内有多个尾随注释,每个注释的缩进应该保持一致。 行尾注释:与行注释功能相似,放在每行的最后,或者占据一行。以/开头。 文档注释:与块注释相似,但是可以被 javadoc 处理,生成 HTML 文件。以/*开头, */结尾。问挡住是不能放在方法或程序块内。例: /* *注释 */ 1.11 注释那些部分注释那些部分 项目注释哪些部分 实参/ 参数 参数类型 参数用来做什么 任何约束或前提条件 示例 字段/ 字段描述 . 部分内容来源于网络,有侵权请联系删除! 字段/属性注释所有使用的不变量 示例 并行事件 可见性决策 类类的目的 已知的问题 类的开发/维护历史 注释出采用的不变量 并行策略 编译单元每一个类/类内定义的接口,含简单的 说明 文件名和/或标识信息 版权信息 接口目的 它应如何被使用以及如何不被使用 局部变量用处/目的 成员函数注释成员函数做什么以及它为什么做这个 哪些参数必须传递给一个成员函数 成员函数返回什么 已知的问题 任何由某个成员函数抛出的异常 可见性决策 成员函数是如何改变对象的 包含任何修改代码的历史 如何在适当情况下调用成员函数的例 子适用的前提条件和 后置条件 成员函数内部注释控制结构 代码做了些什么以及为什么这样做 局部变量 难或复杂的代码 处理顺序 . 部分内容来源于网络,有侵权请联系删除! 2命名命名 2.1命名的基本约定命名的基本约定 一般应该使用可以准确说明变量/字段/类的完整的英文描述符,如 firstName。对一些作用显 而易见的变量可以采用简单的命名,如在循环里的递增(减)变量就可以被命名为 ” i ”。 尽量采用项目所涉及领域的术语。 可以采用大小写混合,提高名字的可读性。 尽量少用缩写,但如果一定要使用,就要谨慎地使用。同时,应该保留一个标准缩写的列表, 并且在使用时保持一致。 避免使用长名字(最好不超过 15 个字母) 。 避免使用相似或者仅在大小写上有区别的名字。 避免使用下划线作为名字的首末字母。 2.2标识符的命名约定标识符的命名约定 标示符类型命名约定例子 包全部小写。 标识符用点号分隔开来。为了使包的名 字更易读,Sun 公司建议包名中的标识 符用点号来分隔。 Sun 公司的标准 java 分配包用标识符 .java 开头。 全局包的名字用你的机构的 Internet 保 留域名开头 。 局部包: interface.screens 全局包: com.rational.www. interface.screens 类,接口类的名字应该使用名词。 每个单词第一个字母应该大写。 避免使用单词的错写,除非它的缩写已 经广为人知,如 HTTP。 Class Hello ; Class HelloWorld ; Interface Apple ; 方法第一个单词一般是动词。 第一个字母是小些,但是中间单词的第 一个字母是大写。 如果方法返回一个成员变量的值,方法 名一般为 get+成员变量名,如若返回的 值是 bool 变量,一般以 is 作为前缀。 如果方法修改一个成员变量的值,方法 名一般为:set + 成员变量名。 getName(); setName(); isFirst(); . 部分内容来源于网络,有侵权请联系删除! 变量第一个字母小写,中间单词的第一个字 母大写。 不要用_或 int i; int n; char c; int students; btNew; (bt 是 Button 的缩写) 常量所有常量名均全部大写,单词间以_ 隔开。 int MAX_NUM; . 部分内容来源于网络,有侵权请联系删除! 3声明声明 每行应该只有一个声明。 局部变量必须初始化。 除了 for 循环外,声明应该放在块的最开始部分。for 循环中的变量声明可以放在 for 语句中。 如:for(int i = 0; i 0 xFFFF) throw new IllegalArgumentException(entry name too long); = name; . 部分内容来源于网络,有侵权请联系删除! 5.9toString 方法方法 无论如何,每一个类都应该定义 toString 方法: public String toString() String retval = CounterSet: ; for (int i = 0; i data.length(); i+) retval += data.bytes.toString(); retval += data.packets.toString(); return retval; 5.10 main 方法方法 如果 main(String) 方法已经定义了, 那么它应该写在类的底部. 程序编写规范 5.11 exit() exit 除了在 main 中可以被调用外,其他的地方不应该调用。因为这样做不给任何代码代 码机会来截获退出。一个类似后台服务地程序不应该因为某一个库模块决定了要退出就退出。 异常 申明的错误应该抛出一个 RuntimeException 或者派生的异常。 顶层的 main()函数应该截获所有的异常,并且打印(或者记录在日志中)在屏幕上。 5.12 垃圾收集垃圾收集 JAVA 使用成熟的后台垃圾收集技术来代替引用计数。但是这样会导致一个问题:你必须在 使用完对象的实例以后进行清场工作。比如一个 prel 的程序员可能这么写: . FileOutputStream fos = new FileOutputStream(projectFile); project.save(fos, IDE Project File); . 除非输出流一出作用域就关闭,非引用计数的程序语言,比如 JAVA,是不能自动完成变量 的清场工作的。必须象下面一样写: FileOutputStream fos = new FileOutputStream(projectFile); project.save(fos, IDE Project File); . 部分内容来源于网络,有侵权请联系删除! fos.close(); 5.13 Clone 下面是一种有用的方法: implements Cloneable public Object clone() try ThisClass obj = (ThisClass)super.clone(); obj.field1 = (int)field1.clone(); obj.field2 = field2; return obj; catch(CloneNotSupportedException e) throw new InternalError(Unexpected CloneNotSUpportedException: + e.getMessage(); 5.14 final 类类 绝对不要因为性能的原因将类定义为 final 的(除非程序的框架要求) 如果一个类还没有准备好被继承,最好在类文档中注明,而不要将她定义为 final 的。这是 因为没有人可以保证会不会由于什么原因需要继承她。 5.15 访问类的成员变量访问类的成员变量 大部分的类成员变量应该定义为 protected 的来防止继承类使用他们。 注意,要用int packets,而不是int packets,后一种永远也不要用。 public void setPackets(int packets) this.packets = packets; CounterSet(int size) this.size = size; . 部分内容来源于网络,有侵权请联系删除! 6编程技巧编程技巧 6.1byte 数组转换到数组转换到 characters 为了将 byte 数组转换到 characters,你可以这么做: Hello world!.getBytes(); 6.2Utility 类类 Utility 类(仅仅提供方法的类)应该被申明为抽象的来防止被继承或被初始化。 6.3初始化初始化 下面的代码是一种很好的初始化数组的方法: objectArguments = new Object arguments ; 6.4枚举类型枚举类型 JAVA 对枚举的支持不好,但是下面的代码是一种很有用的模板: class Colour public static final Colour BLACK = new Colour(0, 0, 0); public static final Colour RED = new Colour(0 xFF, 0, 0); public static final Colour GREEN = new Colour(0, 0 xFF, 0); public static final Colour BLUE = new Colour(0, 0, 0 xFF); public static final Colour WHITE = new Colour(0 xFF, 0 xFF, 0 xFF); 这种技术实现了 RED, GREEN, BLUE 等可以象其他语言的枚举类型一样使用的常量。 他 们可以用 = 操作符来比较。 但是这样使用有一个缺陷:如果一个用户用这样的方法来创建颜色 BLACK new Colour(0,0,0) 那么这就是另外一个对象,=操作符就会产生错误。她的 equal() 方法仍然有效。由于 这个原因,这个技术的缺陷最好注明在文档中,或者只在自己的包中使用。 6.5Swing 避免使用 AWT 组件 混合使用 AWT 和 Swing 组件 如果要将 AWT 组件和 Swing 组件混合起来使用的话,请小心使用。实际上,尽量不要将 他们混合起来使用。 . 部分内容来源于网络,有侵权请联系删除! 滚动的 AWT 组件 AWT 组件绝对不要用 JscrollPane 类来实现滚动。滚动 AWT 组件的时候一定要用 AWT ScrollPane 组件来实现。 避免在 InternalFrame 组件中使用 AWT 组件 尽量不要这么做,要不然会出现不可预料的后果。 Z-Order 问题 AWT 组件总是显示在 Swing 组件之上。当使用包含 AWT 组件的 POP-UP 菜单的时候要 小心,尽量不要这样使用。 6.6调试调试 调试在软件开发中是一个很重要的部分,存在软件生命周期的各个部分中。调试能够用配置 开、关是最基本的。 很常用的一种调试方法就是用一个 PrintStream 类成员,在没有定义调试流的时候就为 null,类要定义一个 debug 方法来设置调试用的流。 6.7性能性能 在写代码的时候,从头至尾都应该考虑性能问题。这不是说时间都应该浪费在优化代码上, 而是我们时刻应该提醒自己要注意代码的效率。比如:如果没有时间来实现一个高效的算法, 那么我们应该在文档中记录下来,以便在以后有空的时候再来实现她。 不是所有的人都同意在写代码的时候应该优化性能这个观点的,他们认为性能优化的问题应 该在项目的后期再去考虑,也就是在程序的轮廓已经实现了以后。 不必要的对象构造 不要在循环中构造和释放对象 6.8使用使用 StringBuffer 和和 StringBuilder 对象对象 在处理 String 的时候要尽量使用 StringBuffer 类,StringBuffer 类是构成 String 类的 基础。String 类将 StringBuffer 类封装了起来, (以花费更多时间为代价)为开发人员提 供了一个安全的接口。当我们在构造字符串的时候,我们应该用 StringBuffer 来实现大部 分的工作,当工作完成后将 Strin
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 企业人文内涵塑造策略
- 大学化学教学方法与实践
- 绿化工程的推广及意义
- 纺织品包装设计手册
- 2025年口腔颌面外科颌骨骨折固定术后并发症处理技巧模拟考试试卷答案及解析
- 基础画法指南
- 2025年急重症监护医学生命支持技能检测答案及解析
- 2025年骨科手术安全操作规范测试题答案及解析
- 2025年输液测试题及答案
- 2025年房地产市场区域分化对房地产人工智能投资策略的分析报告
- 2024年国家网络安全宣传周网络安全知识培训讲座
- 上海市内分泌科临床质控手册
- 教科版六年级科学上册知识清单(新版)
- 传感器技术与应用电子教案
- 个人出行安全承诺书合同(2篇)
- DB11-T 2021-2022 12345市民服务热线服务与管理规范
- 数学思想方法及其教学课件学习教案
- 安永校招在线测评真题
- 人教版(2024)小学信息科技 三年级 第3课《体验人机交互》教学设计
- 《材料力学性能》课程教学大纲
- 《机械常识》(第二版) 课件 第一章 常用金属材料
评论
0/150
提交评论