规范需要平时编码过程中注意,是一个慢慢养成的好习惯

1.基本原则

强制性原则:
     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()

2.类编写规范

类的结构组织,一般按照如下的顺序:
     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

3.变量编写规范

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[];

4.方法编写规范

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

5.语言使用及书写规范

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

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

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

java开发规范总结_代码编码规范的更多相关文章

  1. java开发规范总结_代码注释规范

    规范需要平时编码过程中注意,是一个慢慢养成的好习惯 1.基本规则 1.注释应该使代码更加清晰易懂   2.注释要简单明了,只要提供能够明确理解程序所必要的信息就可以了.如果注释太复杂说明程序需要修改调 ...

  2. Python代码编码规范

    目录 1. Introduction 介绍 2. A Foolish Consistency is the Hobgoblin of Little Minds 尽信书,则不如无书 3. Code la ...

  3. 完整java开发中JDBC连接数据库代码和步骤[申明:来源于网络]

    完整java开发中JDBC连接数据库代码和步骤[申明:来源于网络] 地址:http://blog.csdn.net/qq_35101189/article/details/53729720?ref=m ...

  4. [dev] 中文版内核代码编码规范

    我是我最喜欢的编码规范.并始终坚持. https://www.kernel.org/doc/html/v4.15/translations/zh_CN/coding-style.html

  5. 《码处高效:Java开发手册》之代码风格

    流水淡,碧天长,鸿雁成行.编码风格,简捷清爽,反引无限风光. 在美剧<硅谷>中有这样一个经典镜头,主人公 Richard 与同为开发工程师的女友闹分手,理由是两人对缩进方式有着截然不同的编 ...

  6. java入门---基础语法&基础常识&编码规范&命名规范

        一个Java程序可以认为是一系列对象的集合,而这些对象通过调用彼此的方法来协同工作.下面简要介绍下类.对象.方法和实例变量的概念. 对象:对象是类的一个实例,有状态和行为.例如,一条狗是一个对 ...

  7. 【安全开发】C/C++安全编码规范

    C本质上是不安全的编程语言.例如如果不谨慎使用的话,其大多数标准的字符串库函数有可能被用来进行缓冲区攻击或者格式字符串攻击.但是,由于其灵活性.快速和相对容易掌握,它是一个广泛使用的编程语言.下面是针 ...

  8. vs2008 多人同时开发项目时的代码注释规范格式 分类: C#小技巧 2014-04-23 14:12 297人阅读 评论(0) 收藏

    多人同时开发一个项目,区分项目的那个窗体是谁开发的,例:下面的格式 /************************************************       模块:服务器设置   ...

  9. Java开发中程序和代码性能优化

    现在计算机的处理性能越来越好,加上JDK升级对一些代码的优化,在代码层针对一些细节进行调整可能看不到性能的明显提升, 但是我觉得在开发中注意这些,更多的是可以保持一种性能优先的意识,对一些敲代码时间比 ...

随机推荐

  1. 曾经记录——asp.net中的点滴

    “<%#....%>”这是数据绑定,里面可以调用C#的方法,比如在数据控件里执行绑定某个字段<%# Eval("Name")%>这样帮顶一个Name的字段. ...

  2. WCF、.Net Remoting、Web Service概念及区别

    此文章主要参考http://www.cnblogs.com/weiweibtm/archive/2013/06/21/3148583.html 参考书籍<WCF全面解析上册>.<WC ...

  3. Tyvj P1463 智商问题 分块

    P1463 智商问题 时间: 1500ms / 空间: 131072KiB / Java类名: Main 背景 各种数据结构帝~各种小姊妹帝~各种一遍AC帝~ 来吧! 描述 某个同学又有很多小姊妹了他 ...

  4. Opencl API解释(二)

    欢迎关注,转载引用请注明 http://blog.csdn.net/leonwei/article/details/8909897 这里将更深入的说明一些OpenCL API的功能 1. 创建buff ...

  5. 让你的Xcode8 支持 iOS7

    Xcode8 发布,更新后,发现支持从iOS8开始,可是公司要求从iOS7开始,,,这和苹果相悖. 不过没关系. 跳转 www.cnblogs.com/starainDou/p/5325643.htm ...

  6. Windows版 mysql 5.7.16安装

    MySQL 5.7版本安装教程-踩坑总结 下载 MySQL下载地址选择下载64位(看自己电脑是32位还是64位) 点击下载之后,它会让你登录,没有Oracle账户,跟着它的步骤注册一个就好了. 安装 ...

  7. Linux中的文件压缩,打包和备份命令

    压缩解压命令 gzip  文件   -c : 将压缩数据输出到屏幕,可用来重定向 -v   显示压缩比等信息 -d   解压参数 -t    用来检验一个压缩文件的一致性看看档案有没错 -数字 : 压 ...

  8. JMS消息类型模型

    JMS有两种消息类型模型,一种是P2P(Point To Point), 另一种是Pub/Sub(Publisher/Subscriber),二者之间的主要区别在于消息是否支持重复消费. P2P模型中 ...

  9. Peterson算法与Dekker算法解析

    进来Bear正在学习巩固并行的基础知识,所以写下这篇基础的有关并行算法的文章. 在讲述两个算法之前,需要明确一些概念性的问题, Race Condition(竞争条件),Situations  lik ...

  10. eclipse package,source folder,folder区别及相互转换

    今天遇到一个问题:在com.a.b.c这个包路径下建一个package,但是不知为什么就会自动编程folder,而且在这个“package”下的所有property文件读不到.所以看了一下文章:在ec ...