Запитання з тегом «solid»

Мнемоніка для набору принципів проектування: Одинична відповідальність, відкрите-закрите, підміна Ліскова, розділення інтерфейсу, інверсія залежності

5
Чи є смисловий контракт інтерфейсу (OOP) більш інформативним, ніж підпис функції (FP)?
Деякі кажуть, що якщо ви доведете принципи SOLID до їхніх крайнощів, ви закінчите функціональне програмування . Я погоджуюся з цією статтею, але думаю, що деяка семантика втрачається при переході від інтерфейсу / об’єкта до функції / закриття, і я хочу знати, як функціональне програмування може зменшити втрати. Зі статті: Крім …

5
Як застосувати принцип розбиття інтерфейсу в C?
У мене є модуль, скажімо, "M", у якого є кілька клієнтів, скажімо, "C1", "C2", "C3". Я хочу розподілити простір імен модуля M, тобто декларації API та даних, які він відкриває, у файли заголовків таким чином, що - для будь-якого клієнта видно лише ті дані та API, які йому потрібні; решта …
15 c  interfaces  solid 

4
Чи змушує мене тестова розробка дотримуватися SOLID?
Я багато чую від практиків TDD , що однією з переваг TDD є те, що воно змушує розробників дотримуватися принципів SOLID (Однозначна відповідальність, відкритість-закриття, заміна Ліскова, сегрегація інтерфейсу та інверсія залежності). Але як на мене, достатньо просто написати деякі тести (в першу чергу модульний тест), щоб зрозуміти, що важливо слідувати …

3
Чи може законно мати клас RxJava Flowable законно 460 методів?
Я тільки починаю роботу з RxJava , реалізацією Java ReactiveX (також відомим як Rx і Reactive Extensions ). Те , що дійсно вразило мене масовий розмір RxJava в текучий класі : він має 460 методи! Справедливості: Існує маса перевантажених методів, що значно зменшує загальну кількість методів. Можливо, цей клас слід …

2
Реальний світ - Принцип заміни Ліскова
Передумови: я розробляю рамки для обміну повідомленнями. Ця рамка дозволить: відправлення повідомлень через службову шину підписавшись на черги на шині повідомлень передплатити теми на шині повідомлень Наразі ми використовуємо RabbitMQ, але я знаю, що ми найближчим часом перейдемо до службової шини Microsoft (у приміщенні). Я планую створити набір інтерфейсів та …

4
Наскільки специфічним повинен бути шаблон єдиної відповідальності для занять?
Наприклад, припустимо, що у вас є консольна ігрова програма, яка має всі види методів введення / виводу на консоль і з них. Чи буде це бути розумним , щоб тримати їх все в одному inputOutputкласі або розбити їх на більш конкретних класи , як startMenuIO, inGameIO, playerIO, gameBoardIOі т.д. , …

3
Як дотримуватися принципу відкритого закриття на практиці
Я розумію наміри принципу відкритого закритого типу. Це покликане зменшити ризик зламати щось, що вже працює, змінюючи його, сказавши вам спробувати продовжити, не змінюючи. Однак у мене виникли проблеми з розумінням того, як цей принцип застосовується на практиці. Наскільки я розумію, це два способи застосувати. Beofore та після можливої ​​зміни: …

3
Два суперечливих визначення Принципу поділу інтерфейсу - яке з них є правильним?
Читаючи статті про Інтернет-провайдера, схоже, є два суперечливих визначення ISP: Згідно з першим визначенням (див. 1 , 2 , 3 ), ISP зазначає, що класи, що реалізують інтерфейс, не повинні змушувати реалізовувати функції, які їм не потрібні. Таким чином, жировий інтерфейс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
Чи макети порушують принцип "Відкрито / закрито"?
Деякий час тому я прочитав відповідь на переповнення стека, яку не можу знайти, пропозицію, в якій пояснювалося, що ви повинні перевірити загальнодоступні API, і автор сказав, що ви повинні перевірити інтерфейси. Автор також пояснив, що якщо реалізація методу зміниться, вам не потрібно буде змінювати тестовий випадок, оскільки це порушить контракт, …

3
Принцип інверсії залежності: Як визначити "політику високого рівня" та "деталізацію низького рівня" для інших людей?
Я намагаюся пояснити принцип інверсії залежності своїм (переважно молодшим) колегам. Як ми можемо визначити, хто з них - "політика високого рівня", а який - "деталь низького рівня" в програмному забезпеченні? Наприклад, якщо наше програмне забезпечення автоматизує робочий процес декількох бізнес-додатків, чому ми говоримо, що автоматизація робочого процесу - це політика …

1
Чи упаковка коду стороннього виробника є єдиним рішенням для тестування споживачів?
Я роблю тестування одиниць, і в одному з моїх класів мені потрібно надіслати пошту одним із методів, тому за допомогою конструкторської ін'єкції я ввожу екземпляр Zend_Mailкласу, який знаходиться в рамках Zend. Зараз деякі люди стверджують, що якщо бібліотека є достатньо стабільною і не змінюватиметься часто, то не потрібно її переробляти. …

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.