Запитання з тегом «design-patterns»

Шаблон дизайну є загальним для багаторазового вирішення часто зустрічається проблеми в розробці програмного забезпечення.

6
Який кращий спосіб позбутися від занадто багатьох if / else - якщо з наступного фрагмента коду?
Я намагаюся написати сервлет, який виконує завдання на основі значення "action", переданого йому як вхідне. Ось зразок якого public class SampleClass extends HttpServlet { public static void action1() throws Exception{ //Do some actions } public static void action2() throws Exception{ //Do some actions } //And goes on till action9 public …

5
Відповідно до закону Деметра, чи дозволяється класу повернути одного зі своїх членів?
У мене є три питання, що стосуються закону Деметра. Крім класів, які були призначені спеціально для повернення об'єктів - наприклад, заводські та будівельні класи - чи нормально метод повернення об'єкта, наприклад, об'єкт, який міститься в одному з властивостей класу, чи чи порушує закон деметера (1) ? І якщо це порушує …

2
Як піти на тестування неін'єкційного коду?
Тож у мене є наступний фрагмент коду, який використовується у всій моїй системі. Зараз ми пишемо одиничні тести заднім числом (краще пізніше, ніж ніколи не було моїм аргументом), але я не бачу, як це було б перевірено? public function validate($value, Constraint $constraint) { $searchEntity = EmailAlertToSearchAdapter::adapt($value); $queryBuilder = SearcherFactory::getSearchDirector($searchEntity->getKeywords()); $adapter …

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

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

7
Чи існує закономірність для більш "природного" способу додавання предметів до колекцій? [зачинено]
Закрито . Це питання ґрунтується на думці . Наразі відповіді не приймаються. Хочете вдосконалити це питання? Оновіть питання, щоб на нього можна було відповісти фактами та цитатами, відредагувавши цю публікацію . Закрито 5 років тому . Я думаю, що найпоширеніший спосіб додати щось до колекції - це використовувати якийсь Addметод, …

6
Запитання в одному з аргументів для структур введення залежності: Чому важко створити графік об'єкта?
Рамки введення залежностей, такі як Google Guice, дають таку мотивацію їх використання ( джерело ): Щоб побудувати об’єкт, спочатку будуєте його залежності. Але для побудови кожної залежності потрібні її залежності тощо. Тож коли ви будуєте об’єкт, вам справді потрібно будувати графік об’єкта. Створення графіків об'єктів вручну є трудомістким (...) і …

2
Чи варто виставляти «обчислене» значення як властивість чи метод?
У мене є клас C #, який представляє тип вмісту в системі управління веб-контентом. У нас є поле, яке дозволяє редактору веб-вмісту вводити HTML-шаблон для відображення об’єкта. В основному він використовує синтаксис рулі для заміни значень властивостей об'єкта в HTML-рядок: <h1>{{Title}}</h1><p>{{Message}}</p> З точки зору дизайну класу, чи слід виставляти відформатований …

2
Чому відокремлюємо клас CommandHandler з Handle (), а не метод обробки в Command себе
У мене є частина CQRS-схеми, реалізованої за допомогою архітектури S # arp : public class MyCommand { public CustomerId { get; set; } // some other fields } public class MyCommandHandler<MyCommand> : ICommandHandler<MyCommand, CommandResult> { Handle(MyCommand command) { // some code for saving Customer entity return CommandResult.Success; } } Цікаво, …

4
Рейки: Закон плутанини Деметра
Я читаю книгу під назвою Rails AntiPatterns, і вони говорять про використання делегації, щоб уникнути порушення закону про деметер. Ось їх головний приклад: Вони вважають, що викликати щось подібне в контролері погано (і я згоден) @street = @invoice.customer.address.street Запропоноване ними рішення полягає в наступному: class Customer has_one :address belongs_to :invoice …

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

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

2
Чи існують якісь конкретні робочі процеси або шаблони дизайну, які зазвичай використовуються для створення великих функціональних програм програмування? [зачинено]
Закрито . Це питання має бути більш зосередженим . Наразі відповіді не приймаються. Хочете вдосконалити це питання? Оновіть питання, щоб воно зосередило увагу на одній проблемі, лише відредагувавши цю публікацію . Закрито 4 роки тому . Я певний час досліджував Clojure, хоча не використовував його в жодних нетривіальних проектах. В …

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

3
Рекомендуйте схему / підхід до викриття / толерантності / відновлення після системних помилок, обробку винятків (наприклад, у Java, C ++, Perl, PHP)
Чи можете ви порекомендувати схему / підхід до розкриття / допуску / відновлення після системних помилок, обробку винятків (Java, C ++, Perl, PHP)? Про деякі помилки потрібно повідомити. Деякі помилки можна обробляти внутрішньо (шляхом повторного спроби або є несуттєвими (можуть ігноруватися). Як ви структуруєте код для їх лову? Але всі …

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