调用printStackTrace()
报告使用Throwable.printStackTrace()方法,这个方法通常是临时调试使用,在线上环境中应该去除,而使用日志机制代替。
catch(SQLException e) { e.printStackTrace(); }
换成:
catch(SQLException e) { log.error("sql error",e); }
文件路径
比如说要在temp目录下建立一个test.txt文件,
- 在Windows下应该这么写:
File file1 = new File (“C:\tmp\test.txt”); - 在Linux下则是这样的:
File file2 = new File ("/tmp/test.txt");
如果要考虑跨平台,则最好是这么写:
File myFile = new File("C:" + File.separator + "tmp"
+ File.separator, "test.txt");
Mybatis参数
使用注解的方式绑定参数命名
public List<ContextPhoto> findByPage
( @Param("start") Integer start,
@Param("limit") Integer limit );
各层命名规约:
-
Service/DAO 层方法命名规约
a) 获取单个对象的方法用 get 做前缀。
b) 获取多个对象的方法用 list 做前缀。
c) 获取统计值的方法用 count 做前缀。
d) 插入的方法用 save/insert 做前缀。
e) 删除的方法用 remove/delete 做前缀。
f) 修改的方法用 update 做前缀。 -
领域模型命名规约
a) 数据对象:xxxDO,xxx 即为数据表名。
b) 数据传输对象:xxxDTO,xxx 为业务领域相关的名称。
c) 展示对象:xxxVO,xxx 一般为网页名称。
d) POJO 是 DO/DTO/BO/VO 的统称,禁止命名成 xxxPOJO。 -
常量的复用层次有五层:
a) 跨应用共享常量:放置在二方库中,通常是 client.jar 中的 constant 目录下。
b) 应用内共享常量:放置在一方库中,通常是 modules 中的 constant 目录下。反例:易懂变量也要统一定义成应用内共享常量,两位攻城师在两个类中分别定义了表示 “是”的变量: 类 A 中:public static final String YES = "yes"; 类 B 中:public static final String YES = "y"; A.YES.equals(B.YES),预期是 true,但实际返回为 false,导致线上问题。
c) 子工程内部共享常量:即在当前子工程的 constant 目录下。
d) 包内共享常量:即在当前包下单独的 constant 目录下。
e) 类内共享常量:直接在类内部 private static final 定义。