看完這篇文章獲得一些java if優化技巧

1、if 合並

使用邏輯運算符進行合並if。簡單的if 嵌套可以使用&& 進行合並。簡單的if else 並且操作相同可以使用 || 進行合並,優化代碼邏輯,增加可讀性。

註意:邏輯運算符的截斷性,if(a >= 10 || b >= 20) 當a>= 10 成立時 是不會判斷後面的,隻要條件成立,則if 判斷結束。

因此簡單判斷放在最前面,在開發的過程中,將簡單的邏輯判斷前置,減少判斷的次數,可以提高性能,提高性能!

2、將正常的流程放在函數的主幹執行

在開發中有些同學會跟著策劃寫邏輯,將策劃的功能描述進行直接轉碼,造成瞭很多判斷的嵌套。

在這時可以將代碼邏輯進行整理,先進行check ,各種不符合條件的判斷提前判斷並結束函數,最基本的原則就是:將最後的主邏輯留在函數的主幹內。

比如下面的場景:玩傢需要達到等級100,並且擁有足夠的體力,才能夠參與活動,否則的話則報錯誤碼。

可以看到 主邏輯 doSomeThing 在第一處的時候if的嵌套層數是2層,在第二處的時候 嵌套層數 是0 層。在閱讀的代碼的時候,可以直接順序讀下去,將不太需要關註的分支跳過即可,可讀性有瞭優化,代碼更優雅。

3、減少if

1. 使用三元運算符表達式

比如在戰鬥的時候,需要根據玩傢的等級進行戰鬥力的放大,所有有下面的代碼,可以看到用三元運算符代碼行數較少,而且逼格顯然比較高。

2.使用java8 中流過濾filter ,不使用if

在開發的過程中需要過濾某一個類型的道具,在背包內查找滿足需要的道具。

下面的代碼傳入需要過濾的道具類型,然後在第一處的地方模擬瞭背包的數據,

第二處是使用if的過濾。

第三處是使用stream 進行過濾,可以看到使用java8 避免瞭使用if判斷,函數式的接口,優雅並且易於理解。

3、使用枚舉

枚舉是我們項目裡用的很多的一種解決辦法,比如我們的資源管理,任務管理,組隊管理等等功能,都是使用瞭枚舉解決if else 問題,當你面對的一個同樣的問題,隻是因為類型的不同的時候,則可以使用枚舉進行優化代碼。

下面的枚舉定義瞭一個抽象方法,由每個枚舉單獨實現。

在使用的時候可以直接使用對應的枚舉進行操作,不需要使用if 進行操作,是不是很方便?同時在以後擴展的時候隻要增加枚舉,不需要修改原來的代碼?降低瞭出bug的風險。

4、使用manager

同樣的問題,也可以使用manager進行解決,思路就是將對應類型的處理類先進行註冊,等用的時候直接從map中獲取,然後使用,避免瞭if 的判斷。

比如上期的資源系統,就是使用瞭manager 進行的處理。在遊戲啟動的時候註冊瞭每種資源的處理類,所有的資源類都繼承瞭同樣的接口,在使用的時候可以直接調用相同的接口,這樣就沒必要盡心if 判斷。

5、使用Consumer

比如戰鬥的時候,需要根據戰鬥的類型不同,然後有不同的處理函數,在這時候可以使用Consumer,將每個單獨的類型單獨處理。避免瞭使用if

總結:

if 很簡單,但是也有一些技巧。畢竟編程語言的創造者創造簡單的if,for 就表示瞭這世界所有的邏輯。用好if,增加代碼可讀性,讓自己的代碼更優雅,Bug 更少。

本篇文章就到這裡瞭,希望能給你帶來幫助,也希望您能夠多多關註WalkonNet的更多內容!

推薦閱讀: