爲何我不用Lombok
1. 什麼是Lombok
Lombok是一個Java庫,能自動掛載到編輯器和構建工具,爲你的Java增光添彩。經過一個註解的方式,沒必要再爲類編寫getter或eques方法,自動化日誌變量,與更多。java
簡單說Lombok經過一個註解來簡化java代碼,提升開發效率。編輯器
各類好處與實用技巧請自行百度谷歌工具
2. 爲何我不用Lombok
- Lombok的侵入式太強了,若是項目中有一我的使用了,其餘的人就必須用這個插件。若是別人不用,就根本無法跑程序。再者說,並非每一個人都在用IDE,沒有這個插件怎麼辦。
- 並且若是一個底層的Jar文件依賴了Lombok,那麼全部用到這個Jar的項目都必須添加Lombok的依賴,構建也須要設置,並且這個依賴不必定是顯性的,有時候須要猜才能知道是Lombok的問題。
- 有的時候想確認是否調用了getter和setter,須要在源代碼里加斷點,可是添加了Lombok以後就只能猜想了。並且當想要知道某個屬性的getter方法都被哪些類引用也很難查找到。
- 對於某些新的功能和複雜的功能,好比@EqualsAndHashCode(callSuper=true)和@AllArgsConstructor這些,且有可能產生混亂的特性還不敢使用,由於不知道自動生成的代碼是什麼樣子。假若有不太懂的人使用,並且產生了和預期不同的結果,Debug也不是很方便。畢竟咱們不能保證每個人都很是瞭解Lombok的每個註釋。
- 若是你的開發過程當中須要使用不少自定義的Annotation在JavaBean上,這個會致使在使用自定義Annotation的時候仍是須要手動寫出getter和setter方法的。 若是隻是簡單的CRUD開發,那徹底能夠忽略這個問題。
- 仍是會存在一些識別上問題,好比某些字段的的名字並不規範的時候,或者與公司規範衝突的時候仍是須要手寫getter和setter方法的。好比pId字段在JavaBean規範中會寫成getpId,uName會寫成getuName。而在Lombok中卻寫成了getpid,getuname(至少Lombok在當前版本有這個問題)
3. 是問題但也不是問題的問題
- 有人說有升級的問題,其實不是大事,不少插件再系統版本升級的時候多少有些不適配,升級版本號就行了,只是Lombok做爲底層依賴,要升級的地方比較多就是了。
- 有人說破壞封裝,其實Lombok有專有的設置
@Setter(AccessLevel.PROTECTED) private String name;
- 有人說不會用的方法就不要用,我只想說,有些坑能夠本身不踩,但不能控制別人不踩,最後致使整個項目出問題,仍是挺心煩的。
結語
別問我爲何踩了這麼多的雷,心累了。只是由於擔憂再出現一些不知道的問題,已棄坑。url
固然畢竟Lombok並無強大到必須用的地步,也沒有坑到一點也不能用,因此你們也都會各抒己見。所以主要仍是遵循如下兩點.net
- 本身的項目,喜歡用就用,不喜歡用就不用
- 團隊的項目,你們決定用不用,或者老大決定用不用
不喜勿噴,謝謝插件