9. 其他
1.【强制】 在使用正则表达式时,利用好其预编译功能,可以有效加快正则匹配速度。
说明:不要在方法体内定义:Pattern pattern = Pattern.compile(规则);
2.【强制】 velocity 调用 POJO 类的属性时,建议直接使用属性名取值即可,模板引擎会自动按 规范调用 POJO 的 getXxx(),如果是 boolean 基本数据类型变量(boolean 命名不需要加 is 前缀),会自动调用 isXxx()方法。
说明:注意如果是 Boolean 包装类对象,优先调用 getXxx()的方法。 3.【强制】 后台输送给页面的变量必须加$!{var}——中间的感叹号。
说明:如果 var=null 或者不存在,那么${var}会直接显示在页面上。
4.【强制】 注意 Math.random() 这个方法返回是 double 类型,注意取值的范围 0≤x<1(能够 取到零值,注意除零异常),如果想获取整数类型的随机数,不要将 x 放大 10 的若干倍然后 取整,直接使用 Random 对象的 nextInt 或者 nextLong 方法。
5.【强制】 获取当前毫秒数 System.currentTimeMillis(); 而不是 new Date().getTime();
说明:如果想获取更加精确的纳秒级时间值,使用 System.nanoTime()的方式。在 JDK8 中, 针对统计时间等场景,推荐使用 Instant 类。
6.【强制】不要在视图模板中加入任何复杂的逻辑。
说明:根据 MVC 理论,视图的职责是展示,不要抢模型和控制器的活。
7.【推荐】 任何数据结构的构造或初始化,都应指定大小,避免数据结构无限增长吃光内存。
8.【推荐】 对于“明确停止使用的代码和配置”,如方法、变量、类、配置文件、动态配置属性等要坚决从程序中清理出去,避免造成过多垃圾。
9.【强制】 每个源文件不应该超过 4000 行,每个方法体不应该超过 150 行代码(不包含 注释)
10.【强制】 一行只声明一个变量。一个变量有且只有一个功能,不能把一个变量用于多种用途。 变量声明应注意其生命周期,最好定义在变量作用范围代码段的开始部分。最好不要下一行要用,上一行才声明。
反例:
int level, size;
void myMethod() {
boolean myFlag = false;
myFlag = isVisible(myView)//作为可见性判断标志
//使用 myFlag 做其它操作
......
//作为可用性判断标志(这里应该重新定义一个变量表示)
myFlag = isEnable(myComponent)
}
12.【推荐】 控制器是充分体现系统业务功能的地方。好的控制器不宜写入过于复杂的逻辑,应条理清晰,注释到位,要充分考虑封装、重用等问题。
13.【强制】 后台发出通过重定向时,url 参数含有字或母数字外的其它字符应该进行编码处理,避免接收参数值发生错误(中文乱码,特殊符号无法正确传 递等)。另外重定向后也应该加入 return。
正例:
HtmlHelper.sendRedirect("?pid="+URLEncoder.encode(pid,"utf-8"),req uest,response);
return;