养成良好java代码编码规范

一.基本原则

强制性原则:

1.字符串的拼加操作,必须使用StringBuilder;
2.try…catch的用法

try{

}catch{Exception e

e.printStackTrace();

}finally{

}//在最外层的Action中可以使用,其它地方一律禁止使用;

try{ //程序代码 }catch(Exception e){ //为空,什么都不写 }//在任何场景中都禁止使用

try{

}catch{Exception e throw new runtimeException(e);//最优先采用的写法 }finally{

}

1.对于捕获后,不知道干什么事情或者也不知道怎样处理的情况,就不要捕获异常,留给外出层去捕获处理;
2.返回类型为集合的,在方法声明中必须使用泛型,必须在javadoc中注明什么情况下返回null,什么情况下返回空集合。
3.对于方法、变量声明范围要采用如下优先级:private、protected、public,对于变量要采用如下的优先级:局部变量、实例变量、类变量,如果必须要采用实例变量或类变量的情况下,要保证线程安全性,如有可能尽量采用ThreadLocal保存实例变量或类变量;
4.如果不是必须,不要在循环中去定义变量或者new 对象;尽量在需要的最后一刻才去new 对象;
5.如果不是必须,不要在循环中去用try…catch;
6.类中对于比较复杂的逻辑要采用行注释的方式进行注释,java代码中绝对不允许采用块注释(/**/)进行注释;
7.Java类的名称第一个子母必须大写,有多个单词组成的,每个单词的首字母大写
8.jsp的文件名必须全部小写;
9.Spring的bean配置文件名必须小写,格式为xxx.bean.xml,xxx.bean.xml配置文件中的<bean id=”” ,此处的id,就是将类名的第一个字母小写放到此处。
10.xwork的配置文件名必须小写,且遵循xwork_xxx.xml的格式书写,其中XXX是业务名称的缩写;
11.日志的处理;

if (log.isDebugEnabled())

ex.printStackTrace(); else log.error("从数据库删除: [" + entity.getClass().getName() + "] 实例失败", daex);

throw new PersistenceException("从数据库删除: [" + entity.getClass().getName()+ "] 实例失败", daex);

12.代码中严禁使用System.out.println()进行调试输出,如果要使用调试信息,必须使用log.debug()。对于必要的信息使用log.info()进行输出;
13.类中不要出现无用import,可以采用IDE工具进行优化,类提交前进行代码的格式化;
14.有业务逻辑处理的类必须写junit单元测试类;
15.国际化的支持:ftl模板中不允许出现中文字符,要全部放到相应的properties文件中,properties文件要放到和Action类同样的目录中;ftl的编码要全部采用UTF-8的格式;properties文件的命名:中文:Action名称+“_zh”+“_CN”.properties,英文:Action名称+“_en”+“_US”.properties
16.一个程序文件最好不要超过2000行
17.尽可能缩小对象的作用域,这样对象的可见范围和生存期也都会尽可能地小,尽所有可能优先采用局部变量,实在没有办法用全局变量的,优先采用ThreadLocal来处理。
18.一个方法所完成的功能要单一,不同的功能封装为不同的方法.
19.尽可能的处理异常或转换异常,不要一味的包装异常
20.如果对象在某个特定范围内必须被清理(而不是作为垃圾被回收),请使用带有finally子句的try块,在finally子句中进行清理。
21.对于把一些逻辑相关的类组织在一起,可以考虑把一个类的定义放在另一个类的定义中,这种情况推荐使用内部类(比如界面层中的事件响应等)。内部类拥有所有外围类所有成员的访问权。
22.对成员变量的访问最好通过getter/setter方法,这样能够保证访问的合法性,以及代码调整
23.优先选择接口而不是抽象类或具体类。如果你知道某些东西将成为基类,你应当优先把它们设计成接口;只有在必须放进方法定义或成员变量时,才把它修改为具体或抽象类。接口只和客户希望的动作有关(协议),而类则倾向于关注实现细节。
24.使用java标准库提供的容器。精通他们的用法,将极大地提高工作效率。优先选择ArrayList来处理顺序结构,选择HashSet来处理集合,选择HashMap来处理关联数组,选择linkedList来处理堆栈和队列,它对顺序访问进行了优化,向List中间插入与删除的开销小,但随机访问则较慢。当使用前三个的时候,应该把他们向上转型为List、Set和Map,这样就可以在必要的时候以其它方式实现
25.数组是一种效率最高的存储和随机访问对象引用序列的方式,但是当创建了一个数组对象,数组的大小就被固定了,如果在空间不足时再创建新的数组进行复制,这样效率就比ArrayList开销大了。所以必须明确使用场景。
26.尽量使用”private”、”protected”关键字。一旦你把库的特征(包括类、方法、字段)标记为public,你就再也不可能去掉他们。在这种方式下,实现的变动对派生类造成的影响最小,在处理多线程问题的时候,保持私有性尤其重要,因为只有Private的字段才会受到保护,而不用担心被未受同步控制的使用所破坏。
27.禁止后台业务代码使用如下代码

try{

something()

}catch(Exception ex)

{} new Exception()

二.类编写规范

类的结构组织,一般按照如下的顺序:

1.常量声明
2.静态变量声明
3.成员变量声明
4.构造函数部分
5.Finalize部分
6.成员方法部分
7.静态方法部分
8.这种顺序是推荐的,在实际开发中可以按照一定的尺度修改,原则是程序更易读。如对方法的排序按照重要性,或按照字母顺序排列或按照方法之间的关系排列。
9.每个方法(包括构造与finalize)都是一个段。多个变量声明按照逻辑共同组成一个段,段与段之间以空行分隔。
10.类声明时,要指出其访问控制,一般为没有修饰符,public,和private。
11.方法与方法之间,大的部分之间都需要以空行隔离。
12.编写通用性的类时,请遵守标准形式。包括定义equals()、hasCode()、toString()、Clone(实现Cloneable接口),并实现Comparable和Serialiable接口
13.对于设计期间不需要继承的类,尽量使用final

三.变量编写规范

1.对成员变量, 尽量采用private
2.每一个变量声明/定义占一行(参数变量除外),如

int a; int b;

比int a,b; 更容易读, 更容易查找bug

3.局部变量在使用前必须初始化,一般在声明时初始化
4.变量的声明要放在程序块的开始位置

public void myMethod() { int int1 = 0; // beginning of method block if (condition) { int int2 = 0; // beginning of "if" block ...

}

}

