大家好
java 专案里面多多少少会使用到反射机制写程式
比较常见的像是 criteria ...
例如程式码
final CriteriaQuery<User> q = cb.createQuery(User.class);
final Root<User> users = q.from(User.class);
final Predicate condition = cb.equal(users.get("privilegeLevel"), 5);
q.select(users)
.where(condition)
.orderBy(cb.asc(users.get("userId")));
其中 privilegeLevel 会直接对应到 entity 的 field
若是 entity 修改 privilegeLevel 字段名称,在 compile 阶段并不会检查到
而到真正 runtime 时才会发现错误。
想请问有无方法可以在 compile 时可以检查的 ?
(ide plugin 或 build tool plugin 都可)
除了 compile 检查以下我目前知道以下几种解法
1. 让所有开发工程师都明白这件事情,在修改程式码时会更小心注意。
2. 使用 http://goo.gl/zhhdLh 文章的方法。
3. 修改程式有发生错误的风险,所以不要修改程式。
方法 1... , 可让发生错误降低,但无法保证不会发生...
方法 2... , 可以杜绝错误,但个人有点不爱,因为除了 Criteria 外还有 hql,
需要把整个专案(跟DB有关)翻掉重写,我们专案没有 test 流程,
若是人工修改人工测试,会消耗非常巨量的时间。
方法 3... , 最安全的做法,但我觉得同时也是最糟糕的做法。
三个方法要选的话我会选 1
不过目前想到最完美的方法就是有现成的 compile 时段就可以检查的,
想请问各位前辈有无这种工具或套件,若没有的话,你们专案是如何解决
这类问题的 !?