我有這樣的東西: self.megacity.resourceloader.sound.mcintro.play()的Python:我如何防止長變量名的範圍
是否有任何優雅的方式來防止這種長這樣的東西?可能是某種結構性變化?
謝謝。
我有這樣的東西: self.megacity.resourceloader.sound.mcintro.play()的Python:我如何防止長變量名的範圍
是否有任何優雅的方式來防止這種長這樣的東西?可能是某種結構性變化?
謝謝。
x = self.megacity.resourceloader.sound.mcintro
x.play()
中查找Law of Demeter幫助你找到更好的方法來放鬆組件之間的耦合在你的程序:
當應用於面向對象的程序,迪米特法則可以 更精確地稱爲(Demeter的函數/方法法) (LoD-F)。在這種情況下,對象A可以請求對象實例B的服務(調用方法 ),但是對象A不能「到達」對象B來訪問另一個對象C以請求其服務。這樣做意味着對象A隱含需要知道對象B的內部結構。相反,B的界面 應該在必要時進行修改,以便它可以直接提供對象A的 請求,並將其傳播到任何相關的子組件。或者, A可能會直接引用對象C,並直接向請求 發送請求。如果遵守法律,只有對象B知道它自己的內部結構。
使用門面http://en.wikipedia.org/wiki/Facade_pattern:
class SoundPlayer:
def PlayMegacity (target):
target.megacity.resourceloader.sound.mcintro.play()