【发布时间】:2009-07-10 12:01:02
【问题描述】:
您是否尝试将每个程序集的与主序列的距离保持在较低水平?只包含业务对象定义的程序集呢?有没有可能让他们远离痛苦地带?此类程序集中的类型通常由其他程序集使用,并且相当具体。这种情况如何处理?
【问题讨论】:
标签: .net code-metrics ndepend
您是否尝试将每个程序集的与主序列的距离保持在较低水平?只包含业务对象定义的程序集呢?有没有可能让他们远离痛苦地带?此类程序集中的类型通常由其他程序集使用,并且相当具体。这种情况如何处理?
【问题讨论】:
标签: .net code-metrics ndepend
我相信{保持“与主序列的距离”低}的目标是基于Law of Demeter。遵循此规则有助于使您的代码更易于理解和单元测试。通过使用仅仅是数据容器的业务对象,您暴露的状态可能超出了必要的范围,并且违反了封装规则。
然而,正如 Fowler points out in this article 所说,“虽然方法链是一种气味,但中间人对象因转发方法而臃肿的相反问题也是一种气味。(我一直觉得我会更适应法律得墨忒耳的建议,如果它被称为得墨忒耳的建议的话。)"
我认为,如果您只想传递对象包含的“内容”,例如如何将它们用作数据传输对象,那么这些基本业务对象的值可能会很有用。但是,将真正的业务对象与空的数据传输对象区分开来可能很重要。我会假设真正的业务对象也应该包含行为以及它们封装的数据。
【讨论】: