欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

為什么放棄使用Lombok

這篇文章主要介紹“為什么放棄使用Lombok”,在日常操作中,相信很多人在為什么放棄使用Lombok問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”為什么放棄使用Lombok”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

成都做網(wǎng)站、成都網(wǎng)站制作過程中,需要針對客戶的行業(yè)特點、產(chǎn)品特性、目標受眾和市場情況進行定位分析,以確定網(wǎng)站的風格、色彩、版式、交互等方面的設計方向。成都創(chuàng)新互聯(lián)還需要根據(jù)客戶的需求進行功能模塊的開發(fā)和設計,包括內(nèi)容管理、前臺展示、用戶權限管理、數(shù)據(jù)統(tǒng)計和安全保護等功能。

面對 Lombok 提供的諸多“神走位”,你并不會介意在 IDE 上新增一個插件。對于 IntelliJ IDEA 玩家而言,只需搜索“Lombok  Plugin”便可找到這款神器并安裝上它。愛上 Lombok 從安裝 Lombok 插件開始,恨也從此萌芽。

沒使用 Lombok 之前,我們的源代碼看起來是這一的:

public class MyObject{     private Long id;     private String name;     private int age;     private int gender;      public Long getId(){         return id;     }     public void setId(Long id){         this.id = id;     }     public String getName(){         return name;     }     public void setName(String name){         this.name = name;     }     public int getAge(){         return age;     }     public void setAge(int age){         this.age = age;     }     public int getGender(){         return gender;     }     public void setGender(int gender){         this.gender = gender;     }      @Override     public boolean equals(Object o){         if(this == o){             return true;         }         if(o == null || getClass() != o.getClass()){             return false;         }         MyObject obj = (MyObject) o;         return age = obj.age &&             gender = obj.gender &&             Objects.equals(id,obj.id) &&             Objects.queals(name,obj.name);     }      @Override     public int hashCode(){         return Objects.hash(id,name,age,gender);     }      @Override     public String toString(){         return "MyObject{"+             "id="+id+             "name="+name+             "age="+age+             "gender="+gander+             "}";     } }

每個 JavaBean 都會充斥著如上述 getter,setter,equals,hashCode 和 toString  的模板代碼,這看起來像一個偏胖的人(不得不承認 Java 是一個有缺陷的編程語言)。

當我們安裝好 Lombok 插件后,IDE 便可以識別其酷炫的注解,使用 Lombok 的 @Getter 和 @Setter  注解后,代碼會像下面這樣看起來很苗條:

@Getter @Setter public class MyObject{     private Long id;     private String name;     private int age;     private int gender;      @Override     public boolean equals(Object o){         if(this == o){             return true;         }         if(o == null || getClass() != o.getClass()){             return false;         }         MyObject obj = (MyObject) o;         return age = obj.age &&             gender = obj.gender &&             Objects.equals(id,obj.id) &&             Objects.queals(name,obj.name);     }      @Override     public int hashCode(){         return Objects.hash(id,name,age,gender);     }      @Override     public String toString(){         return "MyObject{"+             "id="+id+             "name="+name+             "age="+age+             "gender="+gander+             "}";     } }

現(xiàn)在的代碼是否看起來爽多了?但這還不是最爽的時候。既然其他方法都替換掉了,那把 toString 方法也一起拿掉吧.如你所愿,可以使用 @ToString  注解去掉對于的方法:

@Getter @Setter @EqualsAndHashCode public class MyObject{     private Long id;     private String name;     private int age;     private int gender;      @Override     public String toString(){         return "MyObject{"+             "id="+id+             "name="+name+             "age="+age+             "gender="+gander+             "}";     } }

經(jīng)過 Lombok 的戲法之后,相比一開始的代碼,看起來是不是很酷炫,很苗條,很性感?你以為到此為止了?

遠不止于此,你會發(fā)現(xiàn)類名上一大坨注解看起來好別扭,Lombok 提供了一個組合注解 @Data,可以替換掉類名頭上那坨像翔一樣的東西:

@Data public class MyObject{     private Long id;     private String name;     private int age;     private int gender; }

現(xiàn)在,Lombok 是否讓你的對象成為了你心目中完美的樣子?魔鬼的“身材”,酷炫精煉。

Lombok 還有其他一些注解,如 @Slf4j,@NoArgsConstructor,@AllArgsConstructor 等等,介紹 Lombok  用法不是本文重點。

以上代碼行數(shù)的變化過程,也許是無數(shù)程序員愛上 Lombok 的主要原因吧,這就像一個肥胖的人逐漸變成一個身材苗條的人。

同時也讓你看到了一個現(xiàn)象:你以為程序員很懶嗎?其他有些時候他們比你想象中的還要懶。在爽的同時,也為代碼種下了禍根。

扭曲的審美,愛的隱患

扭曲的審美,導致了被審視的對象處于亞健康狀態(tài)。使用 Lombok 插件之后,我們的代碼也處于“亞健康”狀態(tài)。

還是回歸一開始的那句話:所有的源代碼很多時候是用來閱讀的,只有很少的時間是用來執(zhí)行的。

