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 | 表明这个类是个服务类,里面包含了给其他类提同业务服务的方法 | PaymentOrderService |
Impl | 这个类是一个实现类,而不是接口 | PaymentOrderServiceImpl |
Inter | 这个类是一个接口 | LifeCycleInter |
Dao | 这个类封装了数据访问方法 | PaymDaoentOrder |
Action | 直接处理页面请求,管理页面逻辑了类 | UpdateOrderListAction |
Listener | 响应某种事件的类 | PaymentSuccessListener |
Event | 这个类代表了某种事件 | PaymentSuccessEvent |
Servlet | 一个Servlet | PaymentCallbackServlet |
Factory | 生成某种对象工厂的类 | PaymentOrderFactory |
Adapter | 用来连接某种以前不被支持的对象的类 | DatabaseLogAdapter |
Job | 某种按时间运行的任务 | PaymentOrderCancelJob |
Wrapper | 这是一个包装类,为了给某个类提供没有的能力 | SelectableOrderListWrapper |
Entity | 实体层 包名为 Entity | Student |
Utils | 工具类 包名最后一个取名必须为Utils | GpsUtils |
1.1.1
方法名
首字母小写,如
addOrder()
不要
AddOrder()
动词在前,如
addOrder()
,不要
orderAdd()
前缀名 | 意义 | 举例 |
add | 新增 | addOrder() |
delete | 删除 | deleteOrder() |
update | 更新 | updateOrder() |
init或则initialize | 初始化,暗示会做些诸如获取资源等特殊动作 | initializeObjectPool |
destroy | 销毁,暗示会做些诸如释放资源的特殊动作 | 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
等语句,都不要省略大括号
{}