- 代码中的命名均不能以下划线或美元符号开始,也不能以下划线或美元符号结束;
- 类名使用UpperCamelCase风格,方法名、参数名、成员变量、局部变量都统一使用lowerCamelCase风格,必须遵从驼峰形式;
- 常量命名全部大写,用下划线隔开;
- 抽象类命名使用Abstract或Base开头;异常类命名使用Exception结尾;测试类命名以它要测试的类名开始,以Test结尾;
- POJO类中布尔类型的变量都不要加is前缀,否则部分框架会引起序列化错误;
- 如果模块、类、方法使用了设计模式,应在命名时体现出具体模式;
- 接口类中的方法和属性不要加任何修饰符号(public也不要加),保持代码的间接性,并加上有效的javadoc注释。尽量不要在接口里定义变量,如果一定要定义变量,必须是与接口方法相关的,并且是整个应用的基础变量;
- 对于Service和Dao类,基于SOA的理念,暴露出来的服务一定是接口,内部的实现类用Impl后缀和接口区别;
- 如果是形容能力的接口名称,取对应的形容词为接口名(通常是-able的形式);
- long或者Long初始赋值时,使用大写的L,不能是小写的l;
- 不要使用一个常量类维护所有变量,要按常量功能进行归类,分开维护;
- 方法参数在定义和传入时,多个参数都好后边必须加空格;
- 所有的重写方法,必须加@Override注解;
- 所有相同类型的包装类对象之间的比较,全部使用equals方法;
- POJO类必须写toString方法,在使用IDE的工具source->generate toString时,如果继承了另一个POJO类,注意在前面加一个super.toString;
- 不要在foreach循环里进行元素的remove/add操作,remove元素轻使用Iterator方式,如果并发操作,需要对Iterator对象加锁;
- 高度注意Map类集合K/V嫩不能存储null值的情况;
- 线程资源必须通过线程池提供,不允许在应用中自行显示创建线程;
- 在if / else / for / while / do语句中,必须使用大括号,即使只有一行代码,也应该避免使用单抗的编码方式;
- 在高并发场景中,避免使用“等于”判断作为终端或退出的条件;
- 在表达异常的分支时,尽量少用if-else方式;
- 类、类属性、类方法的注释必须使用Javadoc规范,使用
/**内容*/ 格式,不得使用//xxx 方式; - 所有的抽象方法(包括接口中的方法)必须要用Javadoc注释,除了返回值、参数、异常说明外,还必须指出该方法做什么事情,实现什么功能;
- 所有的类都必须添加创建者和创建日期;
- 后台输送给网页的变量必须加$!{var}–中间是感叹号;
- 注意
Math.random() 这个方法返回的是double类型,取值范围
0
≤
x
<
1
0\le{x}\lt{1}
0≤x<1(能够取到零值,注意除零异常),如果想获取整数类型的随机数,不要将x放大10的若干倍然后取整,应该直接使用Random对象的nextInt或者nextLong方法; - 不要在视图模板中加入任何复杂的逻辑;
- 隶属于用户个人的页面或者功能必须进行权限控制校验;
- 用户敏感数据禁止直接展示,必须对展示数据进行脱敏;
- 用户输入的SQL参数严格使用参数绑定或者METADATA字段值绑定,防止SQL注入,禁止字符串拼接SQL访问数据库。
- 用户请求传入的任何参数必须做有效性验证;
- 禁止向HTML页面输出未经安全过滤或未正确转义的用户数据;
- 表单、AJAX提交必须执行CSRF安全过滤
- 在使用平台资源,譬如短信、邮件、电话、下单、支付,必须实现正确的防重放限制,如数量限制、疲劳度限制、验证码校验,避免被滥刷、资损。
|