本質上講,我們都追求減少程序中的樣板代碼以使其代碼更精煉簡潔,從而提高代碼的可讀性和可維護性。

但 Lombok 并沒有達到我們所追求的這一愿景,它僅僅是利用 Java  語言在編譯時的空檔期,使用一種很取巧的方式,將我們所需要的方法注入(寫入)到當前的類中,這種過程很像在 hack 我們的代碼,只是一種看起來酷炫的把戲。

這種把戲并不智能和安全,反而會破壞 Java 代碼現(xiàn)有的特性以及代碼的可讀性。

下面,結合我自己使用 Lombok 之后的感受,談談 Lombok 帶來的幾大痛點。

JDK 版本問題

當我想要將現(xiàn)有項目的 JDK 從 Java 8 升級到 Java 11 時,我發(fā)現(xiàn) Lombok 不能正常工作了。

于是我不得不將所有的 Lombok 注解從項目源代碼中清除,并使用 IDE 自帶的功能生成  getter/setter,equals,hashCode,toString 以及構造器等方法。

你也可以使用 Delombok 工具完成這一過程,但這終究會消耗你很多的時間。

脅迫使用

當你的源代碼中使用了 Lombok,恰好你的代碼又被其他的人所使用,那么依賴你代碼的人,也必須安裝 Lombok  插件(不管他們喜不喜歡),同時還要花費時間去了解 Lombok 注解的使用情況,如果不那么做,代碼將無法正常運行。使用過 Lombok  之后,我發(fā)現(xiàn)這是一種很流氓的行為。

可讀性差

Lombok 隱藏了 JavaBean 封裝的細節(jié),如果你使用 @AllArgsConstructor  注解,它將提供一個巨型構造器,讓外界有機會在初始化對象時修改類中所有的屬性。

首先,這是極其不安全的,因為類中某系屬性我們是不希望被修改的;另外,如果某個類中有幾十個屬性存在,就會有一個包含幾十個參數(shù)的構造器被 Lombo  k注入到類中,這是不理智的行為。

其次,構造器參數(shù)的順序完全由 Lombok 所控制,我們并不能操控,只有當你需要調(diào)試時才發(fā)現(xiàn)有一個奇怪的“小強”在等著你。

最后,在運行代碼之前,所有 JavaBean 中的方法你只能想象他們長什么樣子,你并不能看見。

代碼耦合度增加

當你使用 Lombok 來編寫某一個模塊的代碼后,其余依賴此模塊的其他代碼都需要引入 Lombok 依賴,同時還需要在 IDE 中安裝 Lombok  的插件。

雖然 Lombok 的依賴包并不大,但就因為其中一個地方使用了 Lombok,其余所有的依賴方都要強制加入 Lombok 的 Jar  包,這是一種入侵式的耦合,如果再遇上 JDK 版本問題,這將是一場災難。

得不償失

使用 Lombok,一時覺得很爽,但它卻污染了你的代碼,破壞了 Java  代碼的完整性,可讀性和安全性,同時還增加的團隊的技術債務,這是一種弊大于利,得不償失的操作。

為什么放棄使用Lombok

如果你確實想讓自己的代碼更加精煉,同時又兼顧可讀性和編碼效率,不妨使用主流的 Scala 或 Kotlin 這一基于 JVM 的語言。

到此,關于“為什么放棄使用Lombok”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續(xù)學習更多相關知識,請繼續(xù)關注創(chuàng)新互聯(lián)網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>

網(wǎng)站題目:為什么放棄使用Lombok
標題URL:http://aaarwkj.com/article48/gjgiep.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供云服務器品牌網(wǎng)站制作、外貿(mào)建站、網(wǎng)頁設計公司、網(wǎng)站策劃Google

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)頁設計公司
国产av综合一区二区| 涩涩涩丁香色婷五月网| 一区二区日韩视频九一蜜桃| 国产精品久久久久精品日日三级| 国产真人免费作爱视频网站 | 欧美三级高清视频在线播放| 亚洲熟女av综合网丁香| 99热这里只有精品56| 欧美日韩一级一区二区三区| 久久久久久狠狠亚洲综合| 中文字幕日韩一区二区| 国产成人亚洲综合色影视| 人人澡人人看人人妻| 日本人妻免费在线观看| 国产精品成人一区二区三| 日本人的黄色录像视频| 青青草视频在线针对华人| 精彩国产av一区二区三区| 亚洲男女内射在线视频| 在线免费观看日本91| 欧美大片黄片在线观看| 日本道二区视频中文字幕| 亚洲一区二区三区日韩精品| 亚洲av永久精品桃色| 日韩精品视频高清在线观看| 日本午夜免费在线视频| 朝桐光日韩一区二区三区| 日本视频一曲二曲三曲四曲| 亚洲av二区三区成人| 国产亚洲成人精品一区| 亚洲一区制服无码中文| 中文字幕日韩欧美一区二区| 日韩精品91一区二区| 久久五十路初次拍五十路| 国产三级三级三级av精品| 五月婷婷六月丁香在线观看| 99热精品在线免费观看| 亚洲高清成人综合网站| 亚洲美女插入av网络导航| 久久国产麻豆精品电影| 绯色av一区二区三区蜜臀|