law-of-demeter相关内容
我昨天放假回来工作,在我们的每日站立会议中,我的队友提到他们正在重构我们的 java 代码中的所有模型对象,以删除所有 getter 和 setter 并将模型字段改为所有公共对象,调用得墨忒耳定律是这样做的原因,因为 为了便于我们遵守 Demeter 定律:一个模块不应该知道它所操纵的“对象"的内部结构.由于数据结构不包含任何行为,它们自然地暴露了它们的内部结构.所以在这种情况下,德米特不
..
这是一个人为的例子,假设我想列出一个人有朋友所在的国家的人口,下面是两个设置.最好在模型中重复数据吗? 有人告诉我德米特法则很重要,例如你告诉狗走路,命令它的腿走路是愚蠢的. 在我丰富的经验(菜鸟)中,我发现当模型重复数据时,查询会容易得多,People.where(:country =>friend.country),与存在链式关联的集合(到目前为止是不可能的): People.wh
..
我有一个公认的丑陋查询要做,以查找与当前角色相关的特定角色.这一行产生了正确的结果: @person_event_role.event_role.event.event_roles.joins(:mission_role).where(:mission_roles => {:title => 'Boss'}).first.person_event_roles.first.person (您可以
..
有人知道我可以在C#应用程序中使用的工具来查找可能违反Demeter的法律吗?我知道这会带来很多误报,但我认为它仍然有用.尤其是在早期设计过程中. 解决方案 如果您只是在寻找 something.somethingelse.violation ,则可以使用Visual Studio. 在“查找"对话框中,选中底部的“使用"框,然后选择“正则表达式". 不是很健壮,但是您可以使用
..
我希望有人可以向我解释of门铁律。如果我假设一个类是一个聚合根,并且其中有一个子类集合,那么通过聚合根访问这些子类的属性来更新这些子类的属性是否非法? 例如 公共类公司 { //公司有一个数字的员工 公共列表员工{get; set;} } public class雇员 { //每个雇员都有姓氏 public int ID {get; set;}
..
我最近在stackoverflow上发布了一个问题,我在其中做了一些影响 @period_registration.period.event 但是,建议我执行以下操作: def event period.event end @period_registration.event 我的一般感觉是,这似乎有些霸道.查看此以前的帖子我如何应用对此感到沮丧吗?显示了如果您对每个关
..
《德米特律法》 指示您只应直接与您知道的对象讲话.即,不要执行方法链接来与其他对象交谈.这样做时,您正在与中介对象建立不正确的链接,耦合您的代码转换为其他代码. 那很糟糕. 解决方案将针对您所知道的类,从本质上公开简单的包装器,这些包装器将责任委托给与其有关系的对象. 那很好. 但是,这似乎导致该类的凝聚力较低.它不再只是对它的确切功能负责,而是在某种意义上也具有委托人,这
..
让我们从维基百科开始: 更正式地说,函数的Demeter法要求方法 m O 的对象只能调用以下类型对象的方法: O本身 m的参数 在m O的直接组件对象中创建/实例化的任何对象 一个全局变量,可由O访问,范围为m 规则1: 公共类ClassOne { public void method1(){ method2( ); } public void
..
说我有一些课Foo class Foo { protected String x =“x”; public String getX(){ return x; } } 我有一个使用Foo并违反LoD的程序 class Bar { protected Foo foo; public Bar(){ this.foo = new Foo();
..
此问题是后续为此。 说我有一些课Foo。 class Foo { protected String x =“x”; public String getX(){ return x; } } 我有一个使用Foo并违反LoD的程序( 德米特法则)。 class Bar { protected Foo foo; public Bar()
..
public House { WeatherStation station; public float getTemp(){ //这里违反了Demeter的法则 return station.getThermometer()。getTemperature(); } } public House { WeatherStation station; pub
..
一位同事和我为客户设计了一个系统,在我们看来,我们创造了一个很好的干净设计。但是我遇到了一些耦合问题。我可以尝试创建一个包含与我们设计相同问题的示例设计,但是如果您原谅我,我将创建一个解决方案,以支持该问题。 我们正在开发一种为患者注册某些治疗方法的系统。为了避免连接到图像的链接断开,我会将概念UML类图描述为ac#风格类定义。 class Discipline {} class
..
我昨天从假期回来工作,在我们的日常座谈中,我的队友提到他们正在重构我们的java代码中的所有模型对象,以删除所有的getter和setter,并使模型字段变为所有公共对象,调用因为 ,为了方便我们遵守德米特的法律,德米特法则是这样做的:一个模块不应该知道内在的的“对象”操作。由于数据 结构不包含任何行为,它们自然会暴露其内部结构。所以在这种情况下,德米特不适用。 我承认我必须刷清我对
..
这个游戏的源代码是开源的,所以我决定检查一下。在它,我发现了像: //这个ActionManager基本上是一个控制器,就像在MVC模式。 void ActionManager :: HandleQueryMessage(csString xml,Client * client) { //检查两只手作为开始。 psItem * item = client-> GetCharac
..