Описание тега law-of-demeter

Закон Деметры (LoD) или принцип наименьшего знания - это руководство по проектированию для разработки программного обеспечения, особенно объектно-ориентированных программ. В общем виде LoD представляет собой частный случай слабой связи.
1 ответ

Закон Деметры очень запутанный, потому что похоже, что я никогда не мог написать методы, которые возвращают объекты

Такое ощущение, что я зашел в тупик. Если я правильно понял, тогда, если я следую Закону Деметры, я никогда не смогу создать метод, который возвращает объект, а затем клиентский код делает вызовы к нему. Я просто думаю о фабричном шаблоне, который в…
19 фев '11 в 09:54
1 ответ

Как мне применить закон Деметры к этому?

У меня есть заведомо некрасивый запрос, чтобы найти определенную роль, связанную с текущей ролью. Эта строка дает правильный результат: @person_event_role.event_role.event.event_roles. joins(:mission_role).where(:mission_roles => {:title => 'B…
21 янв '12 в 02:14
5 ответов

Как изменить код так, чтобы он соответствовал закону Деметры

public class BigPerformance { public decimal Value { get; set; } } public class Performance { public BigPerformance BigPerf { get; set; } } public class Category { public Performance Perf { get; set; } } Если я позвоню: Category cat = new Category()…
19 апр '10 в 11:23
2 ответа

Закон Деметры путаница с простыми классами

Я работаю над проектом вычислительной геометрии. У меня есть классы, представляющие геометрические объекты: Point, LineSegment и class, который выполняет вычисления для этих объектов: Geometry. Я запутался с Законом Деметры иMethodWithPointAndLineSe…
21 мар '16 в 15:59
1 ответ

Нарушение в Голанге нарушает закон Деметры?

Это то, что Эффективный ГО должен был сказать о встраивании в Голанг Когда мы встраиваем тип, методы этого типа становятся методами внешнего типа, но когда они вызываются, получатель метода является внутренним типом, а не внешним У меня был фрагмент…
20 окт '15 в 09:10
1 ответ

Почему лучше обернуть (и несколько) код ради закона Деметры?

class Point { private $x, $y; public __construction ($x, $y) { $this->x = $x; $this->y = $y; } public function getX() { return $this->x; } public function getY() { return $this->y; } } сначала я бы написал это: class Item { private $poin…
29 сен '16 в 09:13
2 ответа

Закон Деметры IntelliJ Идеи. Ложный позитив или нет?

Предположим, следующий класс interface Thing { void doSomething(); } public class Test { public void doWork() { //Do smart things here ... doSomethingToThing(index); // calls to doSomethingToThing might happen in various places across the class. } p…
23 окт '13 в 18:25
2 ответа

Как создать классовую зависимость, пытаясь избежать закона Деметры

Хорошо, я искал и не смог найти подходящего решения для своей проблемы, я переделываю часть нашей системы торговых точек. Предположим, у нас есть следующие классы: TWorkShift = class Date: TDateTime; fTotalSold: Currency; fSales: TList<TSale>;…
26 апр '12 в 23:23
2 ответа

Сохранение закона Деметры с ArrayLists

Если у меня есть ArrayList объектов, то в любой момент, когда мне нужно вызвать любой метод члена ArrayList, мне нужно сделать это следующим образом: list.get(i).doSomething(); Это выглядит подозрительно как нарушение закона Деметры. Я не вижу никак…
29 июл '16 в 13:29
1 ответ

Прямой компонентный объект

Я не понимаю, что означает прямая составляющая объекта в контексте статьи закона Деметры. Как я вижу, термин был взят из статьи Дэвида Блока. Итак, что такое термин и где я могу получить примеры из жизни и больше информации о нем?
10 янв '18 в 09:33
0 ответов

Не повредит ли это закону Деметры при использовании услуг / фабрик в модели?

class ForumThread { /** * @return bool */ public function findBadLanguage ($inWhat) { return (bool)rand(0,1); } /** * @return */ public function add ($threadName) { if (!$this->findBadLanguage ($threadName)) { INSERT INTO } } } class ForumPost { …
05 сен '15 в 10:25
1 ответ

IntelliJ Refactor для использования LoD

Скажем, у меня есть класс 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(); } public Foo ge…
3 ответа

Закон Деметры также учитывает стандартные классы?

Предполагая следующий код: requiredIssue.get().isDone() где requiredIssue не является обязательным, и было проверено, что requiredIssue.isPresent(), Этот код нарушает закон Деметры? Технически, сейчас существует тесная связь между моим классом и фак…
01 ноя '17 в 16:36
0 ответов

Предупреждение PMD "Потенциальное нарушение закона Деметры: объект не создан локально", даже при вызове методов для локальных объектов.

Что я понял о законе Деметры: Ваш метод может вызывать другие методы в своем классе напрямую Ваш метод может вызывать методы непосредственно в своих полях (но не в полях полей) Когда ваш метод принимает параметры, он может напрямую вызывать методы д…
08 янв '15 в 06:26
5 ответов

System.out.println нарушает закон Деметры?

Есть ли System.out.println нарушать закон Деметры? Если нет, то почему?
01 янв '11 в 21:16
3 ответа

Это также нарушает закон Деметры? Или это было бы излишним, чтобы исказить это?

Очень простой момент: class Point { private $x, $y; public function __constructor($x, $y) { $this->x = $x; $this->y = $y; } public function getX() { return $this->x; } public function getY() { return $this->y; } } и круг class Circle { p…
07 окт '17 в 16:09
1 ответ

Как применить закон Деметры в рельсах для петли

У меня есть приложение rails, в котором есть модель Users с одним User_profile. Когда я хочу показать нескольких пользователей на странице, я использую цикл рельсов, например: <% @users.each do |user| %> <%= user.user_profile.city %> &lt…
08 дек '15 в 15:12
2 ответа

Закон Деметры - проблема реального мира

Я пытаюсь лучше понять Закон Деметры в реальном мире (иначе как мое заявление), но у меня есть некоторые заблуждения по поводу причин и преимуществ, которые я получаю при уходе с цепи обязанностей. У меня есть пример, где я рассматриваю использовани…
12 дек '16 в 09:45
1 ответ

Где должен быть мой код конструкции объекта при соблюдении закона Деметры?

Я наблюдал за чистыми разговорами Google с Миско Хевери. В этих беседах говорится: запросите зависимости в конструкторе, чтобы другие программисты могли заранее увидеть, что именно нужно, для создания экземпляра данного объекта ( закон деметры). Это…
29 май '11 в 09:27
1 ответ

Закон о нарушении закона Деметры?

Кто-нибудь знает инструмент, который я мог бы использовать с приложением C#, чтобы найти возможные нарушения закона Деметры? Я знаю, что это даст много ложных срабатываний, но я думаю, что это все еще может быть полезно. Особенно в начале процесса п…
11 авг '10 в 16:07