jjzjj

javascript - 延期/ promise 会促进违反得墨忒耳法则吗?

我在洗澡的时候想到了一些事情。延迟/promise模式是减少callbackhell,通过允许开发人员链式调用函数,如前所述here:Parse.User.logIn("user","pass").then(function(user){returnquery.find();}).then(function(results){returnresults[0].save({key:value});}).then(function(result){//theobjectwassaved.});从我的头顶开始-如果我错了请纠正我-但似乎使用deferred/promises是打破Demete

java - 可选的 monad 和 Java 中的 Demeter 法则

当我审查一些代码时,我看到了这个片段。Listusers=/*Somecodethatinitializesthelist*/;users.stream().filter(user->user.getAddress().isPresent()).map(/*Somecode*/)//Andsoon...方法的调用user.getAddress()返回Optional.遵循著名的Demeter法则(LoD),上面的代码并不干净。但是,我不知道如何重构它以使其更清洁。第一次尝试可能是添加到User类方法hasAddress(),但这种方法克服了拥有Optional的需要,国际海事组织。我应

java - Streaming 的多项操作能否打破 Demeter 法则?

我有点想用Java8流编写Selenium页面对象,如下面的代码所述,并收到评论说我的代码违反了Demeter法则,因为我在一行中执行了很多操作。我被建议将代码分解为第一个流以收集列表并运行另一个流操作来进行匹配(简而言之,根据需要将其分解为多个流)。我不相信,因为引入Stream是为了处理数据处理,如果我们将它分解成多个流,那么使用流就没有意义了。之前我曾在一个网络安全项目中工作,其中数百万条记录通过流式处理和多个逻辑操作对数据进行排序。请分享您的想法,我已按照审阅者的建议对其进行了更改,但他无法解释原因,我想了解有关流的更多信息以及利用Java8的这一强大新增功能的正确方法。示例代

c++ - 如何在遵守 Demeter 法则的同时延迟加载?

我愿意遵守得墨忒耳法则。但我也想延迟加载一些传递给构造函数的对象。我应该如何实现?通过包装类?传递函数指针? 最佳答案 您实际上可以编写一个通用包装器来完成此操作:templateclassLazy{public:explicitLazy(Tconst&t):_loader(),_item(t){}explicitLazy(T&&t):_loader()_item(t){}explicitLazy(std::functionl):_loader(l),_item(){}T&operator*(){returnthis->get();

php - 工厂方法可能违反 Demeter 法则?

从这里引用:https://en.wikipedia.org/wiki/Law_of_DemeterMoreformally,theLawofDemeterforfunctionsrequiresthatamethodmofanobjectOmayonlyinvokethemethodsofthefollowingkindsofobjects:[2]Oitselfm'sparametersAnyobjectscreated/instantiatedwithinmO'sdirectcomponentobjectsAglobalvariable,accessiblebyO,inthesco

php - Demeter 法则非常令人困惑,因为看起来我永远无法编写返回对象的方法

感觉好像走到了死胡同。如果我理解正确,那么如果我遵循LawofDemeter我永远无法制作一个返回对象的方法,然后客户端代码调用它。我只是在考虑总是返回一个对象的工厂模式。是的,有返回对象的映射器类。那么集合呢? 最佳答案 你误解了LawofDemeter并将其应用到有用的地方:Moreformally,theLawofDemeterforfunctionsrequiresthatamethodMofanobjectOmayonlyinvokethemethodsofthefollowingkindsofobjects:Oitsel

java - 得墨忒耳定律与数据模型对象

我昨天休假回来工作,在我们的每日站会上,我的队友提到他们正在重构我们java代码中的所有模型对象,以删除所有getter和setter并使模型字段成为所有公共(public)对象,调用Demeter法则作为这样做的原因,因为tofacilitatetheouradherencetoDemeter'slaw:amoduleshouldnotknowabouttheinnardsofthe'objects'itmanipulates.Sincedatastructurescontainnobehavior,theynaturallyexposestheirinternalstructure