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

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

6
Чи можна вирішити задачу кола-еліпса шляхом обернення відношення?
Маючи CircleсягатиEllipse перерв в Ліски Substition принципі , тому що вона змінює постусловіем , а саме: ви можете встановити X і Y незалежно один від одного , щоб намалювати еліпс, але X завжди має дорівнювати Y для кіл. Але хіба тут проблема не спричинена тим, що Circle є підтипом Еліпса? …

5
Чи корисно міні-рефакторний код, сподіваючись на покращення якості, чи це просто "переміщення коду" без особливої ​​користі?
Приклад Я натрапив на монолітний код, який робить "все" в одному місці - завантажуючи дані з бази даних, показуючи розмітку HTML, виконуючи роль маршрутизатора / контролера / дії. Я почав застосовувати код баз даних SRP, що рухається, до власного файлу, забезпечуючи кращу назву речей, і все це виглядало добре, але …

1
Відкрити принцип закриття (OCP) проти принципу інверсії залежності (DIP)
Я намагався зрозуміти різницю між принципом відкритого закритого типу (OCP) та принципом інверсії залежності (DIP). На основі проведених нами досліджень в Інтернеті я прийшов до висновку, що "DIP - це один із варіантів, завдяки якому ми можемо досягти OCP". Я прав на це? Чи можете ви надати мені приклад, який …

5
Чи є перевантаження прикладом принципу відкритого / закритого?
У Вікіпедії йдеться "програмні об'єкти (класи, модулі, функції тощо) повинні бути відкритими для розширення, але закритими для модифікації" Слово функції зловила мої очі, і тепер мені цікаво , якщо можна припустити , що створення перевантаження для методу можна розглядати як приклад відкритого / закритого принципу чи ні? Дозвольте пояснити приклад. …

4
Як вказати передумову (LSP) в інтерфейсі на C #?
Скажімо, у нас є такий інтерфейс - interface IDatabase { string ConnectionString{get;set;} void ExecuteNoQuery(string sql); void ExecuteNoQuery(string[] sql); //Various other methods all requiring ConnectionString to be set } Передумовою є те, що ConnectionString повинен бути встановлений / ініціалізований перед тим, як запустити будь-який із методів. Цю передумову можна дещо досягти, …

9
SOLID проти статичних методів
Ось проблема, з якою я часто стикаюся: Нехай буде проект веб-магазину, який має клас продукту. Я хочу додати функцію, яка дозволяє користувачам розміщувати відгуки на продукт. Тож у мене є клас Огляд, який посилається на товар. Тепер мені потрібен метод, в якому перераховані всі відгуки до товару. Є дві можливості: …

4
Як змінюється мислення щодо моделей дизайну та практики OOP у динамічних та слабо типових мовах?
У цих напрямках є досить корисне питання (" Шаблони дизайну, що не є OOP? "), Але мені цікавіше перехідна точка зору для тих, хто тільки починає працювати з динамічними та слабо набраними мовами. Тобто: скажімо, я багато років програмував на C ++, C # або Java і поглинав багато мудрості …

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

3
Чи є проблема виявлення для розробників проблемою при використанні принципів SOLID?
Я роблю бізнес-програми, де всі інші розробники звикли робити основні програми CRUD або зосереджені виключно на створенні гарних / функціональних інтерфейсів, і я отримую наступне багато. "Завдяки тому, як ми це робимо, Співробітник мав би всі речі, які ви могли б зробити з працівником". І це було правдою. У того …
10 solid  crud 

2
Коли слідкуйте за SRP, як я маю поводитися з підтвердженням та збереженням об'єктів?
Останнім часом я читав чистий код та різні статті в Інтернеті про SOLID, і чим більше я читаю про нього, тим більше відчуваю, що нічого не знаю. Скажімо, я будую веб-додаток за допомогою ASP.NET MVC 3. Скажімо, у мене є UsersControllerтака Createдія: public class UsersController : Controller { public ActionResult …

5
Це порушення відкритого закритого принципу для оновлення константи, що представляє цінність у реальному світі?
У мене клас обчислення чистого річного доходу працівників. Він має константу, що представляє відсоток податку. Але одного дня ставка податку змінилася, тому мені потрібно виправити код. Чи вказує акт фіксації цієї константи про порушення принципу відкритого закриття, оскільки він постулює, що клас повинен бути закритий для модифікації?

7
Обхід Правил у Чарівниках та Воїнах
У цій серії публікацій блогу Ерік Ліпперт описує проблему в об'єктно-орієнтованому дизайні, використовуючи в якості прикладів майстрів та воїнів, де: abstract class Weapon { } sealed class Staff : Weapon { } sealed class Sword : Weapon { } abstract class Player { public Weapon Weapon { get; set; } …

2
Принцип поділу інтерфейсу: Що робити, якщо інтерфейси мають значне перекриття?
З розробки програмного забезпечення Agile, принципів, моделей та практик: Нова міжнародна версія Pearson : Іноді методи, на які посилаються різні групи клієнтів, будуть перетинатися. Якщо перекриття невелике, то інтерфейси для груп повинні залишатися окремими. Загальні функції повинні бути оголошені у всіх інтерфейсах, що перекриваються. Клас сервера успадкує загальні функції від …

2
Чи існує принцип інтерфейсу "запитувати лише те, що вам потрібно"?
Я перетворився на використання принципу для проектування та споживання інтерфейсів, який в основному говорить, "вимагайте лише того, що вам потрібно". Наприклад, якщо у мене є купа типів, які можна видалити, я зроблю Deletableінтерфейс: interface Deletable { void delete(); } Тоді я можу написати загальний клас: class Deleter<T extends Deletable> { …

6
У чому полягає різниця між "наймом" та чесним "майже" для фінальних інтерв'ю на місці? [зачинено]
Зачинено. Це питання поза темою . Наразі відповіді не приймаються. Хочете вдосконалити це питання? Оновіть питання, щоб це було темою для обміну стеками програмного забезпечення. Закрито 6 років тому . Отже, я нещодавно провів інтерв'ю на сайті з Google та Amazon і отримав ввічливі листи про відхилення, які дозволяють мені …
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.