是否有工具可以检查Python代码是否符合Demeter法则?
我在pychecker中发现了Demeter,但似乎该工具理解这个法律与我的期望不同:http://en.wikipedia.org/wiki/Law_of_Demeter
维基百科的定义:函数的Demeter定律要求对象O的方法M只能调用以下类型对象的方法:
答案 0 :(得分:1)
在您提供的链接中解释此法律的方式过于模糊和主观,无法通过任何自动化工具进行有效检查。您需要考虑导致遵守此法律的代码的特定规则。然后你可以检查这些规则。
答案 1 :(得分:0)
Demeter法则...对象O的方法M只能调用以下类型对象的方法:
self
个变量。很容易看到。locals()
locals()
self
变量。global
语句中命名的变量或对本地命名空间中找不到的全局变量的隐式引用。也就是说globals()
。嗯....函数没有其他变量可用,有吗?由于名称空间的工作方式,我认为没有任何违反此法律的可能性。
您是否有一个破坏其中一条规则的Python代码示例?
您如何访问另一个名称空间?
答案 2 :(得分:0)
你可能会破坏这样的法律:
class SomeClass:
def someMethod(self):
self.getSomeOtherClass().someOtherMethod() # this breaks the law
def getSomeOtherClass(self):
class_ = SomeOtherClass()
return class_
还是不?