Розробка програмного забезпечення

Питання та відповіді для професіоналів, науковців та студентів, які працюють у життєвому циклі розвитку систем

2
Правильний дизайн, щоб уникнути використання динамічної передачі?
Провівши деякі дослідження, я не можу знайти простий приклад вирішення проблеми, з якою я стикаюся часто. Скажімо, я хочу створити невелику програму, де я можу створювати Squares, Circles та інші фігури, відображати їх на екрані, змінювати їх властивості після їх вибору, а потім обчислювати всі їхні периметри. Я б робив …

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

2
Які дані слід зберігати як "Претензія"?
В ASP.Net Core я вважаю, що Claimsавторизація є дуже не конкретним методом. Ми можемо додати що-небудь як ClaimTypeі ClaimValueпари; групи, ім'я, прізвище, brithdate, canAccessThisURI, isEditor тощо. Однак такий підхід (зберігання всього, що може бути збережено як претензії) створить величезну таблицю претензій, яка включає 50% моїх даних програми. Мені цікаво, як …

1
Шаблони не є будівельними блоками - тому я не повинен створювати додаток на шаблонах MVC / MVP?
Я читав цю сторінку про моделі дизайну та про те, як слід ставитися до них під час написання коду. З мого розуміння, як зазначено в заголовку посилання: Візерунки не є будівельними блоками. Якщо я правильно розумію, це означає не використовувати шаблон дизайну, поки це не має сенсу, правильно? Не починайте …

4
Чи хороша ідея створення мови для генератора, такого як "урожай"?
PHP, C #, Python і, мабуть, кілька інших мов мають yieldключове слово, яке використовується для створення генераторних функцій. На PHP: http://php.net/manual/en/language.generators.syntax.php На Python: https://www.pythoncentral.io/python-generators-and-yield-keyword/ В C #: https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/yield Я стурбований тим, що як мовна особливість / засоби, yield порушує деякі умовності. Один з них - це те, про що я …

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

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

3
Структура C # для чистої обробки "вільних функцій", уникаючи статичних класів у стилі "помічник"
Нещодавно я переглядав декілька статичних класів «допоміжних мішків» у стилі помічника, що плавають навколо деяких великих C # баз кодів, з якими я працюю, в основному такі речі, як наступний дуже ущільнений фрагмент: // Helpers.cs public static class Helpers { public static void DoSomething() {} public static void DoSomethingElse() {} …

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

6
Якщо модульні тести охоплюють лише функціональне програмне забезпечення
Ми використовуємо StructureMap в новому проекті розробки програмного забезпечення. Один з членів команди здійснив тестовий модуль, який в основному тестує конфігурацію контейнера StructureMap . Це роблять, роблячи наступне; Підраховує кількість екземплярів збірок, налаштованих для класів у нашому просторі імен додатків. Визначає очікувані екземпляри на рівні класу Стверджує, що очікувані екземпляри …

4
Підхід DDD до основних операцій CRUD у складному доменно-орієнтованому застосуванні
Моя компанія переписує нашу веб-програму з нуля. Це велика програма на рівні підприємств зі складною областю у фінансовій галузі. Ми використовуємо ORM (Entity Framework) для збереження. По суті, половина наших додатків зосереджується на зборі необроблених даних від користувача, зберіганні їх, а потім інша половина програми, яка містить більшість фактичної логіки …

4
Захист введення користувачем регулярних виразів від атак
Мені відомо про відмову в сервісі регулярних виразів (ReDoS). Чи є якийсь розумний спосіб дозволити користувачам створювати власні регулярні вирази, гарантуючи, що вони не подають експоненціально повільний шаблон?

3
Як розвиток, керований поведінкою, покращує ясність, коли природні мови неоднозначні?
Зараз я досліджую тестові рамки BDD, як огірок, і мені цікаво, коли люди кажуть оскільки файли функцій є простою природною мовою, це покращує чіткість і дає чітке бачення але чи не є природна мова причиною більшості проблем, які ми маємо в інженерії програмного забезпечення? Природна мова неоднозначна, і тому багато …
9 bdd  cucumber 

1
Як керувати неодиничними тестами в проекті?
У моєму проекті є якийсь код, який я особисто називаю tests, це не одиничні тести. Вони призначені для запуску, а результат повинен оцінюватися людиною. Я зробив це, тому що я роблю двигун фізики і під час розвитку мені потрібно було подивитися, що я роблю. Тому я зробив simulationпакет у своєму …

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

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