Questions tagged [law-of-demeter]

The tag has no usage guidance.

Filter by
Sorted by
Tagged with
35 votes
1 answer
8k views

Is this a good scenario to violate the Law of Demeter?

I have this code in some part of an application: long sum1 = new Multiples().ofAny(new long[] { 3, 5 }).until(32768).sum(); long sum2 = new Multiples().ofAll(new long[] { 3, 5 }).until(32768).sum(); ...
user avatar
29 votes
4 answers
4k views

Law of Demeter and over-wide interfaces

The Law of Demeter makes sense in some obvious cases. # better dog.walk() # worse dog.legs().front().left().move() dog.legs().back().right().move() # etc. But in other cases it seems to lead to an ...
samfrances's user avatar
  • 1,075
14 votes
5 answers
4k views

According to Demeter's law, is a class allowed to return one of its members?

I have three questions concerning Demeter's law. Apart from classes which were specifically appointed to return objects - such as factory and builder classes - is it okay for a method to return an ...
user2180613's user avatar
  • 1,762
7 votes
3 answers
1k views

Does this violate the Law of Demeter?

Let's say I have a class SelectableEntity<T extends Entity> which has three methods, select, deselect, isSelected and count. To take a somewhat contrived example, let's say I'm building an ...
NRaf's user avatar
  • 301
4 votes
1 answer
442 views

Dealing with a large interface

I'm working on a program that solves a certain type of systems of equations. The main data objects are Equation, Variable, Solution. Then I have this interface, which represents all things that I want ...
Patrik Bak's user avatar
4 votes
1 answer
378 views

What does the Law of Demeter have to do with Demeter?

Is there a story from Greek mythology about the goddess Demeter that somehow motivates the Law of Demeter? If so, I'd love to know it so I can tell it to my students when I teach this topic.
dinosaur's user avatar
  • 149
4 votes
6 answers
1k views

How to deal with Law of Demeter in the product - owner relationship?

I want to display the product, and the product card has a lot of information about the product and the owner. How to deal with Law of Demeter in this product - owner relationship? In controller I ...
vovon's user avatar
  • 57
3 votes
2 answers
1k views

Demeter's law vs method chaining: when to use which?

Given this code from the Symfony framework: use Symfony\Component\HttpFoundation\Request; public function indexAction(Request $request) { $request->isXmlHttpRequest(); // is it an Ajax ...
agoldev's user avatar
  • 189
2 votes
2 answers
1k views

Law of Demeter and its applicability

Let's say I'd like to perform the following command: house.getFloor(0).getWall(WEST).getDoor().getDoorknob(); To avoid a NullPointerException, I'd have to do the following if: if (house != ...
q126y's user avatar
  • 1,713
2 votes
4 answers
791 views

Is using getter method violating the law of Demeter?

Suppose I have a Attendance class public class Attendance { private PersonInfo personInfo; public PersonInfo getPersonInfo() { return personInfo; } } And I want to check if person is ...
user3153970's user avatar
1 vote
3 answers
628 views

Python: Is returning self in method chaining a violation of Demeter's law?

In Python it is very common to see code that uses method chaining, the main difference with code elsewhere is that this is also combined with returning an object of the same type but modified. This ...
Ezequiel Castaño's user avatar
0 votes
2 answers
3k views

Using Spring Boot's @ConfigurationProperties without violating Law of Demeter

My apps commonly have one or more prop holders. These holders contain config data used in the app such as: @Component @ConfigurationProperties(prefix="app.orders") @Data //lombok public class ...
James's user avatar
  • 285
0 votes
2 answers
166 views

Should an object keep a reference to a sibling object, or access through mutual owner's method

For context, I'm building a GTK+ application in C where a subclass of GtkApplicationWindow creates and displays a subclass of GtkToolbar and a GtkNotebook (a widget with multiple pages that can be ...
Chase Patterson's user avatar