例項帶你掌握如何分解條件表示式

2022-10-09 13:06:12 字數 1725 閱讀 2092

摘要:大型函式本身就會降低**可讀性,而條件邏輯則會使**更難閱讀。
程式中複雜的條件邏輯導致我必須編寫**來檢查不同的條件分支,根據不同條件做不同的事,然後,我很快就會得到乙個相當長的函式。大型函式本身就會降低**可讀性,而條件邏輯則會使**更難閱讀。

帶有複雜條件邏輯的函式中,**(包括檢查條件分支的**和真正實現功能的**)會告訴我發生的事,但常常讓我弄不清楚為什麼會發生這樣的事, 說明**可讀性的確大大降低。

和任何大塊頭**一樣,我可以將它分解為多個獨立的函式,根據每個小塊**的用途,命名分解而得的新函式,並將原函式中對應的**改為呼叫新函式,從而更清楚表達意圖。

對於條件邏輯,將每個分支條件分解成新函式還能帶來更多好處:可突出條件邏輯,更清楚地表明每個分支的作用,並且突出每個分支的原因。 本重構手法其實只是【提煉函式】的乙個應用場景。但我要強調該場景,因為我發現它經常會帶來很大價值。

對條件判斷和每個條件分支分別運用【提煉函式】手法。

假設我要計算購買某樣商品的總價(總價=數量×單價),而這個商品在冬季和夏季的單價不同:

public

static

void

price(localdate adate, plan plan, long quantity)

else

}

將條件判斷提煉到乙個獨立方法:

/*

* * 在冬季和夏季的單價不同

*/public

static

void

price(localdate adate, plan plan, long quantity)

else

}public

static

boolean summer(localdate adate, plan plan)

然後提煉條件判斷為真的分支:

/*

* * 在冬季和夏季的單價不同 */

public

static

void

price(localdate adate, plan plan, long quantity)

else}/*

* * 提煉條件判斷為真的分支 */

public

static

long summercharge(plan plan, long quantity)

}

最後提煉條件判斷為假的分支:

/*

* * 在冬季和夏季的單價不同 */

public

static

void

price(localdate adate, plan plan, long quantity)

else

}private

static

long regularcharge(plan plan, long quantity)

提煉完成後,我喜歡用三元運算子重新安排條件語句。

/*

* * 在冬季和夏季的單價不同 */

public

static

void

price(localdate adate, plan plan, long quantity)

點選關注,第一時間了解華為雲新鮮技術~

第九章 分解條件表示式

這個很簡單,但是很多人卻不做。每次看到乙個複雜的條件,就會很難理解這個條件表達的是什麼,如果將條件換成乙個函式,並且將函式起乙個很好的名字,那麼別人看了會很舒服 protected static final object do not proxy null if specificintercepto...

pgsql條件表示式

postgresql 8.1 中文文件 prev fast backward chapter 9.函式和操作符 fast forward next 本節描述在 postgresql 裡可以用的sql相容的條件表示式。sqlcase 表示式是一種通用的條件表示式,類似於其它語言中的 if else 語...

Postgresql 條件表示式

postgresql中可用的sql相容的條件表示式。如果你的需求超過這些條件表示式的能力,你可能會希望用一種更富表現力的程式語言寫乙個儲存過程。sql case表示式是一種通用的條件表示式,類似於其它程式語言中的 if else 語句 case when condition then result ...