原文鏈接:https://sourcemaking.com/refactoring/smells/oo-abusers
說(shuō)明:所有這些代碼異味都是不完整或不正確的面向?qū)ο缶幊淘瓌t的應(yīng)用。
switch語(yǔ)句(Switch Statements)
你有一復(fù)雜的的switch操作語(yǔ)句或者一系列的if語(yǔ)句
臨時(shí)字段(Temporary Field)
臨時(shí)字段只有某些情況下才能獲取他的值(比如只一個(gè)方法內(nèi)部,臨時(shí)變量只在這個(gè)方法內(nèi)有效),除此之外他們都是空的。
繼承過(guò)多(Refused Bequest)
如果子類(lèi)只使用從其父類(lèi)繼承的少量的方法和屬性,那么層次結(jié)構(gòu)就是off-kilter。 不需要的方法可以簡(jiǎn)單地標(biāo)記為未使用或重新定義并拋出異常。
解決方法:使用代碼來(lái)替代繼承關(guān)系
相似的類(lèi)使用不同接口 (Alternative Classes with Different Interfaces)
相似的類(lèi),有不同接口
解決方法:重命名函數(shù),或者抽象子類(lèi)。