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

18
Есть ли доказательства того, что использование внедрения зависимостей улучшает результаты в разработке программного обеспечения?

Несмотря на его популярность, есть ли эмпирические данные, которые показывают, что Dependency Injection (и / или использование DI-контейнера) помогает, скажем, уменьшать количество ошибок, улучшать удобство обслуживания или увеличивать скорость разработки в реальных программных...

18
Является ли хорошей идеей определить одну большую частную функцию в классе для поддержания действительного состояния, то есть обновить элементы данных объекта?

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

18
Как вы управляете конфигурацией с внедрением зависимостей?

Я большой поклонник DI / IOC. Он отлично подходит для обработки / абстрагирования жестких зависимостей и делает жизнь немного проще. Тем не менее, у меня есть небольшой недостаток, который я не знаю, как решить. Основная идея DI / IOC заключается в том, что при создании экземпляра объекта все его...

18
Как разработать рабочий процесс сайта?

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

17
Принцип наименьшего удивления (POLA) и интерфейсы

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

17
Как вы делаете GUI для полиморфного класса?

Допустим, у меня есть конструктор тестов, чтобы учителя могли создать кучу вопросов для теста. Однако не все вопросы одинаковы: у вас есть несколько вариантов выбора, текстовое поле, соответствие и т. Д. Каждый из этих типов вопросов должен хранить разные типы данных и иметь разные графические...

17
Как «Вам это не нужно» и «Теперь лучше, чем никогда» играть вместе?

Я часто нахожусь в объятиях «сейчас лучше, чем никогда», когда я продвигаю СУХОСТЬ дизайна. Как правило, я нахожу, что мне нужно развивать понимание Единого авторитетного Места для части знаний в контексте системы других частей знаний. Таким образом, я склонен проектировать систему «сейчас». И...

17
Стоит ли внедрение зависимостей за пределы UnitTesting?

Учитывая конструктор, который никогда не будет использовать какие-либо разные реализации нескольких объектов, которые он инициализирует, все еще практично использовать DI? В конце концов, мы все еще можем захотеть провести юнит тест. Рассматриваемый класс инициализирует несколько других классов в...

17
Есть ли конкретная стратегия проектирования, которая может быть применена для решения большинства проблем курицы и яйца при использовании неизменяемых объектов?

Исходя из опыта ООП (Java), я изучаю Scala самостоятельно. Несмотря на то, что я легко вижу преимущества индивидуального использования неизменяемых объектов, мне трудно понять, как можно создать такое целое приложение. Я приведу пример: Скажем, у меня есть объекты, которые представляют «материалы»...

17
Применим ли принцип единой ответственности к функциям?

По словам Роберта К. Мартина, SRP заявляет, что: Никогда не должно быть более одной причины для изменения класса . Однако в своей книге « Чистый код» , глава 3: Функции, он показывает следующий блок кода: public Money calculatePay(Employee e) throws InvalidEmployeeType { switch (e.type) { case...

17
Стратегии избегания SQL в ваших контроллерах ... или сколько методов мне следует использовать в моих моделях?

Таким образом, ситуация, с которой я сталкиваюсь достаточно часто, - это ситуация, когда мои модели начинают либо: Вырасти в монстров с тоннами и тоннами методов ИЛИ Позволяют вам передавать кусочки SQL им, чтобы они были достаточно гибкими и не требовали миллиона различных методов. Например,...

17
Что если я не буду использовать Шаблоны разработки программного обеспечения? [закрыто]

Закрыто . Этот вопрос должен быть более сфокусированным . В настоящее время не принимает ответы. Хотите улучшить этот вопрос? Обновите вопрос, чтобы он был сосредоточен только на одной проблеме, отредактировав этот пост . Закрыто 6 лет назад . С какими проблемами я могу столкнуться, если не буду...

17
Отношения между хранилищем и единицей работы

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

17
Создают ли перечисления хрупкие интерфейсы?

Рассмотрим пример ниже. Любое изменение в перечислении ColorChoice влияет на все подклассы IWindowColor. Имеют ли перечисления тенденцию вызывать хрупкие интерфейсы? Есть ли что-то лучше, чем enum для большей полиморфной гибкости? enum class ColorChoice { Blue = 0, Red = 1 }; class IWindowColor {...

17
Применяется ли принцип подстановки Лискова к классам, реализующим интерфейс?

LSP утверждает, что классы должны быть заменяемыми для их базовых классов, а это означает, что производные и базовые классы должны быть семантически эквивалентными. Но применяется ли LSP к классам, реализующим интерфейс? Другими словами, если метод интерфейса, реализуемый классом, семантически...

17
Государственный паттерн нарушает принцип подстановки Лискова?

Это изображение взято из применения доменного дизайна и шаблонов: с примерами в C # и .NET Это диаграмма классов для шаблона состояний, в котором в SalesOrderтечение срока службы может быть несколько состояний. Между разными состояниями разрешены только определенные переходы. Теперь OrderStateкласс...

17
Когда перечисления НЕ являются запахом кода?

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

17
Что заправляет насос? Иногда называется начальным чтением

Меня учили этому выражению и образцу еще в тот день. Конечно, название происходит от старых насосов, которые нужно было заполнить водой, прежде чем они могли качать воду, но кого это волнует? Мы говорим о коде здесь. Хотелось бы получить несколько действительно хороших примеров и объяснение того,...

16
Что такое шаблонное программирование?

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