law-of-demeter相关内容

带有数据模型对象的得墨忒耳定律

我昨天放假回来工作,在我们的每日站立会议中,我的队友提到他们正在重构我们的 java 代码中的所有模型对象,以删除所有 getter 和 setter 并将模型字段改为所有公共对象,调用得墨忒耳定律是这样做的原因,因为 为了便于我们遵守 Demeter 定律:一个模块不应该知道它所操纵的“对象"的内部结构.由于数据结构不包含任何行为,它们自然地暴露了它们的内部结构.所以在这种情况下,德米特不 ..
发布时间:2021-12-22 09:03:14 Java开发

在模型中重复数据以满足在集合中使用 demeter 定律是否合适?

这是一个人为的例子,假设我想列出一个人有朋友所在的国家的人口,下面是两个设置.最好在模型中重复数据吗? 有人告诉我德米特法则很重要,例如你告诉狗走路,命令它的腿走路是愚蠢的. 在我丰富的经验(菜鸟)中,我发现当模型重复数据时,查询会容易得多,People.where(:country =>friend.country),与存在链式关联的集合(到目前为止是不可能的): People.wh ..
发布时间:2021-07-12 19:43:14 其他开发

违反Demeter法则的搜索工具?

有人知道我可以在C#应用程序中使用的工具来查找可能违反Demeter的法律吗?我知道这会带来很多误报,但我认为它仍然有用.尤其是在早期设计过程中. 解决方案 如果您只是在寻找 something.somethingelse.violation ,则可以使用Visual Studio. 在“查找"对话框中,选中底部的“使用"框,然后选择“正则表达式". 不是很健壮,但是您可以使用 ..
发布时间:2021-04-18 20:47:20 C#/.NET

德米特混乱定律

我希望有人可以向我解释of门铁律。如果我假设一个类是一个聚合根,并且其中有一个子类集合,那么通过聚合根访问这些子类的属性来更新这些子类的属性是否非法? 例如 公共类公司 { //公司有一个数字的员工 公共列表员工{get; set;} } public class雇员 { //每个雇员都有姓氏 public int ID {get; set;} ..
发布时间:2020-06-02 20:32:47 C#/.NET

得墨meter耳定律

我最近在stackoverflow上发布了一个问题,我在其中做了一些影响 @period_registration.period.event 但是,建议我执行以下操作: def event period.event end @period_registration.event 我的一般感觉是,这似乎有些霸道.查看此以前的帖子我如何应用对此感到沮丧吗?显示了如果您对每个关 ..
发布时间:2020-05-20 00:50:08 其他开发

耦合,内聚和Demeter定律

《德米特律法》 指示您只应直接与您知道的对象讲话.即,不要执行方法链接来与其他对象交谈.这样做时,您正在与中介对象建立不正确的链接,耦合您的代码转换为其他代码. 那很糟糕. 解决方案将针对您所知道的类,从本质上公开简单的包装器,这些包装器将责任委托给与其有关系的对象. 那很好. 但是,这似乎导致该类的凝聚力较低.它不再只是对它的确切功能负责,而是在某种意义上也具有委托人,这 ..
发布时间:2020-05-20 00:32:30 其他开发

什么是得墨忒耳定律?

让我们从维基百科开始: 更正式地说,函数的Demeter法要求方法 m O 的对象只能调用以下类型对象的方法: O本身 m的参数 在m O的直接组件对象中创建/实例化的任何对象 一个全局变量,可由O访问,范围为m 规则1: 公共类ClassOne { public void method1(){ method2( ); } public void ..
发布时间:2019-01-02 14:08:37 Java开发

如何解决违反德米特法案的行为?

一位同事和我为客户设计了一个系统,在我们看来,我们创造了一个很好的干净设计。但是我遇到了一些耦合问题。我可以尝试创建一个包含与我们设计相同问题的示例设计,但是如果您原谅我,我将创建一个解决方案,以支持该问题。 我们正在开发一种为患者注册某些治疗方法的系统。为了避免连接到图像的链接断开,我会将概念UML类图描述为ac#风格类定义。 class Discipline {} class ..

数据模型对象的Demeter法则

我昨天从假期回来工作,在我们的日常座谈中,我的队友提到他们正在重构我们的java代码中的所有模型对象,以删除所有的getter和setter,并使模型字段变为所有公共对象,调用因为 ,为了方便我们遵守德米特的法律,德米特法则是这样做的:一个模块不应该知道内在的的“对象”操作。由于数据 结构不包含任何行为,它们自然会暴露其内部结构。所以在这种情况下,德米特不适用。 我承认我必须刷清我对 ..
发布时间:2017-05-14 09:44:14 Java开发

恶魔法和平移法

这个游戏的源代码是开源的,所以我决定检查一下。在它,我发现了像: //这个ActionManager基本上是一个控制器,就像在MVC模式。 void ActionManager :: HandleQueryMessage(csString xml,Client * client) { //检查两只手作为开始。 psItem * item = client-> GetCharac ..
发布时间:2016-10-30 03:00:17 C/C++开发