大家好
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 時段就可以檢查的,
想請問各位前輩有無這種工具或套件,若沒有的話,你們專案是如何解決
這類問題的 !?