日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

騰訊電商二面:Lombok 是銀彈?還是陷阱?

來源: 責編: 時間:2024-06-19 15:36:37 196觀看
導(dǎo)讀在 Java語言中,有大量類似于 getter、setter、toString 這樣的模板代碼,為了解決這個問題,一個流行的框架 Lombok誕生了。前幾天看到騰訊的一道 2面題:Lombok是銀彈?還是陷阱?生產(chǎn)環(huán)境建議使用 Lombok嗎?今天我們一起來聊一

在 Java語言中,有大量類似于 getter、setter、toString 這樣的模板代碼,為了解決這個問題,一個流行的框架 Lombok誕生了。前幾天看到騰訊的一道 2面題:Lombok是銀彈?還是陷阱?生產(chǎn)環(huán)境建議使用 Lombok嗎?今天我們一起來聊一聊。MtK28資訊網(wǎng)——每日最新資訊28at.com

MtK28資訊網(wǎng)——每日最新資訊28at.com

Lombok是什么?

Lombok是一個三方開源的 Java庫,通過注解可以自動將代碼插入到編輯器和構(gòu)建工具中,為 Java程序員省略了很多樣板代碼的編寫,除了生成getter、setter方法,還可以生成 equals、hashCode和各種類構(gòu)造函數(shù)等。在很多 Java程序員的眼中簡直就是銀彈。MtK28資訊網(wǎng)——每日最新資訊28at.com

Lombok如何使用?

Lombok的使用很簡單,主要是通過注解來精簡代碼,常用的注解如下:MtK28資訊網(wǎng)——每日最新資訊28at.com

  • @Getter:作用在類上,為實體類所有屬性添加 getter方法;
  • @Setter:作用在類上,為實體類所有屬性添加 setter方法;
  • @ToString:作用在類上,當調(diào)用toString()方法,可以輸出實體類中所有屬性的值。
  • @Data:作用在類上,相當于同時使用了@ToString、@EqualsAndHashCode、@Getter、@Setter和@RequiredArgsConstrutor這些注解;
  • @AllArgsConstructor:作用在類上,為實體類生成包含所有屬性參數(shù)的構(gòu)造方法;
  • @NoArgsConstructor:作用在類上,為實體類生成無參構(gòu)造方法;
  • @RequiredArgsConstructor:作用在類上,配合@NonNull注解使用,生成指定參數(shù)的構(gòu)造方法。比如在age屬性前面加@NonNull注解,則User生成需要age參數(shù)的構(gòu)造方法;

下面給出了一個 Lombok @Data注解的使用示例:MtK28資訊網(wǎng)——每日最新資訊28at.com

import lombok.Data; @Datapublic class User {    private String id;    private String name;}

上述示例通過在類上使用 @Data注解后,我們就不需要再手動添加 getter、setter等模版代碼,整個代碼看起來簡潔了很多。MtK28資訊網(wǎng)——每日最新資訊28at.com

Lombok如何工作?

從 Lombok如何使用的講解中我們可以看到:Lombok主要是依賴注解來標識(標記)需要在該類中生成哪些代碼。除此之外,還有一個重要的技術(shù)點是抽象語法樹(AST)。MtK28資訊網(wǎng)——每日最新資訊28at.com

抽象語法樹(AST,Abstract Syntax Tree)是一種用于表示程序源代碼結(jié)構(gòu)的樹狀數(shù)據(jù)結(jié)構(gòu)。它抽象出代碼的語法結(jié)構(gòu),忽略某些細節(jié),以便于編譯器或解釋器進行分析和處理。MtK28資訊網(wǎng)——每日最新資訊28at.com

在 Java中,AST是一種在生成字節(jié)碼之前創(chuàng)建的中間結(jié)構(gòu),如下圖為 AST示例:MtK28資訊網(wǎng)——每日最新資訊28at.com

MtK28資訊網(wǎng)——每日最新資訊28at.com

