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

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


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

6
Чому SQL не піддається ремонту? [зачинено]
Всім відомо, що нові розробники пишуть довгі функції. Коли ви прогресуєте, ви краще розбиваєте свій код на більш дрібні шматки, а досвід вчить вас цінності цього. Введіть SQL. Так, спосіб мислення коду SQL відрізняється від процедурного способу мислення про код, але цей принцип здається настільки ж застосовно. Скажімо, у мене …

5
Чому успадковувати клас та не додавати властивості?
Я знайшов дерево спадкування у нашій (досить великій) кодовій базі, яка має щось подібне: public class NamedEntity { public int Id { get; set; } public string Name { get; set; } } public class OrderDateInfo : NamedEntity { } З того, що я міг зібрати, це в першу чергу …

8
Чи краще нове булеве поле, ніж нульове посилання, коли значення може бути значимо відсутнє?
Наприклад, припустимо, у мене є клас Member, у якого є останнійChangePasswordTime: class Member{ . . . constructor(){ this.lastChangePasswordTime=null, } } чий lastChangePasswordTime може бути значимим відсутнім, оскільки деякі члени ніколи не можуть змінювати свої паролі. Але відповідно до Якщо нулі є злими, що слід використовувати, коли значення може бути змістовно …
39 null  boolean 

11
Чи повинен REST API повертати помилку 500 внутрішнього сервера, щоб вказати, що запит посилається на об'єкт, який не існує?
Я працюю з API REST, який знаходиться на сервері, який обробляє дані для безлічі пристроїв IoT. Моє завдання - запросити сервер за допомогою API для збору конкретної інформації про продуктивність цих пристроїв. В одному випадку я отримую список доступних пристроїв та їх відповідних ідентифікаторів, а потім пізніше запитую сервер для …

6
Зробити код змінним за допомогою використання глобально унікальних ідентифікаторів повідомлень
За цим сценарієм розповсюджується загальна схема пошуку помилки: Дотримуйтесь дивнощів, наприклад, відсутність виводу або вивішування програми. Знайдіть відповідне повідомлення у журналі або програмі, наприклад, "Не вдалося знайти Foo". (Наступне є актуальним лише у тому випадку, якщо це шлях, який потрібно знайти, щоб знайти помилку. Якщо трак стека чи інша інформація …

5
Чи вважається анти-зразком читати STDIN з бібліотеки?
Під час написання бібліотеки для великого проекту, над яким я працюю на роботі, виникла проблема, яка вимагала надсилання маркера на електронну адресу, а потім повернення назад у код, де він може бути використаний для подальшого використання. Мій колега каже просто прочитати з STDIN (використовуючи Python:), code = input("Enter code: ")а …

8
Інвертування твердження IF
Тому я програмую вже кілька років, і останнім часом почав більше використовувати ReSharper. Одне, що ReSharper завжди пропонує мені, це "інвертувати", якщо "заява для зменшення вкладеності". Скажімо, у мене є цей код: foreach (someObject in someObjectList) { if(someObject != null) { someOtherObject = someObject.SomeProperty; } } І ReSharper запропонує зробити …

3
Чому я повинен використовувати «функціональні операції» замість циклу?
for (Canvas canvas : list) { } NetBeans пропонує мені використовувати "функціональні операції": list.stream().forEach((canvas) -> { }); Але чому це віддається перевазі ? Якщо що-небудь, важче читати і розуміти. Ви дзвоните stream(), forEach()використовуючи лямбда-вираз із параметром canvas. Я не бачу, як це краще, ніж forцикл у першому фрагменті. Очевидно, я …

7
Переклад зовнішніх даних на мову, якою ви програмуєте
Я не впевнений, що робити з наступним: Ми беремо дані із зовнішнього інструмента в межах власного інструменту. Ці дані написані голландською мовою. Ми пишемо наш код Java англійською мовою. Чи повинні ми тоді перекласти цю голландську на англійську чи зберегти її голландською? Наприклад, у нас є 2 відділи: Bouw (будівництво …
39 naming  translate 

13
Чи неправильно використовувати булевий параметр для визначення значень?
Згідно Чи неправильно використовувати булевий параметр для визначення поведінки? , Я знаю важливість уникати використання булевих параметрів для визначення поведінки, наприклад: оригінальна версія public void setState(boolean flag){ if(flag){ a(); }else{ b(); } c(); } Нова версія: public void setStateTrue(){ a(); c(); } public void setStateFalse(){ b(); c(); } Але як …

3
Чому Python не має функції «сплющити» для списків?
Erlang і Ruby оснащені функціями для вирівнювання масивів. Здається, такий простий і корисний інструмент для додавання до мови. Можна зробити так: >>> mess = [[1, [2]], 3, [[[4, 5]], 6]] >>> mess.flatten() [1, 2, 3, 4, 5, 6] Або навіть: >>> import itertools >>> mess = [[1, [2]], 3, [[[4, …

6
Рядки жорсткого кодування, які ніколи не зміняться
Отже, в моїх спробах написати програму для сполучення дієслів (алгоритмічно, а не через набір даних) для французької мови, я зіткнувся з невеликою проблемою. Алгоритм сполучення дієслів насправді досить простий для 17-ти або більше випадків дієслів і працює за певною схемою для кожного випадку; Таким чином, суфікси сполучення для цих 17 …
39 design  strings 

12
Чому більшість мов програмування мають спеціальні ключові слова або синтаксис для оголошення функцій? [зачинено]
Більшість мов програмування (як динамічно, так і статично набрані мови) мають спеціальне ключове слово та / або синтаксис, який виглядає набагато інакше, ніж декларування змінних для декларування функцій. Я бачу функції так само, як декларування іншого названого об'єкта: Наприклад в Python: x = 2 y = addOne(x) def addOne(number): return …

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