在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

寫Java代碼的一些技巧分享

Linux愛好者 ? 來源:CSDN技術(shù)社區(qū) ? 作者:CSDN技術(shù)社區(qū) ? 2022-03-16 12:05 ? 次閱讀

1. 定義配置文件信息

有時候我們?yōu)榱私y(tǒng)一管理會把一些變量放到 yml 配置文件中

例如

02242698-9330-11ec-952b-dac502259ad0.png用 @ConfigurationProperties 代替 @Value

使用方法

定義對應(yīng)字段的實體


		

@Data // 指定前綴 @ConfigurationProperties(prefix = "developer") @Component public class DeveloperProperty { privateStringname; privateStringwebsite; privateStringqq; privateStringphoneNumber; }

@Data
// 指定前綴
@ConfigurationProperties(prefix = "developer")
@Component
public class DeveloperProperty {
privateStringname;
privateStringwebsite;
privateStringqq;
privateStringphoneNumber;
}

使用時注入這個bean

@RestController
@RequiredArgsConstructor
public class PropertyController {

finalDeveloperPropertydeveloperProperty;

@GetMapping("/property")
publicObjectindex() {
returndeveloperProperty.getName();
}
}

2. 用@RequiredArgsConstructor代替@Autowired

我們都知道注入一個 bean 有三種方式哦(set 注入, 構(gòu)造器注入, 注解注入),Spring 推薦我們使用構(gòu)造器的方式注入 Bean

我們來看看上段代碼編譯完之后的樣子

0233b2ac-9330-11ec-952b-dac502259ad0.png

RequiredArgsConstructor:lombok提供

3.代碼模塊化

阿里巴巴 Java 開發(fā)手冊中說到每個方法的代碼不要超過 50 行(我沒記錯的話),在實際的開發(fā)中我們要善于拆分自己的接口或方法, 做到一個方法只處理一種邏輯, 說不定以后某個功能就用到了, 拿來即用。

02455552-9330-11ec-952b-dac502259ad0.png

4. 拋異常而不是返回

在寫業(yè)務(wù)代碼的時候,經(jīng)常會根據(jù)不同的結(jié)果返回不同的信息,盡量減少返回,會顯得代碼比較亂

反例

02590b1a-9330-11ec-952b-dac502259ad0.png

正例

0271cdd0-9330-11ec-952b-dac502259ad0.png

5. 減少不必要的db

盡可能的減少對數(shù)據(jù)庫的查詢

舉例子

刪除一個服務(wù)(已下架或未上架的才能刪除),之前有看別人寫的代碼,會先根據(jù)id查詢該記錄,然后做一些判斷

反例

0280841a-9330-11ec-952b-dac502259ad0.png

正例

029af908-9330-11ec-952b-dac502259ad0.png

6. 不要返回 null

反例

02a9a516-9330-11ec-952b-dac502259ad0.png

正例

02c1b75a-9330-11ec-952b-dac502259ad0.png

別處調(diào)用方法時,避免不必要的空指針

7. if else

不要太多了if else if,可以試試策略模式代替

8. 減少controller業(yè)務(wù)代碼

業(yè)務(wù)代碼盡量放到service層進(jìn)行處理,后期維護(hù)起來也好操作而且美觀

反例

02d39c40-9330-11ec-952b-dac502259ad0.png

正例

02e887e0-9330-11ec-952b-dac502259ad0.png

9. 利用好Idea

目前為止市面上的企業(yè)基本都用idea作為開發(fā)工具了吧

舉一個小例子

idea會對我們的代碼進(jìn)行判斷,提出合理的建議

例如:

02ff01b4-9330-11ec-952b-dac502259ad0.png

它推薦我們用lanbda的形式代替,點擊replace

0312136c-9330-11ec-952b-dac502259ad0.png

10. 閱讀源碼

一定要養(yǎng)成閱讀源碼的好習(xí)慣包括優(yōu)秀的開源項目GitHub上stars:>1000, 會從中學(xué)好好多知識包括其對代碼的設(shè)計思想以及高級API,面試加分(好多面試官習(xí)慣問源碼相關(guān)的知識)

11. 設(shè)計模式

23種設(shè)計模式,要嘗試代碼中運(yùn)用設(shè)計模式思想,寫出的代碼即規(guī)范又美觀還高大上哈哈。

12. 擁抱新知識

像我們這種工作年限少的程序員,我覺得要多學(xué)習(xí)自己認(rèn)知之外的知識,不能每天crud,有機(jī)會就多用用有點難度的知識,沒有機(jī)會(項目較傳統(tǒng)),可以自己下班多些相關(guān)demo練習(xí)

