Вопросы с тегом «solid»

Мнемоника для набора принципов проектирования: единая ответственность, открытый-закрытый, подстановка Лискова, сегрегация интерфейса, инверсия зависимостей

5
Является ли семантический контракт интерфейса (ООП) более информативным, чем сигнатура функции (ФП)?
Некоторые говорят, что если вы доведете принципы SOLID до крайности, вы в конечном итоге окажетесь в функциональном программировании . Я согласен с этой статьей, но думаю, что при переходе от интерфейса / объекта к функции / закрытию теряется некоторая семантика, и я хочу знать, как функциональное программирование может уменьшить потери. …

5
Как применить принцип разделения интерфейса в C?
У меня есть модуль, скажем «M», в котором есть несколько клиентов, скажем «C1», «C2», «C3». Я хочу распределить пространство имен модуля M, то есть объявления API и данных, которые он предоставляет, в файл (ы) заголовка таким образом, чтобы - для любого клиента видны только те данные и API, которые ему …
15 c  interfaces  solid 

4
Заставляет ли меня разработка, основанная на тестировании, следовать SOLID?
Я много слышал от практиков TDD , что одним из преимуществ TDD является то, что он заставляет разработчиков следовать принципам SOLID (единая ответственность, открытый-закрытый, замена Лискова, разделение интерфейса и инверсия зависимостей). Но для меня достаточно просто написать несколько тестов (прежде всего модульных), чтобы понять, что важно следовать SOLID (и, таким …

3
Может ли класс RxJava Flowable законно иметь 460 методов?
Я только начинаю с RxJava , Java-реализации ReactiveX (также известной как Rx и Reactive Extensions ). То , что действительно поразило меня массовый размер RxJava в текучий классе : он имеет 460 методы! По честному: Есть много методов, которые перегружены, что значительно увеличивает общее количество методов. Возможно, этот класс следует …

2
Реальный мир - принцип замещения Лискова
Справочная информация: я разрабатываю систему обмена сообщениями. Эта структура позволит: отправка сообщений через сервисную шину подписка на очереди в шине сообщений подписка на темы в шине сообщений В настоящее время мы используем RabbitMQ, но я знаю, что мы перейдем на Microsoft Service Bus (в Premise) в самое ближайшее время. Я …

4
Насколько конкретным должен быть шаблон единой ответственности для классов?
Например, предположим, что у вас есть консольная игровая программа, которая имеет все виды методов ввода / вывода в консоль и из консоли. Будет ли это быть умным , чтобы держать их все в одном inputOutputклассе или разбить их на более конкретных классы , как startMenuIO, inGameIO, playerIO, gameBoardIOи т.д. , …

3
Как придерживаться принципа открытого-закрытого на практике
Я понимаю цель принципа открытого-закрытого. Он предназначен для того, чтобы уменьшить риск поломки чего-либо, что уже работает при его изменении, предлагая вам попытаться расширить без изменения. Однако у меня возникли проблемы с пониманием того, как этот принцип применяется на практике. Насколько я понимаю, есть два способа его применения. До и …

3
Два противоречивых определения принципа разделения интерфейсов - какое из них правильное?
При чтении статей об ISP, кажется, есть два противоречивых определения ISP: Согласно первому определению (см. 1 , 2 , 3 ), провайдер заявляет, что классы, реализующие интерфейс, не должны принуждаться к реализации функций, которые им не нужны. Таким образом, толстый интерфейсIFat interface IFat { void A(); void B(); void C(); …

1
Как проверить принцип подстановки Лискова в иерархии наследования?
Вдохновленный этим ответом: Лиск принцип замещения требует , что Предпосылки не могут быть усилены в подтипе. Постусловия не могут быть ослаблены в подтипе. Инварианты супертипа должны быть сохранены в подтипе. Ограничение истории («правило истории»). Объекты считаются изменяемыми только через их методы (инкапсуляция). Поскольку подтипы могут вводить методы, которых нет в …

2
Стек, расширяющий LinkedList. Нарушение принципа подстановки Лискова?
Существует класс LinkedList с такими функциями, как add_first (), add_last (), add_after (), remove_first (), remove_last () и remove () Теперь есть класс Stack, который предоставляет такие функции, как push (), pop (), peek () или top (), и для реализации этих методов он расширяет методы класса LinkedList. Это нарушение …

4
Следуют ли SOLID чтению и записи файлов две разные обязанности?
Я только начинаю изучать SOLID, и я не уверен, что чтение из файлов и запись в файлы являются одной и той же ответственностью. Цель имеет тот же тип файла; Я хочу читать и писать .pdf в моем приложении. Приложение на Python, если это имеет какое-либо значение.

4
Не нарушают ли макеты принцип Open / Closed?
Некоторое время назад я прочитал в ответе о переполнении стека, которое не могу найти, предложение, объясняющее, что вы должны тестировать публичные API, и автор сказал, что вы должны тестировать интерфейсы. Автор также объяснил, что если реализация метода изменилась, вам не нужно изменять тестовый пример, поскольку это нарушит контракт, обеспечивающий работоспособность …

3
Принцип инверсии зависимости: Как определить «политику высокого уровня» и «детализацию низкого уровня» для других людей?
Я пытаюсь объяснить принцип инверсии зависимостей моим (в основном младшим) коллегам. Как мы можем определить, какая из них является «политикой высокого уровня», а какая «низкоуровневой» в программном обеспечении? Например, если наше программное обеспечение автоматизирует рабочий процесс нескольких бизнес-приложений, почему мы говорим, что автоматизация рабочего процесса - это политика высокого уровня, …

1
Является ли упаковка стороннего кода единственным решением для модульного тестирования своих потребителей?
Я делаю модульное тестирование, и в одном из моих классов мне нужно отправить письмо от одного из методов, поэтому, используя инъекцию конструктора, я внедряю экземпляр Zend_Mailкласса, который находится в среде Zend. Теперь некоторые люди утверждают, что если библиотека достаточно стабильна и не будет часто меняться, то нет необходимости ее оборачивать. …

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

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