MtK28資訊網(wǎng)——每日最新資訊28at.com

Lombok是注解和 AST的完美組合,Lombok通過識別注解,然后操縱 AST將不存在的樣板代碼插入到類中。MtK28資訊網(wǎng)——每日最新資訊28at.com

但是 Lombok并不是直接修改源代碼文件,而是在編譯過程中動態(tài)生成代碼,為了實現(xiàn)這一點,Lombok需要攔截 Java編譯器的調(diào)用,而這種攔截是通過插件來實現(xiàn)的,比如 IntelliJ, VSCode, Eclipse 或者在構(gòu)建工具 Maven, Gradle, Make等。因此,如果選用的 IDE或依賴/構(gòu)建管理器不支持 Lombok,代碼將無法編譯。MtK28資訊網(wǎng)——每日最新資訊28at.com

考慮因素

Lombok為 Java省略了很多樣板代碼的編寫,但是,對于項目中使用 Lombok,我們還是應(yīng)該多一些思考,這里主要總結(jié)為下面 4個考慮點:MtK28資訊網(wǎng)——每日最新資訊28at.com

1.編譯時間

由于 Lombok在編譯時完成樣板代碼的填充,因此,勢必導(dǎo)致編譯時間的增加,尤其是在大型代碼庫中,這種增加可能會有很大影響,盡管 Lombok隨著版本的升級,性能也在提升,但使用 Lombok的時間仍然比不使用 Lombok的時間長。MtK28資訊網(wǎng)——每日最新資訊28at.com

2.友好性

Lombok大大減少了Java類中的樣板代碼,特別是在領(lǐng)域類(TOs、DTOs、實體)中,這些類通常有很多類級別的屬性。MtK28資訊網(wǎng)——每日最新資訊28at.com

但是,使用 Lombok后,所有參與這個項目開發(fā)的技術(shù)人員都需要安裝 Lombok插件,因此,對于不愿意使用 Lombok的開發(fā)人員來說不太友好。另外,如果團隊中有剛工作的組員,如果一開始就在 Lombok這種環(huán)境下,那么對于他們的成長也是不友好的。MtK28資訊網(wǎng)——每日最新資訊28at.com

3.Java標準

在開發(fā)過程中,我們通常會使用 IDE或構(gòu)建工具自動編譯Java代碼,所以 Lombok可以在這個階段自動完成它的工作,但是,假如我們只是使用 javac來編譯源代碼,如果源代碼中使用了 Lombok生成的get方法,這種情況下編譯會出錯提示get方法不存在。MtK28資訊網(wǎng)——每日最新資訊28at.com

4.兼容性

如果項目中涉及 JDK的版本升級,可能出現(xiàn)兼容性問題,因為每個版本可能會改變 AST的生成和解釋方式。因此,如果使用了 Lombok,在升級 Java版本后,可能會導(dǎo)致項目無法編譯。MtK28資訊網(wǎng)——每日最新資訊28at.com

盡管這個問題重新編譯后可以解決,但是,如果使用了 Lombok,還是要注意上述提到的可能編譯失敗的問題。MtK28資訊網(wǎng)——每日最新資訊28at.com

5.開發(fā)和CR

Lombok 是在編譯期為類生成樣板代碼,因此,開發(fā)人員在調(diào)試時看不到這些代碼,可能會給調(diào)試帶來一些困難,另外,Lombok 自動生成的代碼是隱式的,可能會讓代碼行為不夠透明,給代碼審查和維護帶來一些挑戰(zhàn)。MtK28資訊網(wǎng)——每日最新資訊28at.com

總結(jié)

本文從面試題出發(fā),講解了 Lombok的工作原理以及其優(yōu)點和需要考慮的因素:MtK28資訊網(wǎng)——每日最新資訊28at.com

1.優(yōu)點

可以大大減少樣板代碼的手動編寫MtK28資訊網(wǎng)——每日最新資訊28at.com

