国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專(zhuān)欄INFORMATION COLUMN

重構(gòu)-改善既有代碼的設(shè)計(jì)(九)--簡(jiǎn)化條件表達(dá)式

missonce / 855人閱讀

摘要:但條件邏輯也是不能忽視的分解條件表達(dá)式問(wèn)題有一個(gè)復(fù)雜的條件語(yǔ)句。沒(méi)什么說(shuō)的動(dòng)機(jī)重構(gòu)代碼就是錯(cuò)移除控制標(biāo)志問(wèn)題在一系列布爾表達(dá)式中,某個(gè)變量帶有控制標(biāo)記的作用方法以語(yǔ)句或語(yǔ)句取代控制標(biāo)記動(dòng)機(jī)控制標(biāo)記大大降低了代碼可讀性。

前言

前面已經(jīng)對(duì)類(lèi),方法,字段都進(jìn)行了重構(gòu)。貌似看起來(lái)很完整了。但條件邏輯也是不能忽視的

分解條件表達(dá)式 問(wèn)題

有一個(gè)復(fù)雜的條件(if-then-else)語(yǔ)句。(判斷條件很長(zhǎng),執(zhí)行邏輯很長(zhǎng),else執(zhí)行邏輯很長(zhǎng))

方法

從If、then、else三個(gè)段落中分別提煉出獨(dú)立函數(shù)
1、將if段落提煉出來(lái),構(gòu)成一個(gè)獨(dú)立的函數(shù)
2、將then段落和else段落都提煉出來(lái),各自構(gòu)成一個(gè)獨(dú)立的函數(shù)(如果發(fā)現(xiàn)嵌套的條件邏輯,先觀察是否可以使用“以衛(wèi)語(yǔ)句取代嵌套條件表達(dá)式”(此手法是下面的9.5),如果不行才開(kāi)始分解其中的每個(gè)條件)

動(dòng)機(jī)

為什么符合邏輯

合并條件條件表達(dá)式 問(wèn)題

有一列條件測(cè)試,都得到相同的結(jié)果

if(a>2)return 0;
if(a<10)return 0;
方法

將這些測(cè)試合并為一個(gè)條件表達(dá)式,并將這個(gè)條件表達(dá)式提煉成為一個(gè)獨(dú)立的函數(shù)

動(dòng)機(jī)

在條件表達(dá)式的每一個(gè)分支上有著相同的一段代碼,很容易導(dǎo)致長(zhǎng)函數(shù)

合并重復(fù)的條件片段(Consolidate Duplicate Conditional Fragments) 問(wèn)題

重復(fù)代碼是萬(wàn)惡之源!

方法

合并重復(fù)代碼。沒(méi)什么說(shuō)的

動(dòng)機(jī)

重構(gòu)代碼就是錯(cuò)

移除控制標(biāo)志 問(wèn)題

在一系列布爾表達(dá)式中,某個(gè)變量帶有“控制標(biāo)記”的作用 ]
boolean condition = true;

方法

以break語(yǔ)句或return語(yǔ)句取代控制標(biāo)記

動(dòng)機(jī)

控制標(biāo)記大大降低了代碼可讀性。這就是編程語(yǔ)言提供break和continue的原因

以衛(wèi)語(yǔ)句取代嵌套條件表達(dá)式

衛(wèi)語(yǔ)句就是把復(fù)雜的條件表達(dá)式拆分成多個(gè)條件表達(dá)式

問(wèn)題

函數(shù)中的條件邏輯使人難以看清正常的執(zhí)行路徑

方法

使用衛(wèi)語(yǔ)句表現(xiàn)所有特殊情況

動(dòng)機(jī)

如果兩個(gè)條件互不影響??梢允褂枚鄠€(gè)if
。而不是if-else

引入Null對(duì)象 問(wèn)題

需要再三檢查某對(duì)象是否為null

方法

將null值轉(zhuǎn)換為null對(duì)象。為需要的類(lèi)創(chuàng)建Null接口。并且創(chuàng)建子類(lèi)Null...類(lèi)。在子類(lèi)中設(shè)置默認(rèn)的方法

引入斷言 問(wèn)題

某一段代碼需要對(duì)程序狀態(tài)做出某種假設(shè)

方法

