使用lombok 的爭議

大家好嫉到,我是G探險者沃暗。

項目里,因為我使用了Lombok插件何恶,然后代碼走查的時候被領(lǐng)導點名了孽锥。

我心想,這么好用的插件细层,為啥不推廣呢忱叭,整天寫那些煩人的setter,getter方法就不嫌煩么今艺?

[圖片上傳失敗...(image-842c4b-1717399272559)]

領(lǐng)導既然不讓用韵丑,自然有他的道理。

[圖片上傳失敗...(image-28439f-1717399272559)]

于是我查了一番關(guān)于lombok的一些緋聞虚缎。就有了這篇文章撵彻。

首先呢,Lombok 是一個在 Java 項目中廣泛使用的庫实牡,旨在通過注解自動生成代碼陌僵,如 getter 和 setter 方法,以減少重復代碼并提高開發(fā)效率创坞。然而碗短,Lombok 的使用也帶來了一些挑戰(zhàn)和爭議,特別是關(guān)于代碼的可讀性和與 Java Bean 規(guī)范的兼容性题涨。

Lombok 基本使用

示例代碼

不使用 Lombok:

public class User {    private String name;    private int age;    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    // 其他 getter 和 setter}

使用 Lombok:

import lombok.Data;@Datapublic class User {    private String name;    private int age;    // 無需顯式編寫 getter 和 setter}

Lombok 的爭議

  1. 代碼可讀性和透明度:Lombok 自動生成的代碼在源代碼中不直接可見偎谁,可能對新開發(fā)者造成困擾。

  2. 工具和 IDE 支持:需要特定的插件或配置纲堵,可能引起兼容性問題巡雨。

  3. 與 Java Bean 規(guī)范的兼容性:Lombok 在處理屬性命名時可能與 Java Bean 規(guī)范產(chǎn)生沖突,特別是在屬性名以大寫字母開頭的情況席函。

下面我就列舉一個例子進行說明铐望。

屬性命名的例子

假設(shè)有這么一個屬性,aName;

標準 Java Bean 規(guī)范下:

  • 屬性 aName 的setter getter 方法應為 setaName() getaName()茂附。

  • 但是 Lombok 可能生成 getAName()正蛙。

這是因為Lombok 在生成getter和setter方法時,將屬性名的首字母也大寫营曼,即使它是小寫的乒验。所以對于aName屬性,Lombok生成的方法可能是getAName()和setAName()溶推。

在處理JSON到Java對象的映射時徊件,JSON解析庫(如Jackson或Gson)會嘗試根據(jù)Java Bean規(guī)范匹配JSON鍵和Java對象的屬性。它通常期望屬性名的首字母在getter和setter方法中是小寫的蒜危。因此虱痕,如果JSON鍵為"aName",解析庫會尋找setaName()方法辐赞。

所以部翘,當你使用Lombok的@Data注解,且Lombok生成的setter方法為setAName()時响委,JSON解析庫可能找不到匹配的方法來設(shè)置aName屬性新思,因為它尋找的是setaName()。

這種差異可能在 JSON 到 Java 對象的映射中引起問題赘风。

Java Bean 命名規(guī)范

根據(jù) Java Bean 規(guī)范夹囚,屬性名應遵循駝峰式命名法:

  • 單個單詞的屬性名應全部小寫。

  • 多個單詞組成的屬性名每個單詞的首字母通常大寫邀窃。

結(jié)論

Lombok 是一個有用的工具荸哟,可以提高編碼效率并減少冗余代碼。但是瞬捕,在使用它時鞍历,團隊需要考慮其對代碼可讀性、維護性和與 Java Bean 規(guī)范的兼容性肪虎。在決定是否使用 Lombok 時劣砍,項目的具體需求和團隊的偏好應該是主要的考慮因素。

原文鏈接:https://baijiahao.baidu.com/s?id=1784888647353345717

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末扇救,一起剝皮案震驚了整個濱河市刑枝,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌迅腔,老刑警劉巖仅讽,帶你破解...
    沈念sama閱讀 206,126評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異钾挟,居然都是意外死亡洁灵,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評論 2 382
  • 文/潘曉璐 我一進店門掺出,熙熙樓的掌柜王于貴愁眉苦臉地迎上來徽千,“玉大人,你說我怎么就攤上這事汤锨∷椋” “怎么了?”我有些...
    開封第一講書人閱讀 152,445評論 0 341
  • 文/不壞的土叔 我叫張陵闲礼,是天一觀的道長牍汹。 經(jīng)常有香客問我铐维,道長,這世上最難降的妖魔是什么慎菲? 我笑而不...
    開封第一講書人閱讀 55,185評論 1 278
  • 正文 為了忘掉前任嫁蛇,我火速辦了婚禮,結(jié)果婚禮上露该,老公的妹妹穿的比我還像新娘睬棚。我一直安慰自己,他們只是感情好解幼,可當我...
    茶點故事閱讀 64,178評論 5 371
  • 文/花漫 我一把揭開白布抑党。 她就那樣靜靜地躺著,像睡著了一般撵摆。 火紅的嫁衣襯著肌膚如雪底靠。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 48,970評論 1 284
  • 那天特铝,我揣著相機與錄音苛骨,去河邊找鬼。 笑死苟呐,一個胖子當著我的面吹牛痒芝,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播牵素,決...
    沈念sama閱讀 38,276評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼严衬,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了笆呆?” 一聲冷哼從身側(cè)響起请琳,我...
    開封第一講書人閱讀 36,927評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎赠幕,沒想到半個月后俄精,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,400評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡榕堰,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,883評論 2 323
  • 正文 我和宋清朗相戀三年竖慧,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片逆屡。...
    茶點故事閱讀 37,997評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡圾旨,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出魏蔗,到底是詐尸還是另有隱情砍的,我是刑警寧澤,帶...
    沈念sama閱讀 33,646評論 4 322
  • 正文 年R本政府宣布莺治,位于F島的核電站廓鞠,受9級特大地震影響帚稠,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜床佳,卻給世界環(huán)境...
    茶點故事閱讀 39,213評論 3 307
  • 文/蒙蒙 一滋早、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧夕土,春花似錦馆衔、人聲如沸瘟判。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽拷获。三九已至篮撑,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間匆瓜,已是汗流浹背赢笨。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評論 1 260
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留驮吱,地道東北人茧妒。 一個月前我還...
    沈念sama閱讀 45,423評論 2 352
  • 正文 我出身青樓,卻偏偏與公主長得像左冬,于是被迫代替她去往敵國和親桐筏。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,722評論 2 345

推薦閱讀更多精彩內(nèi)容