最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

看完這篇文章獲得一些java if優(yōu)化技巧

 更新時(shí)間:2021年07月15日 11:44:09   作者:香菜聊游戲  
if 是每個(gè)語(yǔ)言都有的語(yǔ)法,也是最基礎(chǔ)的語(yǔ)法。因?yàn)榇a本來(lái)就很晦澀,所以才有了程序員這個(gè)中間件,今天就聊一下我的一些關(guān)于 if 思路和總結(jié)

1、if 合并

使用邏輯運(yùn)算符進(jìn)行合并if。簡(jiǎn)單的if 嵌套可以使用&& 進(jìn)行合并。簡(jiǎn)單的if else 并且操作相同可以使用 || 進(jìn)行合并,優(yōu)化代碼邏輯,增加可讀性。

注意:邏輯運(yùn)算符的截?cái)嘈?,if(a >= 10 || b >= 20) 當(dāng)a>= 10 成立時(shí) 是不會(huì)判斷后面的,只要條件成立,則if 判斷結(jié)束。

因此簡(jiǎn)單判斷放在最前面,在開(kāi)發(fā)的過(guò)程中,將簡(jiǎn)單的邏輯判斷前置,減少判斷的次數(shù),可以提高性能,提高性能!

2、將正常的流程放在函數(shù)的主干執(zhí)行

在開(kāi)發(fā)中有些同學(xué)會(huì)跟著策劃寫(xiě)邏輯,將策劃的功能描述進(jìn)行直接轉(zhuǎn)碼,造成了很多判斷的嵌套。

在這時(shí)可以將代碼邏輯進(jìn)行整理,先進(jìn)行check ,各種不符合條件的判斷提前判斷并結(jié)束函數(shù),最基本的原則就是:將最后的主邏輯留在函數(shù)的主干內(nèi)。

比如下面的場(chǎng)景:玩家需要達(dá)到等級(jí)100,并且擁有足夠的體力,才能夠參與活動(dòng),否則的話則報(bào)錯(cuò)誤碼。

可以看到 主邏輯 doSomeThing 在第一處的時(shí)候if的嵌套層數(shù)是2層,在第二處的時(shí)候 嵌套層數(shù) 是0 層。在閱讀的代碼的時(shí)候,可以直接順序讀下去,將不太需要關(guān)注的分支跳過(guò)即可,可讀性有了優(yōu)化,代碼更優(yōu)雅。

3、減少if

1. 使用三元運(yùn)算符表達(dá)式

比如在戰(zhàn)斗的時(shí)候,需要根據(jù)玩家的等級(jí)進(jìn)行戰(zhàn)斗力的放大,所有有下面的代碼,可以看到用三元運(yùn)算符代碼行數(shù)較少,而且逼格顯然比較高。

2.使用java8 中流過(guò)濾filter ,不使用if

在開(kāi)發(fā)的過(guò)程中需要過(guò)濾某一個(gè)類(lèi)型的道具,在背包內(nèi)查找滿足需要的道具。

下面的代碼傳入需要過(guò)濾的道具類(lèi)型,然后在第一處的地方模擬了背包的數(shù)據(jù),

第二處是使用if的過(guò)濾。

第三處是使用stream 進(jìn)行過(guò)濾,可以看到使用java8 避免了使用if判斷,函數(shù)式的接口,優(yōu)雅并且易于理解。

3、使用枚舉

枚舉是我們項(xiàng)目里用的很多的一種解決辦法,比如我們的資源管理,任務(wù)管理,組隊(duì)管理等等功能,都是使用了枚舉解決if else 問(wèn)題,當(dāng)你面對(duì)的一個(gè)同樣的問(wèn)題,只是因?yàn)轭?lèi)型的不同的時(shí)候,則可以使用枚舉進(jìn)行優(yōu)化代碼。

下面的枚舉定義了一個(gè)抽象方法,由每個(gè)枚舉單獨(dú)實(shí)現(xiàn)。

在使用的時(shí)候可以直接使用對(duì)應(yīng)的枚舉進(jìn)行操作,不需要使用if 進(jìn)行操作,是不是很方便?同時(shí)在以后擴(kuò)展的時(shí)候只要增加枚舉,不需要修改原來(lái)的代碼?降低了出bug的風(fēng)險(xiǎn)。

4、使用manager

同樣的問(wèn)題,也可以使用manager進(jìn)行解決,思路就是將對(duì)應(yīng)類(lèi)型的處理類(lèi)先進(jìn)行注冊(cè),等用的時(shí)候直接從map中獲取,然后使用,避免了if 的判斷。

