爲何我不用Lombok

爲何我不用Lombok

1. 什麼是Lombok

Lombok是一個Java庫,能自動掛載到編輯器和構建工具,爲你的Java增光添彩。經過一個註解的方式,沒必要再爲類編寫getter或eques方法,自動化日誌變量,與更多。java

簡單說Lombok經過一個註解來簡化java代碼,提升開發效率。編輯器

各類好處與實用技巧請自行百度谷歌工具

2. 爲何我不用Lombok

  1. Lombok的侵入式太強了,若是項目中有一我的使用了,其餘的人就必須用這個插件。若是別人不用,就根本無法跑程序。再者說,並非每一個人都在用IDE,沒有這個插件怎麼辦。
  2. 並且若是一個底層的Jar文件依賴了Lombok,那麼全部用到這個Jar的項目都必須添加Lombok的依賴,構建也須要設置,並且這個依賴不必定是顯性的,有時候須要猜才能知道是Lombok的問題。
  3. 有的時候想確認是否調用了getter和setter,須要在源代碼里加斷點,可是添加了Lombok以後就只能猜想了。並且當想要知道某個屬性的getter方法都被哪些類引用也很難查找到。
  4. 對於某些新的功能和複雜的功能,好比@EqualsAndHashCode(callSuper=true)和@AllArgsConstructor這些,且有可能產生混亂的特性還不敢使用,由於不知道自動生成的代碼是什麼樣子。假若有不太懂的人使用,並且產生了和預期不同的結果,Debug也不是很方便。畢竟咱們不能保證每個人都很是瞭解Lombok的每個註釋。
  5. 若是你的開發過程當中須要使用不少自定義的Annotation在JavaBean上,這個會致使在使用自定義Annotation的時候仍是須要手動寫出getter和setter方法的。 若是隻是簡單的CRUD開發,那徹底能夠忽略這個問題。
  6. 仍是會存在一些識別上問題,好比某些字段的的名字並不規範的時候,或者與公司規範衝突的時候仍是須要手寫getter和setter方法的。好比pId字段在JavaBean規範中會寫成getpId,uName會寫成getuName。而在Lombok中卻寫成了getpid,getuname(至少Lombok在當前版本有這個問題)

3. 是問題但也不是問題的問題

  1. 有人說有升級的問題,其實不是大事,不少插件再系統版本升級的時候多少有些不適配,升級版本號就行了,只是Lombok做爲底層依賴,要升級的地方比較多就是了。
  2. 有人說破壞封裝,其實Lombok有專有的設置 @Setter(AccessLevel.PROTECTED) private String name;
  3. 有人說不會用的方法就不要用,我只想說,有些坑能夠本身不踩,但不能控制別人不踩,最後致使整個項目出問題,仍是挺心煩的。

結語

別問我爲何踩了這麼多的雷,心累了。只是由於擔憂再出現一些不知道的問題,已棄坑。url

固然畢竟Lombok並無強大到必須用的地步,也沒有坑到一點也不能用,因此你們也都會各抒己見。所以主要仍是遵循如下兩點.net

  1. 本身的項目,喜歡用就用,不喜歡用就不用
  2. 團隊的項目,你們決定用不用,或者老大決定用不用

不喜勿噴,謝謝插件

相關文章
相關標籤/搜索