国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

解決代碼壞味道m(xù)iddleman

2023-04-19 22:14 作者:bibnoifasdfadf  | 我要投稿

在Python編程中,Middle Man是一種常見(jiàn)的代碼壞味道,它的主要表現(xiàn)是在一個(gè)對(duì)象和它所依賴(lài)的對(duì)象之間插入了過(guò)多的中間層。這些中間層可能會(huì)增加代碼的復(fù)雜性和冗余性,從而使得代碼難以維護(hù)和擴(kuò)展。 ?以下是幾種常見(jiàn)的解決方案: ?1. 去除無(wú)用中間層 ?在一個(gè)對(duì)象和它所依賴(lài)的對(duì)象之間插入過(guò)多的中間層時(shí),經(jīng)常會(huì)出現(xiàn)一些無(wú)用的中間層。去除這些無(wú)用的中間層可以減少代碼的復(fù)雜性,從而使得代碼更易于維護(hù)和擴(kuò)展。通常,在去除無(wú)用中間層時(shí),可以使用一些簡(jiǎn)單的重構(gòu)方法,例如:去除只傳遞消息的方法、合并僅僅委托給他人的方法、合并僅僅簡(jiǎn)單調(diào)用的方法、把委托給其他對(duì)象的方法直接傳遞給該對(duì)象等。 ?例如,下面是一個(gè)典型的Middle Man代碼塊: class MiddleMan: ??def __init__(self, ob): ????self.ob = ob ??def get_value(self): ????return self.ob.get_value() 在上述代碼中,MiddleMan類(lèi)僅僅是簡(jiǎn)單地委托了它所持有的對(duì)象(ob)的get_value方法。這個(gè)MiddleMan類(lèi)就是一個(gè)典型的中間對(duì)象,可以直接委托給它所依賴(lài)的對(duì)象。下面是一個(gè)去除了Middle Man的實(shí)現(xiàn): obj = dependentObject response = obj.get_value() 2. 合并中間層 ?如果由于需要將多個(gè)對(duì)象聯(lián)系起來(lái)而出現(xiàn)了過(guò)多的中間層,可以嘗試將它們合并為一個(gè)更簡(jiǎn)單的對(duì)象。通過(guò)這種方式,可以減少代碼的復(fù)雜性,從而使得代碼更易于維護(hù)和擴(kuò)展。 ?例如,下面是一個(gè)典型的Middle Man代碼塊: class MiddleMan: ??def __init__(self, ob1, ob2): ????self.ob1 = ob1 ????self.ob2 = ob2 ??def get_value(self): ????return self.ob1.get_value() + self.ob2.get_value() 在上述代碼中,MiddleMan類(lèi)僅僅是簡(jiǎn)單地將它所依賴(lài)的兩個(gè)對(duì)象(ob1和ob2)的get_value方法的返回值相加起來(lái)。這個(gè)MiddleMan類(lèi)就是一個(gè)典型的中間對(duì)象,可以將它所依賴(lài)的兩個(gè)對(duì)象變成一個(gè)更簡(jiǎn)單的對(duì)象,如下所示: class DependentObject: ??def __init__(self, ob1, ob2): ????self.ob1 = ob1 ????self.ob2 = ob2 ??def get_value(self): ????return self.ob1.get_value() + self.ob2.get_value() ?obj = DependentObject(ob1, ob2) response = obj.get_value() 這個(gè)方法的優(yōu)勢(shì)是減少了中間層的數(shù)量,使代碼更易于維護(hù)和擴(kuò)展。 ?3. 使用依賴(lài)注入 ?在一些情況下,Middle Man存在的原因可能是為了維護(hù)依賴(lài)關(guān)系。在這種情況下,可以使用依賴(lài)注入來(lái)減少M(fèi)iddle Man的數(shù)量。 ?例如,下面是一個(gè)典型的Middle Man代碼塊: class MiddleMan: ??def __init__(self): ????self.ob = DependentObject() ??def get_value(self): ????return self.ob.get_value() 在上述代碼中,MiddleMan類(lèi)僅僅是簡(jiǎn)單地將DependentObject的實(shí)例化和get_value方法的調(diào)用封裝在一起。如果使用依賴(lài)注入,可以將所依賴(lài)的對(duì)象作為類(lèi)的參數(shù)傳入,如下所示: class DependentObject: ??def __init__(self, ob1, ob2): ????self.ob1 = ob1 ????self.ob2 = ob2 ??def get_value(self): ????return self.ob1.get_value() + self.ob2.get_value() ?class MiddleMan: ??def __init__(self, ob1, ob2): ????self.ob = DependentObject(ob1, ob2) ??def get_value(self): ????return self.ob.get_value() ?obj1 = Object1() obj2 = Object2() middle_man = MiddleMan(obj1, obj2) response = middle_man.get_value() 這個(gè)方法的優(yōu)勢(shì)是解耦代碼,使得代碼更易于維護(hù)和擴(kuò)展。 ?總之,Python中的Middle Man是一種在編寫(xiě)代碼時(shí)必須避免的代碼壞味道。使用上述技術(shù),您可以輕松地減少M(fèi)iddle Man的數(shù)量,使代碼更易于理解和維護(hù)。

解決代碼壞味道m(xù)iddleman的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
恩平市| 丰原市| 扬中市| 常宁市| 凉城县| 长顺县| 泰安市| 乐都县| 永丰县| 横山县| 茌平县| 福泉市| 和林格尔县| 瑞金市| 通化县| 长沙市| 江达县| 惠州市| 达孜县| 教育| 郎溪县| 泾阳县| 廊坊市| 宁津县| 天峻县| 凤城市| 深圳市| 阿克苏市| 兴化市| 四平市| 都江堰市| 南汇区| 电白县| 乐陵市| 如皋市| 兴宁市| 石阡县| 安西县| 宝兴县| 罗田县| 弋阳县|