《Java编码规范》由会员分享,可在线阅读,更多相关《Java编码规范(48页珍藏版)》请在金锄头文库上搜索。
1、JavaJava编码规范编码规范Neusoft Co., Ltd.编码规范Neusoft Co., Ltd.内容目的源程序命名规范空白的使用注释类接口语句Neusoft Co., Ltd.代码规范的目的代码的编写保持一致性提高代码的可读性和可维护性方便团队中的成员之间共享代码易于代码的回顾Neusoft Co., Ltd.源程序源程序命名名字:源程序中定义的class或interface的名字后缀: .java供发布的文件名字:应该是有代表性的后缀: *.jar(推荐使用);或*.zip、*.ear、*.war等源文件的组织应按如下顺序书写,并且各元素之间至少一个空行分隔:1)版本信息和版权声
2、明2)包的声明3)引用声明4)类或接口的声明Neusoft Co., Ltd.源程序源文件的组织版本信息和版权声明作为源文件开始。*建议使用开发工具(如Eclipse)的注释功能自动完成此类工作。*使用部门统一的格式化和模版文件(只能在Eclipse中使用)。Neusoft Co., Ltd.源程序源文件的组织包的声明必须是非注释的第一行,用一个空格分隔package关键字与包的名字,如:package com.neusoft.softdev.firewall;引用声明从第一列开始用一个空格分隔import关键字和引用类型名。应保证引入类都被使用,减少引入*的使用。 import java.s
3、ql.SQLException; /GOODImport java.sql.*; / BAD类或接口声明每个源程序必须有一个class或interface声明Neusoft Co., Ltd.命名规范包的命名类和接口的命名变量命名常量命名方法命名Neusoft Co., Ltd.命名规范包的命名全部由小写字母组成。如:package telmecall.business.console;package telmecall.business.exception;package telmecall.presentation.util;其中 telmecall 指项目名称business 指业务逻辑
4、console指具体模块Neusoft Co., Ltd.命名规范类和接口的命名一般由大写字母开头其它字母小写的单词组成专有的缩写词除外,如:AWTExceptionclass名字建议用名词或名词短语interface名字取决于其主要功能和用途是使Object具有特定的功能,建议使用可以描述此功能的形容词(加上-able或者-ible后缀)如:Searchable, Sortable, NetworkAccessible等否则,建议使用名词或者名词短语Neusoft Co., Ltd.命名规范变量命名采用大小写混合的形式以小写字母开头,名字中其他单词(或只取首字母的缩写单词)以大写字母开头,其
5、它都为小写字母不使用下划线分隔应为名词或名词短语例:boolean resizable;char recordDelimiterNeusoft Co., Ltd.命名规范常量命名建议都为大写字母用下划线分隔单词如:MIN_VALUE, MAX_BUFFER_SIZE, PTION_FIEL_NAMENeusoft Co., Ltd.命名规范方法命名采用大小写混合的形式以小写字母开头,其他单词(或只取首字母的缩写单词)以大写字母开头,所有其它字母小写。不使用下划线分隔单词方法命名应能描绘出方法的作用和功能建议使用祈使动词或动词短语获取或设置类属性的方法建议显示的命名为getProperty()或
6、setProperty(),其中property是类的属性的名字用于判断类的布尔属性的方法建议显示的命名为isProperty(),property是指类的属性的名字Neusoft Co., Ltd.空白的使用空行空格缩进行的延续(折行)Neusoft Co., Ltd.空白的使用空行有益于将代码按照逻辑分段,以提高代码的可读性。下列情况用一个一个空行:在版权声明、包声明块、引用声明块之后在类的声明之间在方法的声明之间在类中声明最后一个属性之后,声明第一个方法之前Neusoft Co., Ltd.空白的使用空格下列情况建议使用单个空格:在一个关键字和它所修饰的块之间。如:catch, for,
7、 if, switch, synchronized, while。注意super, this后不要跟空格任何关键字和它所用的参数之间。如:return true;一个列表中逗号之后。如:foo(long_exp1, long_exp2, long_exp3); / GOOD foo(long_exp1,long_exp2,long_exp3); / BAD下列情况不建议使用空格:左括号和后一个字符之间右括号和前一个字符之间if (i = 42) / GOODif( i = 42 ) / BADNeusoft Co., Ltd.空白的使用缩进要求是四个空格空格TAB在不同的源代码管理工具中因为用
8、户设置的不同宽度不相同,因此不要使用TAB建议修改各管理工具的设置将TAB字符扩展为4个空格行的延续(折行)行应为120列,超出此限制应截成比较短的行在逗号之后折行或一个操作符之前折行尽可能采用高层次的折行折行后对齐上一行语句同一层的起始位置如果上面规则不适用,则缩进4个字符Neusoft Co., Ltd.注释应能够帮助读者理解代码的功能和作用、程序的流程注释要言简意赅须注意注释的正确性,错误的注释还不如不做注释临时的注释用“temporary note”进行标注,以利于将来程序发布时将其删去,如:/ temporary note: Change this to call sort() wh
9、en the bugs.源码中加入适当的注释,可自动生成与源码同步的文档Neusoft Co., Ltd.注释版权信息注释类注释成员注释方法注释内部类的注释其它的注释Neusoft Co., Ltd.注释版权信息注释必须在java文件的开头,建议如下格式:/* * $Header$ * $Revision$ * $Date$ * * Copyright (c) 2007 东软IT实训中心 */Neusoft Co., Ltd.注释类注释通常放在类定义的前面(类实体以外)通常详细介绍该类的功能、作者、版本,“deprecated”标志的使用,以及产生该类的时间和引用其他类等信息/* * Desc
10、ription: 描述该类概要功能介绍 * * see java.lang.Class#getDeclaredMethod(String, Class) * author 作者中文名 * version 1.0, 2006-1-11 * deprecated */Neusoft Co., Ltd.注释成员注释建议所有类成员都作注释以提高可读性与可维护性只有public和protected类型的类成员注释可被javadoc提取到文档中/* * Discription:字段功能描述 */Neusoft Co., Ltd.注释方法注释内容包括:方法功能介绍参数说明返回类型说明例外类型JDK/SDK的
11、引入版本等/* * Discription:方法功能中文描述 * param arg1 * param arg2 * author:创建者中文名字 * update:日期YYYY-MM-DD 更改人姓名变更描述 */Neusoft Co., Ltd.注释内部类的注释可参考“类注释”其它的注释代码修改的注释修改单行,在上一行使用单行注释,写明修改原因,人员姓名和日期用单行注释符号注释原行代码,在下一行添加更新的代码冗余代码的注释注释冗余代码行,并在前一行注明原因,注释人员姓名和日期类体外的注释主要包括package和import语句。引入新类包同时不需要指定引入人及日期等log信息,多余类包可直
12、接删除Neusoft Co., Ltd.类类的组织顺序建议如下:类的定义类的成员变量(字段/属性)类成员变量(字段/属性)的存取方法构造函数类方法(静态方法)实例方法main方法Neusoft Co., Ltd.类类的定义包含在不同的行的extends和implements,如:public class CounterSet extends Observable implements Cloneable类的成员变量(字段/属性)接下来是类的成员变量/* * Packet counters */protected int packets;Neusoft Co., Ltd.类类成员变量(字段/属性
13、)的存取方法接下来是类变量的存取方法:/* * Get the counters * return an array containing the statistical data. */public int getPackets() return packets;public void setPackets(int packets) this.packets = packets;Neusoft Co., Ltd.类构造方法它应该用递增的方式写(如:参数多的写在后面):public CounterSet(size) this.size = size;类方法(静态方法)有static关键字实例方
14、法无static关键字。必要时,须加上final修饰符,表示本方法不可被覆盖。Neusoft Co., Ltd.类main方法如果定义了main(String args)方法,那应写在类底部。Neusoft Co., Ltd.接口定义形式类似于类的定义形式。声明采用如下格式:public interface InterfaceName extends SuperInterfaces/ Interface BodySuperInterface是可用逗号分隔的接口列表,按字母顺序排列接口体的声明建议按如下顺序:接口的字段声明接口的方法声明接口字段声明与方法声明同类的字段声明与方法声明形式一样。Ne
15、usoft Co., Ltd.语句简单语句复合语句Neusoft Co., Ltd.语句简单语句赋值的表达式每行只含一条语句本地变量声明应在不同的行中对声明后不再变动应当声明为final,使编译器作优化数组声明数组的应紧跟类型名在“”之前不能有空格return语句return后的表达式,应用括号包起来简单返回值,不用括号Neusoft Co., Ltd.语句复合语句括号的格式所有的复合语句建议采用如下花括号形式:中的语句应该单独作为一行在中的复合语句应该有层次如下的情况可以不使用花括号语句块中包含null语句,或都只有简单的一行注:有此IDE工具的默认设置“”是在行尾,请修改IDE工具设置,使
16、“”换行显示Neusoft Co., Ltd.语句复合语句if语句for语句while语句do-while语句switch语句try语句synchronized语句标签语句通常用花括号封装标签本身应在单独一行,后面跟一冒号“:”Neusoft Co., Ltd.代码检查Neusoft Co., Ltd.内容目的和意义代码检查前的准备工作代码检查Checklist简介代码检查Checklist的使用代码检查工具简介代码检查工具的使用代码检查时机代码检查流程练习Neusoft Co., Ltd.代码检查的目的和意义检查编码规范性:提高代码的可读性和可维护性。一个团队中,代码容易在程序员之间共享。易
17、于代码的回顾。维护部门交付产品的规范形象。检查编码质量:提高代码质量。提升代码成果的交付能力。Neusoft Co., Ltd.编辑Java文件之前,已经在编辑器Eclipse里引入部门制定的编码风格文件codeformatter.xml和codetemplates.xml。从部门获取代码复查checklist文件。从部门获取同行评审记录文件。从部门获取Checkstyle工具包。从部门获取Findbugs工具包和Findbugs缺陷等级对照表。代码检查前的准备工作Neusoft Co., Ltd.代码检查Checklist简介JavaScriptJSPJAVAC+Neusoft Co., L
18、td.代码检查Checklist的使用1.PSM裁剪组织的“代码复查Checklist”,形成适合项目的编码时“代码复查Checklist”,并对开发人员进行讲解。2.,预防产生Checklist中的问题。3.人工代码复查,核对Checklist中的问题项,检查出的问题记录到“同行评审记录”中。4.使用工具进行Java代码复查,核对Checklist中的问题项及其修改等级,检查出的问题记录到“同行评审记录”中。Neusoft Co., Ltd.Checkstyle工具CheckStyle,能够自动化检查Java代码规范,从而使得开发人员从这项重要但是枯燥的任务中解脱出来。它能够检查:检查Jav
19、adoc注释。检查每行的最大字符数,不得超过120。忽略指定格式的行,如*号或者/号开始的。检查方法的最大行数,不得超过200。检查文件的最大行数,不得超过2000。检查方法名称。检查是否有空块。检查if、else是否使用。是否使用了tab键。 Checkstyle工具简介Neusoft Co., Ltd.Checkstyle插件的使用在Eclipse中安装Checkstyle插件对Checkstyle进行配置:导入规则文件配置当前项目的Checkstyle选项查看检查结果Checkstyle的检查在编码过程中,并非集中检查规则文件经过精心编制,所有的问题都需要消除Neusoft Co., L
20、td.Findbugs工具简介Findbus工具:Findbugs 是一个静态分析工具,它检查类或者JAR文件,将字节码与一组缺陷模式进行对比,以发现可能的问题。有了静态分析工具,就可以在不实际运行程序的情况下对软件进行分析。Findbugs工具能够检查出的问题,详见工具包下docbugDescriptions.html。部门对检查结果进行了裁减,并制定了等级,详见“Findbugs缺陷等级对照表”。Neusoft Co., Ltd.Findbugs插件的使用在Eclipse中安装Findbugs插件对当前项目的FindBugs选项进行配置对当前项目执行Find Bugs操作查看检查结果Neusoft Co., Ltd.日常编码提交测试之前产品发布之前代码检查时机Neusoft Co., Ltd.代码检查流程确定代码检查人员做好代码检查前的准备工作准备需要检查的代码成果PSM裁减组织代码检查checklistPSM讲解裁减后的代码检查checklist使用Checkstyle工具检查代码规范使用Findbugs工具检查代码质量代码检查结果记入同行评审记录人工检查代码修正同行评审记录中的缺陷代码检查人员确认缺陷修正结果或再次进行代码检查缺陷关闭Neusoft Co., Ltd.Neusoft Co., Ltd.谢谢结束结束