一种例外情况是在for语句中,定义声明不仅不占一行,还在表达式内部,完全采用Eclips生成,如:

for(int i = 0; i<100; i++)

5.数组的申明采用 <数据类型[] + 变量名>方式如

char[] buffer;

而不是

char buffer[];

四.方法编写规范

1.对成员方法,不要轻易的采用public的成员变量。主要的修饰符有public, private, protected, 无
2.空方法中方法声明和函数体可都在一行。如: void func(){}
3.方法和方法之间空一行
4.方法的文档注释放在方法的紧前面,不能空一行。
5.避免过多的参数列表,尽量控制在5个以内,若需要传递多个参数时,当使用一个容纳这些参数的对象进行传递,以提高程序的可读性和可扩展性
6.方法中的循环潜套不能超过2层
7.对于设计期间不需要子类来重载的类,尽量使用final
8.每个方法尽量代码行数尽量不要超过100行(有效代码行,不包括注释),但必须保证逻辑的完整性
9.接口中的方法默认级别为protected,只有很确认其它子系统的包会调用自己子系统的接口中的方法时,才将方法暴露为public.

五.语言使用及书写规范

1.避免变量的定义与上一层作用域的变量同名。
2.方法与方法之间用需要用一空行隔开
3.局部变量在使用时刻声明,局部变量/静态变量在声明时同时初始化
4.在与常数作比较时常数放在比较表达式的前面如:

if(“simpleCase”.equals(obj))… if(null == obj)….