13. 基礎(chǔ)問題

map遍歷
HashMap<String, String> map = newHashMap<>();
map.put("name", "du");
for(Stringkey : map.keySet()) {
Stringvalue = map.get(key);
}

map.forEach((k, v) -> {

});

// 推薦
for(Map.Entry<String, String> entry : map.entrySet()) {

}

optional 判空
//獲取子目錄列表
publicList getChild(String pid) {
if(V.isEmpty(pid)) {
pid = BasicDic.TEMPORARY_DIRECTORY_ROOT;
}
CatalogueTreeNode node = treeNodeMap.get(pid);

returnOptional.ofNullable(node)
.map(CatalogueTreeNode::getChild)
.orElse(Collections.emptyList());
}

遞歸

大數(shù)據(jù)量的遞歸時,避免在遞歸方法里new對象,可以試試把對象當(dāng)作方法參數(shù)進(jìn)行傳遞使用

注釋

類 接口方法 注解 較復(fù)雜的方法 注釋都要寫而且要寫清楚, 有時候?qū)懽⑨尣皇墙o別人看的 而是給自己看的

14. 判斷元素是否存在

hashSet 而不是 list,list 判斷一個元素是否存在的代碼

ArrayList list= newArrayList<>();

// 判斷a是否在list中

for(inti = 0; i < list.size(); i++)
if("a".equals(elementData[i]))
returni;

由此可見其復(fù)雜度為On,而hashSet底層采用hashMap作為數(shù)據(jù)結(jié)構(gòu)進(jìn)行存儲,元素都放到map的key(即鏈表中)

HashSet set= newHashSet<>();

// 判斷a是否在set中

intindex = hash(a);

returngetNode(index) != null

由此可見其復(fù)雜度為O1。


		

原文標(biāo)題:14 個寫 Java 的習(xí)慣

文章出處:【微信公眾號:Linux愛好者】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

審核編輯:湯梓紅
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 信息
    +關(guān)注

    關(guān)注

    0

    文章

    407

    瀏覽量

    35866
  • 文件
    +關(guān)注

    關(guān)注

    1

    文章

    578

    瀏覽量

    25234
  • 配置
    +關(guān)注

    關(guān)注

    1

    文章

    191

    瀏覽量

    18811

原文標(biāo)題:14 個寫 Java 的習(xí)慣

