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

Питання щодо вирішення проблем та планування рішення за допомогою розробки програмного забезпечення.

2
Де ми ставимо код «запитуючи світ», коли ми розмежовуємо обчислення від побічних ефектів?
Відповідно до принципу розділення команд-запитів , а також мислення в даних і DDD з презентаціями Clojure слід відокремлювати побічні ефекти (модифікуючи світ) від обчислень та рішень, щоб було легше зрозуміти і перевірити обидві частини. Це залишає без відповіді питання: де відносно кордону слід поставити "запитання світу"? З одного боку, запит …

3
Чи є стратегії виявлення REST-послуг за допомогою HATEOAS?
Створюючи послугу REST із обмеженням HATEOAS , дуже просто рекламувати існування ресурсів за допомогою посилання. Ви робите GETкорінь мого сайту, і я відповідаю кореневим документом, у якому перераховані всі ресурси першого рівня: { users: { href: "/users" } questions { href: "/questions" } } Клієнти, які розуміють, як читати ці …
10 design  rest  hateoas 

1
Мова обмеження об'єктів (OCL) для стека в пакеті java.util
У мене складається іспит, і я дивлюся на минулі документи, щоб отримати деякі ідеї, що чекати. Я трохи застряг у наступному і дуже буду вдячний, якби хтось міг дати приклад відповіді. Запишіть передумови та постумови в OCL для кожної з наступних операцій (включених до класу Stack в пакеті java.util): (1) …
10 design  languages  object  ocl 

3
Чи повинен список параметрів методу містити об'єкти або ідентифікатори об'єктів?
Наші команди ведуть таку дискусію: Скажімо, у нас є наступні два методи: public Response Withdraw(int clubId, int terminalId,int cardId, string invoice, decimal amount); public Response Withdraw(Club club, Terminal terminal,Card card, string invoice, decimal amount); Що надсилаються по дроті - це лише ідентифікатори. одна сторона каже, що перший метод є правильним, …
10 design  methods 

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

5
Чи варто включати вартість виходу у вибір рішення
В даний час я вибираю між двома життєздатними проектами / рішеннями програмного забезпечення. Рішення 1 легко здійснити, але заблокує деякі дані у форматі, що зберігається, і їх буде важко змінити пізніше. Рішення 2 важко здійснити, але згодом його буде набагато легше змінити. Чи варто мені на це звернутися YAGNI чи …

5
Як поділити тест на функцію, яка відновлена ​​до стратегії?
Якщо у мене в коді функція така: class Employee{ public string calculateTax(string name, int salary) { switch (name) { case "Chris": doSomething($salary); case "David": doSomethingDifferent($salary); case "Scott": doOtherThing($salary); } } Зазвичай я б перетворював це на використання Ploymorphism, використовуючи заводський клас та шаблон стратегії: public string calculateTax(string name) { InameHandler …

6
Тлумачення принципу DRY
Зараз я боюся з цією концепцією DRY (не повторюй себе) у своєму кодуванні. Я створюю цю функцію, в якій боюся, що вона стане занадто складною, але я намагаюся слідувати принципу DRY. createTrajectoryFromPoint(A a,B b,C c,boolean doesSomething,boolean doesSomething2) Ця функція, яку я кажу, приймає 3 вхідні параметри, і тоді функція зробить …
10 java  design  dry 

4
Дизайн-схема для обробки відповіді
Більшу частину часу, коли я пишу якийсь код, який обробляє відповідь на певний виклик функції, я отримую таку структуру коду: Приклад: Це функція, яка буде обробляти аутентифікацію для системи входу class Authentication{ function login(){ //This function is called from my Controller $result=$this->authenticate($username,$password); if($result=='wrong password'){ //increase the login trials counter //send …

1
Як переробити "боговий клас" Python?
Проблема Я працюю над проектом Python, головним класом якого є “ God Object ”. Існує так багато атрибутів і методів! Я хочу переробити клас. Так далеко… Для першого кроку я хочу зробити щось відносно просте; але коли я спробував найпростіший підхід, він зламав деякі тести та існуючі приклади. В основному, …

2
Чи застосовується "Закон про деметер" для підписів методів public / API?
Враховуючи, що зміни в підписі API / public методу повинні бути мінімальними, щоб запобігти порушенню тих клієнтських кодів, які використовують ці методи, мені було цікаво, чи Закон Деметер менш застосовний до них. Простий приклад: class Account() { double balance; public void debit(Transaction t) { balance -= t.getAmount(); } } Зауважте, …

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

7
Як перейти від вміння писати код до хорошого розробника?
Мене засмучує відсутність конкретних пояснень того, як перейти від вміння сценарію (bash, awk) та написання простих додатків (c, php, python) до розробки та розробки більшого, складного програмного забезпечення. Здається, що з одного боку є книги з мов програмування, а з іншого - книги з інженерії програмного забезпечення / управління проектами, …

5
Налаштувати клас / структуру: шаблон або анти-шаблон? Альтернативи?
Якщо додати в програму нові параметри конфігурації, вона часто може мати безліч ефектів пульсації з точки зору отримання варіантів того місця, де потрібно діяти. Є три основні способи впоратися з цим, про які я знаю: Передайте всі налаштування конфігурації частинам вашої програми, які явно потребують їх як примітиви. Це найбільш …

7
Як впоратися з проблемою (складання) великої бази коду?
Хоча я можу кодувати, я ще не маю досвіду роботи над великими проектами. Мені до цього було або кодування невеликих програм, які збираються за лічені секунди (різні вправи c / c ++, такі як алгоритми, принципи програмування, ідеї, парадигми, або просто випробування api's ...) або робота над деякими меншими проектами, …

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