5.return语句中,不要有复杂的运算。
6.switch语句,需要一个缺省的分支

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • JAVA代码开发规范

    一.开发工具规范: 1. 开发工具经项目负责人调试后统一确定. 2. 开发工具一经确定不允许集成任何非统一插件,若有需要,经项目负责人同意后统一为 项目组成员添加. 3. 开发工具的编码格式不允许修改. 二.排版规范: 1. 关键词(或变量)和操作符之间加一个空格. 例如:int iCont = 1;//操作符和值之间有一个空格. 2. 相对独立的代码块与块之间加空行. 例如:两个方法之间需要用空格隔开. 3. 较长的语句.表达式等要分成多行书写. 4. 长表达式要在低优先级操作符处划分新行,操

  • 8种常见的Java不规范代码

    在工作上,我最近对一个现有的Java项目代码进行了清理.完成之后,我发现了一些反复出现的不规范代码.所以,我把它们整理成了一个列表出来分享给我的同行希望能引起注意并改善代码的质量和可维护性. 这个列表不区分顺序,全部来自一些代码质量检查工具,如 CheckStyle, FindBugs 和PMD. 在Eclipse中格式化源代码并管理import语句 Eclipse提供了自动格式化源代码和管理import语句的功能(并移除未使用的语句).你可以使用下面的快捷键来使用这些功能. Ctrl + Sh

  • Java代码注释规范(动力节点整理)

    代码注释是架起程序设计者与程序阅读者之间的通信桥梁,最大限度的提高团队开发合作效率.也是程序代码可维护性的重要环节之一.所以我们不是为写注释而写注释.下面说一下我们在日常开发中使用的代码注释规范,供大家参考下. 1. 注释形式统一 在整个应用程序中,使用具有一致的标点和结构的样式来构造注释.如果在其它项目中发现它们的注释规范与这份文档不同,按照这份规范写代码,不要试图在既成的规范系统中引入新的规范. 2. 注释内容准确简洁 内容要简单.明了.含义准确,防止注释的多义性,错误的注释不但无益反而有害

  • JAVA开发中的一些规范讲解(阿里巴巴Java开发规范手册)

    一.编程规约 (一) 命名规约 1.   [强制]所有编程相关命名均不能以下划线或美元符号开始,也不能以下划线或美元符号结束.反例: _name / __name / $Object / name_ / name$ / Object$ 2.   [强制]所有编程相关的命名严禁使用拼音与英文混合的方式,更不允许直接使用中文的方式.说明:正确的英文拼写和语法可以让阅读者易于理解,避免歧义.注意,即使纯拼音命名方式也要避免采用. 反例: DaZhePromotion [打折] / getPingfen

  • Java代码注释规范详解

    代码附有注释对程序开发者来说非常重要,随着技术的发展,在项目开发过程中,必须要求程序员写好代码注释,这样有利于代码后续的编写和使用. 基本的要求: 1.注释形式统一 在整个应用程序中,使用具有一致的标点和结构的样式来构造注释.如果在其它项目中发现它们的注释规范与这份文档不同,按照这份规范写代码,不要试图在既成的规范系统中引入新的规范. 2.注释内容准确简洁 内容要简单.明了.含义准确,防止注释的多义性,错误的注释不但无益反而有害. 3.基本注释(必须加) (a) 类(接口)的注释 (b) 构造函

  • 养成良好java代码编码规范

    一.基本原则 强制性原则: 1.字符串的拼加操作,必须使用StringBuilder: 2.try-catch的用法 try{ }catch{Exception e e.printStackTrace(); }finally{ }//在最外层的Action中可以使用,其它地方一律禁止使用: try{ //程序代码 }catch(Exception e){ //为空,什么都不写 }//在任何场景中都禁止使用 try{ }catch{Exception e throw new runtimeExce

  • JAVA代码书写规范汇总详解

    一般原则 尽量使用完整的英文描述符 采用适用于相关领域的术语 采用大小写混合增强可读性 尽量少用缩写,但如果用了,要明智地使用,且在整个工程中统一 避免使用长的名字 避免使用类似的名字,或者仅仅是大小写不同的名字 避免使用下划线(除静态常量等) 命名的字母大小写问题 包名: 字母全小写 例如: cn.coderstory.Activity.Main 类,接口 :首字母大写,其他全小写 例如: class Container 方法,变量 :第二个单词开始首字母大写 例如: seedMessage

  • JAVA程序员不得不留意的编码规范

    01 规范存在的意义 应用编码规范对于软件本身和软件开发职员而言尤为重要,有以下几个原因: 好的编码规范可以尽可能的减少一个软件的维护本钱 , 并且几乎没有任何一个软件,在其整个生命周期中,均由最初的开发职员来维护: 好的编码规范可以改善软件的可读性,可以让开发职员尽快而彻底地理解新的代码: 好的编码规范可以最大限度的进步团队开发的合作效率: 长期的规范性编码还可以让开发职员养成好的编码习惯,甚至锻炼出更加严谨的思维: 02 命名规范 1. 一般概念 尽量使用完整的英文描述符 采用适用于相关领域

  • java多媒体文件编码 处理工具类代码实例

    这篇文章主要介绍了java多媒体文件编码 处理工具类使用解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 引入 <dependency> <groupId>org.apache.storm</groupId> <artifactId>storm-core</artifactId> <version>1.1.0</version> </dependency>

  • java代码规范review异常事故记录

    目录 前言 一个任务处理例子 不要生吞异常 还有问题! End 前言 不久之前,部门进行了一次代码评审. 代码整体比较简单,该吹B的地方都已经吹过了,无非是些if else的老问题而已.当翻到一段定时任务的一步执行代码时,我的双眼一亮,觉得该BB两句了. 谁知这群家伙,评审的时候满满的认同感,但评审结束不久,就给我冠了个事B的称号. 今天我就把当时的这些话儿整理整理,让大家说道说道,我到底是不是个事B.淦! 一个任务处理例子 代码的结构大体是这样的. 通过定时,这段代码每天晚上凌晨都要对数据库的

  • Java代码规范与质量检测插件SonarLint的使用

    目录 1.SonarLint 2. SonarQube 3. Alibaba代码规约插件 4. 文档 1.SonarLint SonarLint是一个代码质量检测插件,可以帮助我们检测出代码中的坏味道 下载与安装 在需要检测的单个文件或者单个项目上右键 --> Analyze --> Analyze with SonarLint 或者选中文件或目录,点击菜单栏 Analyze --> Analyze with SonarLint 我们还可以禁用某些规则 如果需要同步自定义的规则时,可以绑

  • J2EE项目代码编写规范分享

    码编写规范目的:能够在编码过程中实现规范化,为以后的程序开发中养成良好的行为习惯. 代码编写规范使用范围:J2EE项目开发. 包命名规范: 目的:包的命名规范应当体现出项目资源良好的划分 servlet类所在包命名规范:公司名称.开发组名称.项目名称.web.servlet 例如:net.linkcn.web.servlet 自定义标签类所在包命名规范:公司名称.开发组名称.项目名称.web.tags 例如:net.linkcn.web.tags 过滤器类所在包命名规范:公司名称.开发组名称.项

随机推荐