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

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

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

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

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

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

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

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

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

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

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

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

4
DDD подход к базовым операциям CRUD в сложном доменно-ориентированном приложении
Моя компания переписывает наше веб-приложение с нуля. Это крупное приложение уровня предприятия со сложной областью в финансовой индустрии. Мы используем ORM (Entity Framework) для сохранения. По сути, половина наших приложений сосредоточена на сборе необработанных данных от пользователя, их хранении, а затем другая половина приложения, содержащая большую часть нашей реальной доменной …

1
Бизнес логика против сервисного уровня
Я прочитал этот ответ: https://softwareengineering.stackexchange.com/a/234254/173318, пожалуйста, исправьте мое понимание. Бизнес-правила относятся к списку шагов бизнеса в реальном мире (без кодов). Бизнес-логика относится к процессу преобразования бизнес-правил в коды и к таким группам / видам кодов, которые называются «бизнес-логика». И для чего используется уровень сервиса? если я читаю этот ответ, он …

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

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

1
Когда использовать черты, в отличие от наследования и состава?
Существует три распространенных способа, AFAIK, для реализации возможности повторного использования, когда дело доходит до ООП. Наследование: обычно представляет собой отношения (утка это птица) Состав: как правило, для обозначения отношения (автомобиль имеет двигатель) Черты (например, ключевое слово trait в PHP): ... не совсем уверен в этом Хотя мне кажется, что черты …

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.