Публикации по теме 'law-of-demeter'


Закон Деметры
Его часто забывают или игнорируют 😔 Закон Деметры, известный как LoD или принцип наименьшего знания. Этот так называемый закон имеет следующие три основные идеи. Каждый отряд должен иметь только ограниченные знания о других отрядах: только отряды, «тесно» связанные с текущим отрядом. Каждый юнит должен разговаривать только со своими друзьями; не разговаривай с незнакомцами. Говорите только со своими ближайшими друзьями. Имейте в виду, что единица в этом контексте - это..

Закон Деметры на примере
Работа с модульным программным обеспечением - это то, чем не все из нас могут быть одарены. Код, который должным образом изолирован и спрятан за абстракцией, кажется единорогом, о котором мы слышали, но не видели. Даже если вы этого не видели, нет никаких аргументов, чтобы не гнаться за этим. Закон Деметры может быть чем-то, что отслеживает вашего похотливого друга. Это не такая уж свежая идея, поскольку она была опубликована в конце 80-х в Северо-Восточном университете , но она все..

Модные слова, которые могут иметь значение - Закон Деметры
Di me’tr. Подчеркнутый вокал - ми, как и ми на «равном». Ровно в 11 часов, тот же напиток и еще неделя. Продолжая на прошлой неделе серию о постоянно произносимых словах в разработке программного обеспечения, сегодня мы поговорим об истории, лежащей в основе Закона Деметры (также известного как Принцип наименьшего знания). Давайте снова начнем с классной карты бинго: в конце концов, вся эта серия - это крутые и забавные вещи. отказ от ответственности: этот пост предназначен для..

Понимание делегата в Ruby on Rails
В этой статье я хочу объяснить delegate метод Ruby on Rails - это что, почему и как на практическом примере. КАКИЕ? Согласно API doc [1] - он предоставляет метод класса« делегат , позволяющий легко выставлять открытые методы содержащихся объектов как ваши собственные». И подпись метода следующая: delegate (*methods, to: nil, prefix: nil, allow_nil: nil) общедоступный Если используется, этот метод класса делегата будет предоставлять набор * методов , принадлежащих..

Вопросы по теме 'law-of-demeter'

Как решить нарушения Закона Деметры?
Мы с коллегой разработали систему для нашего заказчика, и, на наш взгляд, у нас получился приятный чистый дизайн. Но у меня проблемы с некоторыми связями, которые мы ввели. Я мог бы попытаться создать пример дизайна, который включает в себя те же...
24751 просмотров

Обертки/закон Деметры кажутся антипаттерном
Я читал об этом «Законе Деметры», и он (и чистые классы «обертки» в целом) кажутся обычно антипаттернами. Рассмотрим класс реализации: class FluidSimulator { void reset() { /* ... */ } } Теперь рассмотрим две разные реализации другого...
1092 просмотров

Является ли это нарушением Закона Деметры?
Является ли это нарушением Закона Деметры ? private void MoveEmptyCells() { IEnumerable<Cell> cells = this.internalGrid.GetAllEmptyCells(); foreach(Cell cell in cells) { cell.RowIndex += this.moveDistance; //...
204 просмотров
schedule 06.11.2022

Как спроектировать зависимость от класса, пытаясь избежать Закона Деметры
Хорошо, я искал и не смог найти подходящего решения для моей проблемы, я переделываю часть нашей системы точек продаж. Предположим, у нас есть следующие классы: TWorkShift = class Date: TDateTime; fTotalSold: Currency; fSales:...
326 просмотров
schedule 05.10.2022

Закон Деметры в дизайне API для C ++
В своей книге «Дизайн API для C ++» Мартин Редди подробно описывает закон Деметры. В частности, он заявляет, что: вы никогда не должны вызывать функцию для объекта, полученного с помощью другого вызова функции. Он подкрепляет свое...
2392 просмотров
schedule 06.05.2023

Как правильно использовать представления Backbone и маршрутизатор
У меня есть последовательность состояний страницы, которая по существу имитирует процесс проверки корзины покупок, например: var ItemsCollection = Backbone.Collection.extend({ model: ItemModel, url "/items" }); var ItemsView =...
245 просмотров
schedule 01.06.2022

Применение Закона Деметры таким образом, что это не улучшает дизайн
Предположим, у нас есть следующий класс Boy , который пытается договориться о свидании с Girl , анализируя ее расписание (пример на Java): public class Boy { public boolean tryArrangeDate(Girl girl, Date time) { boolean success = true;...
265 просмотров
schedule 05.04.2022

Закон IntelliJ Idea инспекции Деметры. Ложноположительный или нет?
Предположим, что следующий класс interface Thing { void doSomething(); } public class Test { public void doWork() { //Do smart things here ... doSomethingToThing(index); // calls to doSomethingToThing might happen in various...
665 просмотров
schedule 01.02.2024

Закон Деметры с объектами модели данных
Вчера я вернулся на работу из отпуска, и в нашей ежедневной встрече мои товарищи по команде упомянули, что они рефакторят все объекты модели в нашем коде Java, чтобы удалить все геттеры и сеттеры и вместо этого сделать поля модели всеми публичными...
2359 просмотров
schedule 09.05.2022

Закон Деметры: Доступ к статическому имуществу
У меня есть строка кода, выглядящая так: String someString = "something"; if (Foo.SOME_CONSTANT_STRING.equals(someString)) что приводит к нарушению: «Потенциальное нарушение Закона Деметры (доступ к статическому свойству)» Какой здесь...
2132 просмотров
schedule 17.05.2023

Улучшает ли это изменение мой дизайн в отношении Закона Деметры?
Допустим, мне нужно написать Wrapper для стороннего класса, который я не могу изменить. Интерфейс класса выглядит так class Rewriter { public List<Mapping> getMappings(); } Обертка выглядит так class RewriterSpec {...
54 просмотров
schedule 08.11.2022

Закон путаницы Деметры на Яве
Нарушаю ли я «Закон Деметры»? Например, я создаю человека класса, который содержит имя, телефон и идентификатор, и он соответствует столбцу в моей базе данных. Когда я хочу заполнить информацию о своем заказе, используя идентификатор человека. Мне...
359 просмотров
schedule 21.07.2023

Необязательная монада и закон Деметры в Java
когда я просматривал какой-то код, я наткнулся на этот фрагмент. List<User> users = /* Some code that initializes the list */; users.stream() .filter(user -> user.getAddress().isPresent()) .map(/* Some code */) // And so on......
753 просмотров
schedule 20.10.2023