2.考慮因素

  • 編譯時間
  • 友好性
  • Java標準
  • 兼容性
  • 開發(fā)和CR

3.個人建議

對于我個人而言,傾向于在項目不使用 Lombok,主要有以下 3個原因:MtK28資訊網(wǎng)——每日最新資訊28at.com

  • Lombok只是減少樣板代碼,幫助程序員偷了懶,并沒有給項目帶來什么實質(zhì)性的收益,而且這些樣板代碼 IDE也可以快速生成;
  • 基于上述 5個考慮因素的任何一個,引入 Lombok都不是一個很好的決定;
  • 網(wǎng)上看到了 Lombok很多花哨的使用方式,這樣潛在的風險更大;

最后,項目中是否使用 Lombok,取決于個人喜好以及團隊和項目的選擇(大廠一般都會禁用 Lombok),但是,上述的考慮因素或許可以給你的決策多一個參考。MtK28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://m.www897cc.com/showinfo-26-94843-0.html騰訊電商二面:Lombok 是銀彈?還是陷阱?

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 一行 Python 實現(xiàn)文件批量重命名的七種方法

下一篇: 從 Linux 服務(wù)器上遞歸下載文件夾下所有文件

標簽:
  • 熱門焦點
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
亚洲欧美日韩精品一区二区| 国产自产高清不卡| 欧美电影电视剧在线观看| 欧美激情第3页| 国产精品成人免费| 国产伪娘ts一区| 在线观看91精品国产入口| 亚洲精品久久久一区二区三区| 亚洲视屏在线播放| 久久久久**毛片大全| 久久综合婷婷| 欧美日韩国产综合久久| 国产日韩欧美麻豆| 91久久精品www人人做人人爽 | 中文久久精品| 久久成人这里只有精品| 欧美成人免费小视频| 国产精品久久久久9999吃药| 在线成人激情黄色| 亚洲一区免费在线观看| 蜜桃av一区二区三区| 国产精品久久久久久久久| 136国产福利精品导航| 亚洲一区二区久久| 蘑菇福利视频一区播放| 国产精品丝袜xxxxxxx| 亚洲国产高清一区二区三区| 亚洲欧美综合网| 欧美乱人伦中文字幕在线| 国产一区香蕉久久| 99精品福利视频| 久久久精品性| 欧美香蕉视频| 亚洲国产日韩欧美在线图片 | 米奇777在线欧美播放| 国产欧美日韩麻豆91| 99xxxx成人网| 美女主播精品视频一二三四| 国产情人节一区| 亚洲视屏一区| 欧美久久久久久久久久| 一区在线观看视频| 欧美亚洲一区二区三区| 欧美日韩一区高清| 亚洲国产美国国产综合一区二区| 欧美一区二区三区啪啪| 欧美午夜精品久久久久久久| 亚洲激情国产| 老鸭窝亚洲一区二区三区| 国产酒店精品激情| 宅男在线国产精品| 欧美激情在线| 亚洲国产欧美日韩另类综合| 久久久国产成人精品| 国产农村妇女毛片精品久久麻豆| 在线亚洲国产精品网站| 欧美精品18videos性欧美| 永久555www成人免费| 久久精品国产99国产精品| 国产精品色网| 亚洲综合日韩| 国产精品男人爽免费视频1| 亚洲五月六月| 欧美视频在线一区二区三区| 日韩一级黄色大片| 欧美精品啪啪| 亚洲精品一区二区三区福利| 欧美高清视频一区| 亚洲精品日产精品乱码不卡| 免费在线观看一区二区| 在线观看视频一区二区| 久热国产精品| 亚洲国产成人久久综合| 欧美aaa级| 亚洲国产一区在线| 欧美国产极速在线| 亚洲精品视频啊美女在线直播| 欧美大胆人体视频| 亚洲日韩成人| 欧美日韩dvd在线观看| 亚洲久色影视| 欧美色播在线播放| 亚洲专区一二三| 国产精品一区二区黑丝| 欧美亚洲一级片| 国产午夜精品久久久久久免费视 | 99国产精品99久久久久久| 欧美精品一区二| 一本到12不卡视频在线dvd| 欧美日韩精品二区| 亚洲无亚洲人成网站77777 | 国产日韩亚洲欧美| 久久看片网站| 亚洲国产欧美在线人成| 欧美另类极品videosbest最新版本| 亚洲精品一区二区三区蜜桃久 | 国产欧美精品日韩精品| 久久av最新网址| 精品成人在线观看| 你懂的国产精品永久在线| 亚洲精品美女91| 欧美日韩一区综合| 午夜精品久久久久久久99樱桃 | 欧美亚洲在线| 狠狠狠色丁香婷婷综合久久五月| 老鸭窝亚洲一区二区三区| 91久久精品国产91久久| 欧美日韩在线视频一区| 欧美一区二区三区久久精品 | 亚洲精品激情| 国产精品久久久久av免费| 翔田千里一区二区| 欲色影视综合吧| 欧美日韩高清免费| 性色一区二区三区| 亚洲大片av| 欧美午夜理伦三级在线观看| 欧美亚洲尤物久久| 亚洲国产精品久久久久秋霞蜜臀 | 亚洲精品欧美专区| 国产精品成av人在线视午夜片| 欧美在线观看天堂一区二区三区| 在线精品视频在线观看高清| 欧美日韩一区二区三区四区五区| 欧美亚洲一区在线| 亚洲精品美女| 国产日韩在线播放| 欧美精品一区二区久久婷婷| 欧美一区观看| 日韩视频在线观看一区二区| 国产欧美精品日韩精品| 欧美福利视频在线| 亚洲欧美三级伦理| 91久久精品网| 国产日韩欧美精品| 欧美日本一区| 久久er99精品| 亚洲午夜精品久久| 亚洲高清免费| 国产美女一区二区| 欧美啪啪一区| 久久手机精品视频| 亚洲免费中文字幕| 亚洲人成久久| 好看的亚洲午夜视频在线| 欧美视频免费| 欧美chengren| 久久er99精品| 亚洲性图久久| 亚洲激情欧美激情| 国产有码一区二区| 欧美日韩一区二区三区免费| 久久永久免费| 欧美一区二区三区久久精品茉莉花| 亚洲毛片一区二区| 伊人久久噜噜噜躁狠狠躁| 国产精品视频久久久| 欧美美女福利视频| 麻豆成人在线播放| 久久国产88| 亚洲综合精品| aaa亚洲精品一二三区| 136国产福利精品导航网址应用| 国产美女一区二区| 欧美性色aⅴ视频一区日韩精品| 欧美大片在线看| 久久天天躁狠狠躁夜夜爽蜜月| 欧美亚洲三级| 亚洲免费视频在线观看| a91a精品视频在线观看| 亚洲狠狠婷婷| 在线精品一区| 极品av少妇一区二区| 国产欧美综合一区二区三区| 国产精品久久久久久久久动漫| 欧美日韩精选| 欧美精品一区在线播放| 欧美成年视频| 欧美777四色影视在线| 麻豆久久久9性大片| 久久久精品一区| 久久久精品视频成人| 久久经典综合| 久久国产精品久久国产精品| 亚洲欧美日韩在线| 亚洲淫片在线视频| 亚洲一卡久久| 亚洲午夜精品久久久久久浪潮 | 欧美高清在线视频| 老司机精品导航| 久久露脸国产精品| 久久精品国产精品亚洲精品| 午夜精品一区二区三区四区 | 国产精品人人做人人爽人人添 | 一本色道久久综合| 亚洲美女淫视频| 亚洲精品一区二区三区婷婷月| 亚洲精品系列| 日韩午夜精品| 一区二区三区.www| 亚洲视频免费在线| 亚洲免费在线观看| 香蕉尹人综合在线观看| 久久精品av麻豆的观看方式|