JAVA开发规范

来源:互联网 发布:java源码保护 编辑:程序博客网 时间:2024/06/07 08:40
1:后端权限注解
@SysPmCheck(menuCose = "MENU_SYSTEM_ADD")
2: 加入js要带上版本号,防止页面缓存
?v=${ctx.version}
3:命名与数据库一至
Ø 变量声明一般采用单行文档注释
Ø 方法一般采用多行文档注释
Ø 方法内部代码注释一般采用“//”实现注释

尽量避免一行的长度超过200个字符

要求:当一个表达式无法容纳在一行内时,可依据以下规则换行
Ø 在逗号后面换行
Ø 在操作符前面换行
Ø 先选择高优先级操作符处换行
Ø 后一行与前一行表达式对齐
Ø 适当的时候插入8个字符进行缩进

要求:以下情况应该使用一个空行
Ø 两个方法之间
Ø 块注释或单行注释之前
Ø 一个方法内的两个逻辑段之间,用以提高可读性
Ø 其他需要空行以提高代码可读性地方

要求:不要把多个短语句写在一行中,即一行只写一条语句
例子:不要产生如下语句
Object o = new Object(); Object b = null;
下面的情况,需要放一行
Object a,b =null;

1.1.1    包名
要求:必须小写
例子:com.landray.kmss.common
1.1.1    类名、接口名
要求:名词,采用大小写混合的方式,每个单词的首字母大写。
例子:ImageSprite

类名往往用不同的后缀表达额外的意思,如下表:
后缀名意义举例Service表明这个类是个服务类,里面包含了给其他类提同业务服务的方法PaymentOrderServiceImpl这个类是一个实现类,而不是接口PaymentOrderServiceImplInter这个类是一个接口LifeCycleInterDao这个类封装了数据访问方法PaymDaoentOrderAction直接处理页面请求,管理页面逻辑了类UpdateOrderListActionListener响应某种事件的类PaymentSuccessListenerEvent这个类代表了某种事件PaymentSuccessEventServlet一个ServletPaymentCallbackServletFactory生成某种对象工厂的类PaymentOrderFactoryAdapter用来连接某种以前不被支持的对象的类DatabaseLogAdapterJob某种按时间运行的任务PaymentOrderCancelJobWrapper这是一个包装类,为了给某个类提供没有的能力SelectableOrderListWrapperEntity实体层 包名为 EntityStudentUtils工具类 包名最后一个取名必须为UtilsGpsUtils

1.1.1    方法名
首字母小写,如 addOrder()不要 AddOrder()
动词在前,如 addOrder(),不要orderAdd()
前缀名意义举例add新增addOrder()delete删除deleteOrder()update更新updateOrder()init或则initialize初始化,暗示会做些诸如获取资源等特殊动作initializeObjectPooldestroy销毁,暗示会做些诸如释放资源的特殊动作destroyObjectPool

1.1.1.1     静态常量
全大写用下划线分割,如
public static find String ORDER_PAID_EVENT = “1”;
public static find String ISOPEN= “1”;

1.1.1.1      枚举
全大写,用下划线分割,如
public enum Events {
ORDER_PAID,
ORDER_CREATED
}

1.1.1    变量名
要求:用大小写混合的方式命名,第一个单词的首字母小写,其后单词的首字母大写。
例子:float myWidth;

1.1.1    常量名
要求:全部大写,单词间用下划线隔开,常量使用static final修饰。
例子:static final int MIN_WIDTH = 4;


1.1.1    is用法
要求:Boolean变量命名和访问方法中应当使用is
例子:boolean isVisible; boolean isAssigned();
背景:sun java编码规范,在写JavaBean时该规则实际是强制的。还可以使用can, has

1.1.1    循环变量
要求:方法内部循环变量应当使用i, j, k(数字)


1.1.1    JAVA 5.0新循环写法
要求:尽量使用Java 5.0新循环写法。
例子:
ArrayList<String> list = new ArrayList<String>();
for(String str : list){
System.out.println(str);
}
背景:代码更加简洁。

1.1.1    equals判断
要求:使用equals判断时,将常量放在前面。
例子:
不推荐:
String str = "";
static final String MIN_STATUS = "failure";
str.equals(MIN_STATUS);
建议:
MIN_STATUS.equals(str);
背景:变量放在前面有可能产生NullPointException

1.1.1    循环语句中定义变量
要求:尽量不要在循环语句中定义变量,将变量定义放在循环语句外面。
例子:
不推荐:
while (fdParent != null) {
String fdName = fdParent.getFdName();
……
fdParent = fdParent.getFdParent();
}
建议:
String fdName = null;
while (fdParent != null) {
fdName = fdParent.getFdName();
……
fdParent = fdParent.getFdParent();
}
背景:在循环中定义变量会产生很多没用的变量,性能消耗较多

1.1.1    可移植性
要求:
1、 尽量不要使用已经被标注为不赞成使用的类和方法;
2、 用separator()方法来代替路径中的“\”或“/”;
3、 用pathSeparator()方法代替路径中的“:”或“;”。
例子:无
背景:有助于代码在不同的JAVA虚拟机和操作系统中运行。
1.1.1    switch语句
要求:每一个case语句后面不要忘了加break。每一个switch语句块都应该有一个default
背景:防止错误的程序流程。

1.1.1    浮点数的比较
要求:永远不要用一个浮点数去比较一个常量或另一个浮点数!也不要用浮点数进行计算!无论float或double型。 对包含小数位的数字进行操作时应使用BigDecimal类。
例子:参考JAVA API文档
背景:浮点数运算会有误差

1.1.1    使用log而不是System.out.println()
log可以设定级别,可以控制输出到哪里,容易区分是在代码的什么地方打印的,而System.out.print则不行。而且,System.out.print的速度很慢。所以,除非是有意的,否则,都要用log。至少在提交到svn之前把System.out.print换成log。(slf4j—log4j

1.1.1    每个if while for等语句,都不要省略大括号{}
0 0
原创粉丝点击