文章出處:【微信號:LinuxHub,微信公眾號:Linux愛好者】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦
    熱點推薦

    MSP432的一些簡單代碼

    自己一些MSP432的簡單代碼,有GPIO操作,串口通信(串口通信和延時函數(shù)按照原子MINIstm32封裝好了),外部中斷,定時器中斷以及PWM。其中SPI通信的代碼寫好還未進(jìn)行測
    發(fā)表于 03-02 14:11

    關(guān)于java性能優(yōu)化的一些細(xì)節(jié)

    代碼優(yōu)化 ,個很重要的課題。可能有些人覺得沒用,一些細(xì)小的地方有什么好修改的,改與不改對于代碼的運(yùn)行效率有什么影響呢?這個問題我是這么考慮的,就像大海里面的鯨魚
    發(fā)表于 10-11 09:23

    JAVA中關(guān)于this和that的一些知識

    。 。 this 在哪里? 在上篇《從 Java 作用域說開去》分析中,我們知道,在 Execution Context 中有個屬性是 this,這里的 this 就是我們所說的 this 。this 與上下文中可執(zhí)行
    發(fā)表于 09-25 14:55 ?0次下載

    java異常處理設(shè)計和一些建議

    出錯從哪里尋找出錯的根源?但是如果個項目異常處理設(shè)計地過多,又會嚴(yán)重影響到代碼質(zhì)量以及程序的性能。因此,如何高效簡潔地設(shè)計異常處理是門藝術(shù),本文下面先講述Java異常機(jī)制最基礎(chǔ)的知
    發(fā)表于 09-28 11:48 ?0次下載
    <b class='flag-5'>java</b>異常處理設(shè)計和<b class='flag-5'>一些</b>建議

    關(guān)于java一些基礎(chǔ)知識解析

    j2ee 全稱Java 2 Enterprise Edition,是Java種企業(yè)版,用于企業(yè)級應(yīng)用開發(fā)。 j2se 全稱Java 2 Standard Edi
    的頭像 發(fā)表于 02-05 14:43 ?4922次閱讀
    關(guān)于<b class='flag-5'>java</b>的<b class='flag-5'>一些</b>基礎(chǔ)知識解析

    DSP的一些代碼資料免費下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是DSP的一些代碼資料免費下載。
    發(fā)表于 12-24 08:00 ?25次下載

    Java一些基礎(chǔ)面試題資料合集免費下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是Java一些基礎(chǔ)面試題資料合集免費下載。目錄,1.Java基礎(chǔ)知識篇 2.Java web基礎(chǔ)知識總結(jié) 3.Java
    發(fā)表于 05-10 18:13 ?0次下載
    <b class='flag-5'>Java</b>的<b class='flag-5'>一些</b>基礎(chǔ)面試題資料合集免費下載

    IT工程師之間對接代碼一些

    最近沉浸在代碼的世界里,沒什么輸入,也沒什么輸出,今天說說碼農(nóng)之間對接代碼一些事吧。
    的頭像 發(fā)表于 05-07 16:49 ?3226次閱讀

    對于代碼規(guī)范的一些總結(jié)

    都說代碼是程序員的第二張臉,長時間下來,的好的代碼定會受到大家的尊重。遵循一些簡單的規(guī)范,干凈
    的頭像 發(fā)表于 12-08 10:21 ?3595次閱讀

    由淺入深的了解Java虛擬機(jī)

    說到Java虛擬機(jī),相信作為Java程序員的小伙伴們都不陌生,他們每天都在Java代碼,
    的頭像 發(fā)表于 01-01 17:50 ?2509次閱讀

    機(jī)器學(xué)習(xí)的一些代碼示例合集

    本文檔的主要內(nèi)容詳細(xì)介紹的是機(jī)器學(xué)習(xí)的一些代碼示例合集。
    發(fā)表于 04-29 08:00 ?1次下載
    機(jī)器學(xué)習(xí)的<b class='flag-5'>一些</b><b class='flag-5'>代碼</b>示例合集

    分享一些Python代碼加速工具

    這篇文章會提供一些優(yōu)化代碼的工具。會讓代碼變得更簡潔,或者更迅速。
    發(fā)表于 07-07 11:18 ?521次閱讀

    用了Stream后,代碼反而越越丑?

    Java中,同樣的功能,代碼行數(shù)的少了,并不見得你的代碼就好。由于Java使用;作為代碼行的
    的頭像 發(fā)表于 08-23 15:08 ?640次閱讀

    單片機(jī)C代碼嵌套匯編的一些方法

    單片機(jī)C代碼嵌套匯編的一些方法
    的頭像 發(fā)表于 10-18 16:39 ?773次閱讀
    單片機(jī)C<b class='flag-5'>代碼</b>嵌套匯編的<b class='flag-5'>一些</b>方法

    java反編譯的代碼可以修改么

    的影響。 1. Java反編譯工具 在Java反編譯領(lǐng)域,有一些知名的工具可以幫助開發(fā)者將字節(jié)碼轉(zhuǎn)換回源代碼。這些工具包括: JD-GUI :
    的頭像 發(fā)表于 09-02 11:00 ?1182次閱讀
    主站蜘蛛池模板: 中国男女全黄大片一级 | 久久久久女人精品毛片 | 欧美专区在线播放 | 在线不卡一区 | 色琪琪一本到影院 | 久久午夜精品 | 酒色成人| 热久久综合这里只有精品电影 | 亚洲国产成人精品青青草原100 | 国产伦理一区二区三区 | 美女视频黄a视频免费全过程 | 国产免费一区二区三区 | 综合色综合 | 玖玖在线| 超级碰碰青草免费视频92 | 91大神精品 | 亚洲国产精品久久婷婷 | 人人艹人人草 | 同性同男小说肉黄 | 亚洲一区二区三区四区五区六区 | 又粗又长又大真舒服好爽漫画 | www.男人的天堂 | 亚洲一区二区三区网站 | 日本天堂网在线观看 | 日本亚洲免费 | 四虎国产精品免费视 | 天天搞天天干 | 欧美精品xxxⅹ欧美 欧美精品高清在线xxxx | 久久不射影院 | 中文字幕在线观看亚洲 | 天天草综合 | 免费人成在线观看网站品爱网 | 欧美性天天影院 | 色多多在线 | 欧美xingai| 农村苗族一级特黄a大片 | 最新eeuss影院第256页 | 孩交啪啪网址 | 啪啪网站免费看 | 久久精品亚洲精品国产欧美 | 欧美视频不卡一区二区三区 |