比如上期的資源系統(tǒng),就是使用了manager 進(jìn)行的處理。在游戲啟動(dòng)的時(shí)候注冊(cè)了每種資源的處理類(lèi),所有的資源類(lèi)都繼承了同樣的接口,在使用的時(shí)候可以直接調(diào)用相同的接口,這樣就沒(méi)必要盡心if 判斷。

5、使用Consumer

比如戰(zhàn)斗的時(shí)候,需要根據(jù)戰(zhàn)斗的類(lèi)型不同,然后有不同的處理函數(shù),在這時(shí)候可以使用Consumer,將每個(gè)單獨(dú)的類(lèi)型單獨(dú)處理。避免了使用if

總結(jié):

if 很簡(jiǎn)單,但是也有一些技巧。畢竟編程語(yǔ)言的創(chuàng)造者創(chuàng)造簡(jiǎn)單的if,for 就表示了這世界所有的邏輯。用好if,增加代碼可讀性,讓自己的代碼更優(yōu)雅,Bug 更少。

本篇文章就到這里了,希望能給你帶來(lái)幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!

相關(guān)文章

  • springboot如何去獲取前端傳遞的參數(shù)的實(shí)現(xiàn)

    springboot如何去獲取前端傳遞的參數(shù)的實(shí)現(xiàn)

    這篇文章主要介紹了springboot如何去獲取前端傳遞的參數(shù)的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • SpringSecurity自定義登錄成功處理

    SpringSecurity自定義登錄成功處理

    這篇文章主要為大家詳細(xì)介紹了SpringSecurity自定義登錄成功處理,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-09-09
  • Integer IntegerCache源碼閱讀

    Integer IntegerCache源碼閱讀

    這篇文章主要介紹了Integer IntegerCache源碼閱讀,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2018-01-01
  • MyBatis輸入映射和輸出映射實(shí)例詳解

    MyBatis輸入映射和輸出映射實(shí)例詳解

    mapper.xml是我們配置操作數(shù)據(jù)庫(kù)的sql語(yǔ)句的地方.這篇文章主要介紹了MyBatis輸入映射和輸出映射實(shí)例詳解,需要的朋友可以參考下
    2017-02-02
  • java文件刪除不了的坑,特別是壓縮文件問(wèn)題

    java文件刪除不了的坑,特別是壓縮文件問(wèn)題

    這篇文章主要介紹了java文件刪除不了的坑,特別是壓縮文件問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • springboot實(shí)現(xiàn)指定mybatis中mapper文件掃描路徑

    springboot實(shí)現(xiàn)指定mybatis中mapper文件掃描路徑

    這篇文章主要介紹了springboot實(shí)現(xiàn)指定mybatis中mapper文件掃描路徑方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • Spring?Boot集成RabbitMQ以及隊(duì)列模式操作

    Spring?Boot集成RabbitMQ以及隊(duì)列模式操作

    RabbitMQ是實(shí)現(xiàn)AMQP(高級(jí)消息隊(duì)列協(xié)議)的消息中間件的一種,下面這篇文章主要給大家介紹了關(guān)于Spring?Boot集成RabbitMQ以及隊(duì)列模式操作的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-04-04
  • Spring實(shí)現(xiàn)文件上傳的配置詳解

    Spring實(shí)現(xiàn)文件上傳的配置詳解

    這篇文章將為大家詳細(xì)說(shuō)明一下spring上傳文件如何配置,以及從request請(qǐng)求中解析到文件流的原理,文中示例代碼講解詳細(xì),感興趣的可以了解一下
    2022-08-08
  • Java 合并多個(gè)MP4視頻文件

    Java 合并多個(gè)MP4視頻文件

    這篇文章主要介紹了Java 合并多個(gè)MP4視頻文件的方法,幫助大家利用Java處理視頻,提高辦公效率,感興趣的朋友可以了解下
    2020-11-11
  • Spring Boot定制type Formatters實(shí)例詳解

    Spring Boot定制type Formatters實(shí)例詳解

    在本篇文章里小編給大家整理的是關(guān)于Spring Boot定制type Formatters實(shí)例知識(shí)點(diǎn),需要的朋友們學(xué)習(xí)下。
    2019-11-11

最新評(píng)論

博乐市| 黎平县| 正阳县| 龙川县| 天门市| 那曲县| 安塞县| 阜康市| 丹巴县| 固安县| 桃园县| 保亭| 隆化县| 阿勒泰市| 文水县| 房产| 于田县| 松潘县| 南乐县| 平邑县| 吉林省| 固原市| 麻城市| 邵阳市| 辽宁省| 太保市| 兴文县| 乌拉特中旗| 太白县| 澄迈县| 长岭县| 遂平县| 边坝县| 建瓯市| 楚雄市| 漳平市| 田阳县| 广宗县| 宜都市| 霸州市| 定襄县|