Вопросы с тегом «object-oriented-design»

11
Должен ли я предпочесть композицию или наследование в этом сценарии?

Рассмотрим интерфейс: interface IWaveGenerator { SoundWave GenerateWave(double frequency, double lengthInSeconds); } Этот интерфейс реализован рядом классов, которые генерируют волны различной формы (например, SineWaveGeneratorи SquareWaveGenerator). Я хочу реализовать класс, который генерирует...

11
Классы Python только с одним экземпляром: когда создавать (один) экземпляр класса и когда вместо этого работать с классом?

Данный класс Python, который будет создан только один раз, то есть будет только один объект класса. Мне было интересно, в каких случаях имеет смысл создавать отдельный экземпляр класса, а не работать непосредственно с классом. Есть похожий вопрос , но он имеет другую направленность: речь идет о...

11
Объектно-ориентированное позднее связывание

В определении объекта Alan Kays есть определение, которое я частично не понимаю: Для меня ООП означает только обмен сообщениями, локальное хранение и защиту, а также скрытие процесса состояния и крайнюю LateBinding всех вещей. Но что означает «LateBinding»? Как я могу применить это на языке, как C...

10
Длинный список параметров и длинный список переменных состояния

В книге C ++ автор говорит, что нам больше не нужна функция с длинным списком параметров, потому что большинство параметров могут быть преобразованы в переменные состояния в классе. С другой стороны, книга по функциональному программированию говорит, что переменные состояния являются злыми, потому...

10
Когда я следую SRP, как мне поступить с проверкой и сохранением сущностей?

В последнее время я читал « Чистый код» и различные онлайн-статьи о SOLID, и чем больше я читаю об этом, тем больше чувствую, что ничего не знаю. Допустим, я создаю веб-приложение с использованием ASP.NET MVC 3. Допустим, у меня есть действие UsersControllerс таким Createдействием: public class...

10
Чистый код и гибридные объекты и зависть к функциям

Так что я недавно сделал несколько серьезных рефакторингов в своем коде. Одной из основных вещей, которые я пытался сделать, было разделение моих классов на объекты данных и рабочие объекты. Это было вдохновлено, среди прочего, этим разделом Чистого кода : Гибриды Эта путаница иногда приводит к...

10
Когда я должен создать подкласс исключений в Python?

В моем коде есть около семи мест, где я поднимаю исключение. Все эти исключения обрабатываются одинаково: вывести ошибку в файл журнала, вернуть состояние программного обеспечения в состояние по умолчанию и выйти. Во время проверки кода мой старший инженер, которого я очень ценю, сказал, что я...

10
Существует ли шаблон проектирования для управления глубокими отношениями «многие ко многим»?

У меня проблемы с определением шаблона данных, с которым я столкнулся, работая над несколькими приложениями. Это состоит из: Тип объекта, который состоит из множества объектов. Второй тип объекта, где каждый экземпляр имеет «много» первого объекта И каждый из подобъектов первого объекта является...

10
Должен ли каждый класс, который я пишу, придерживаться интерфейса?

Я пишу игру на Typescript и решил, что буду пытаться придерживаться идеи « программирования на основе интерфейса », где вы пишете код, основанный на интерфейсе, а не на реализации объекта. Я написал большое количество интерфейсов и классов, которые их реализуют, затем сделал шаг назад и понял, что...

10
Существует ли элегантный способ проверки уникальных ограничений на атрибуты объекта домена без перемещения бизнес-логики на уровень обслуживания?

Я уже 8 лет адаптирую дизайн, ориентированный на предметную область, и даже после всех этих лет есть еще одна вещь, которая меня беспокоит. Это проверка уникальной записи в хранилище данных для объекта домена. В сентябре 2013 года Мартин Фаулер упомянул принцип TellDontAsk , который, по...

10
Интерфейс с только получателями - это запах кода?

(Я видел этот вопрос , но первый ответ касается автоматических свойств больше, чем дизайна, а второй говорит , что нужно скрыть код хранилища данных от потребителя , что я не уверен, что я хочу / мой код делает, так что хотелось бы услышать другое мнение) У меня есть две очень похожие сущности,...

10
Как провести рефакторинг приложения с несколькими вариантами переключения?

У меня есть приложение, которое принимает целое число в качестве ввода и на основе ввода вызывает статические методы различных классов. Каждый раз, когда добавляется новый номер, нам нужно добавить еще один случай и вызвать другой статический метод другого класса. Теперь в коммутаторе 50 дел, и...

10
Что такое «преждевременная абстракция»?

Я слышал, как фразу бросают вокруг, и для меня аргументы звучат совершенно безумно (извините, если я здесь играю, это не мое намерение), как правило, это звучит примерно так: Вы не хотите создавать абстракцию до того, как узнаете, каков общий случай, иначе (1) вы можете помещать в свои абстракции...

10
Является ли нарушением принципа Открыто-Закрыто обновление константы, представляющей реальное значение?

У меня есть класс для расчета чистого годового дохода работников. У него есть константа, представляющая процент налога. Но однажды ставка налога изменилась, поэтому мне нужно исправить код. Указывает ли акт исправления этой константы на нарушение принципа Открыто-Закрыто , поскольку он постулирует,...

9
Является ли интерфейс List утечкой абстракции?

Если у меня есть переменная, содержащая a, Listона может содержать объекты разных типов, например, ArrayListили LinkedList. Разница между а LinkedListи ArrayListдовольно большая. Поведение больших О методов сильно отличается. Например, сортировка Listи последующее использование его для выполнения...

9
Слишком много абстракций, затрудняющих расширение кода

У меня проблемы с тем, что я считаю слишком большой абстракцией в базе кода (или, по крайней мере, имею дело с ней). Большинство методов в кодовой базе были абстрагированы для получения самого высокого родителя A в кодовой базе, но у дочернего элемента B этого родителя есть новый атрибут, который...

9
Существуют ли существенные недостатки в зависимости от абстракций?

Я читал эту вики о Принципе стабильных абстракций (SAP) . SAP заявляет, что чем стабильнее пакет, тем более абстрактным он должен быть. Это подразумевает, что если пакет менее стабилен (более вероятно, изменится), то он должен быть более конкретным. Что я действительно не понимаю, так это то,...

9
Проекты и методы для защиты от ошибочных нулевых записей из базы данных

Одна часть моей программы извлекает данные из многих таблиц и столбцов в моей базе данных для обработки. Некоторые из столбцов могут быть null, но в текущем контексте обработки это ошибка. Этого не должно "теоретически" происходить, поэтому, если это так, это указывает на неверные данные или ошибку...

9
Как четко определить границы ограниченного контекста

После месяца или около того чтения и исследования DDD я решил начать свой собственный проект и создал DDD с этими ограниченными контекстами> клиенты Товары заказы Billing Каждый ограниченный контекст имеет API покоя в качестве уровня представления, уровня домена, постоянного уровня. Пока все...

9
Что делает итератор шаблоном дизайна?

Мне было интересно, что же делает Итератор особенным по сравнению с другими подобными конструкциями, и это заставило Банду Четырех перечислить его как шаблон проектирования. Итератор основан на полиморфизме (иерархия коллекций с общим интерфейсом) и разделении задач (итерации по коллекциям должны...