4

我对得墨忒耳定律的理解是:

您的方法可以直接调用其类中的其他方法
您的方法可以直接调用其自身字段的方法(但不能直接调用字段的字段)
当您的方法接受参数时,您的方法可以直接调用这些参数的方法。
当您的方法创建本地对象时,该方法可以调用本地对象的方法。

但是
一个人不应该调用全局对象上的方法(但它可以作为参数传递?)
一个人不应该在除a类之外的某个类中拥有一串消息a.getB().getC().doSomething()。

我在我的一种方法中正在做的是:
final ServiceStatusBean serviceStatusBean = new ServiceStatusBean(); serviceStatusBean.setName("someName"); serviceStatusBean.setApiVersion("someVersion");

我的 serviceStatusBean 实例是在方法中本地创建的,我正在调用它的 setter。根据我的理解,它符合德米特法则。但根据 PMD 的说法,它在调用二传手的线路上违反了德米特法则。
警告-“可能违反得墨忒耳法则(非本地创建的对象)”

我无法理解这些 PMD 警告背后的原因。有什么解释吗??
PMD 详细信息:
插件版本 - 4.0.5.v20141105-1906
PMD 版本 - 5.2.1

4

0 回答 0