PMD警告"可能违反Demeter法:对象不是本地创建的,即使是在本地对象上调用方法也是如此。

时间:2015-01-08 06:26:54

标签: java coding-style pmd law-of-demeter

我对demeter定律的理解是:

  
    

您的方法可以直接调用其类中的其他方法     您的方法可以直接在自己的字段上调用方法(但不能在字段的字段上)     当您的方法接受参数时,您的方法可以直接调用这些参数的方法     当您的方法创建本地对象时,该方法可以调用本地对象上的方法。
    
    但     
    不应该在全局对象上调用方法(但它可以作为参数传递?)
    一个人不应该在一个类以外的某个类中有一个消息链a.getB()。getC()。doSomething()。

  

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

我的serviceStatusBean实例是在方法中本地创建的,我在其上调用setter。根据我的理解,它具有demeter定律。但根据PMD的说法,它违反了德米特的法则,在称为制定者的线路上 警告 - “可能违反得墨忒耳法(对象未在当地创建)”

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

0 个答案:

没有答案