以斷言明確表現(xiàn)這種假設(shè)

動(dòng)機(jī)

如果程序員不犯錯(cuò),斷言就應(yīng)該不會(huì)對(duì)系統(tǒng)運(yùn)行造成任何影響,所以加入斷言永遠(yuǎn)不會(huì)影響程序的行為。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/69733.html

相關(guān)文章

  • 重構(gòu)---改善既有代碼設(shè)計(jì)》之簡(jiǎn)化條件達(dá)式

    那有什么天生如此,只是我們天天堅(jiān)持。 本篇文章主要講解 《重構(gòu)---改善既有代碼的設(shè)計(jì)》 這本書(shū)中的 第九章簡(jiǎn)化條件表達(dá)式中 的知識(shí)點(diǎn), Decompose Conditional(分解條件表達(dá)式) 問(wèn)題:你有一個(gè)復(fù)雜的條件(if、then、else) 語(yǔ)句 解決:從if、then、else三個(gè)段落中分別提煉出獨(dú)立函數(shù) //重構(gòu)前 if (date.before(SUMMER_START) |...

    Cheng_Gang 評(píng)論0 收藏0
  • 讀書(shū)筆記《重構(gòu) 改善既有代碼設(shè)計(jì)

    摘要:重構(gòu)在不改變代碼的外在的行為的前提下對(duì)代碼進(jìn)行修改最大限度的減少錯(cuò)誤的幾率本質(zhì)上,就是代碼寫(xiě)好之后修改它的設(shè)計(jì)。重構(gòu)可以深入理解代碼并且?guī)椭业?。同時(shí)重構(gòu)可以減少引入的機(jī)率,方便日后擴(kuò)展。平行繼承目的在于消除類(lèi)之間的重復(fù)代碼。 重構(gòu) (refactoring) 在不改變代碼的外在的行為的前提下 對(duì)代碼進(jìn)行修改最大限度的減少錯(cuò)誤的幾率 本質(zhì)上, 就是代碼寫(xiě)好之后 修改它的設(shè)計(jì)。 1,書(shū)中...

    mdluo 評(píng)論0 收藏0
  • 重構(gòu)-改善既有代碼設(shè)計(jì)(十)--簡(jiǎn)化函數(shù)調(diào)用

    摘要:函數(shù)改名問(wèn)題函數(shù)的名稱(chēng)未能揭示函數(shù)的用途。這些人甚至?xí)跇?gòu)造函數(shù)中使用設(shè)值函數(shù)。方法將構(gòu)造函數(shù)替換為工廠函數(shù)。以上所說(shuō)的情況,常會(huì)在返回迭代器或集合的函數(shù)身上發(fā)生。以異常取代錯(cuò)誤碼問(wèn)題某個(gè)函數(shù)返回一個(gè)特定的代碼,用以表示某種錯(cuò)誤情況。 Rename Method 函數(shù)改名 問(wèn)題 函數(shù)的名稱(chēng)未能揭示函數(shù)的用途。 方法 修改函數(shù)名稱(chēng)。 動(dòng)機(jī) 好的函數(shù)需要有一個(gè)清晰的函數(shù)名。保證一看就懂 A...

    SQC 評(píng)論0 收藏0
  • 重構(gòu)---改善既有代碼設(shè)計(jì)

    摘要:為何重構(gòu)重構(gòu)有四大好處重構(gòu)改進(jìn)軟件設(shè)計(jì)如果沒(méi)有重構(gòu),程序的設(shè)計(jì)會(huì)逐漸腐敗變質(zhì)。經(jīng)常性的重構(gòu)可以幫助維持自己該有的形態(tài)。你有一個(gè)大型函數(shù),其中對(duì)局部變量的使用使你無(wú)法采用。將這個(gè)函數(shù)放進(jìn)一個(gè)單獨(dú)對(duì)象中,如此一來(lái)局部變量就成了對(duì)象內(nèi)的字段。 哪有什么天生如此,只是我們天天堅(jiān)持。 -Zhiyuan 國(guó)慶抽出時(shí)間來(lái)閱讀這本從師傅那里借來(lái)的書(shū),聽(tīng)說(shuō)還是程序員的必讀書(shū)籍。 關(guān)于書(shū)的高清下載連...

    baihe 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<