Вопросы с тегом «design»

9
Добавление к конечному набору опций; сломать API изменения?

Возьмите конечную точку HTTP API, которая выделяет следующую модель ответа: { "type": "Dog", "name": "Jessi", ... } typeПоле было описано в документации как один из Dog, Catили Fish. Будет ли добавление новой опции, скажем Rat, рассматриваться как критическое изменение API? Считается ли добавление...

9
Бизнес логика против сервисного уровня

Я прочитал этот ответ: https://softwareengineering.stackexchange.com/a/234254/173318, пожалуйста, исправьте мое понимание. Бизнес-правила относятся к списку шагов бизнеса в реальном мире (без кодов). Бизнес-логика относится к процессу преобразования бизнес-правил в коды и к таким группам / видам...

9
Является ли плохой практикой для определения объекта API содержать сторонние ссылочные идентификаторы в качестве свойств?

Нравится: Campaign: type: object properties: id: type: string description: "A GUID identifier" referenceId: type: string description: "A consumers identifier they have used to map their own systems logic to this object." name: type: string description: "'Great Campaign 2017' as an example" Я...

9
DDD подход к базовым операциям CRUD в сложном доменно-ориентированном приложении

Моя компания переписывает наше веб-приложение с нуля. Это крупное приложение уровня предприятия со сложной областью в финансовой индустрии. Мы используем ORM (Entity Framework) для сохранения. По сути, половина наших приложений сосредоточена на сборе необработанных данных от пользователя, их...

9
Я делаю свои занятия слишком гранулированными? Как следует применять принцип единой ответственности?

Я пишу много кода, который включает в себя три основных шага. Получить данные откуда-то. Преобразуйте эти данные. Положите эти данные куда-нибудь. Я обычно заканчиваю тем, что использую три типа классов - вдохновленные их соответствующими шаблонами дизайна. Фабрики - построить объект из какого-то...

9
Хорошая идея - иметь возможность использовать язык генератора, такой как «yield»?

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 #:...

9
Как применить некоторые концепции DDD к реальному коду? Конкретные вопросы внутри

Я изучал DDD, и в настоящее время я пытаюсь найти способ применить концепции в реальном коде. У меня около 10 лет опыта работы с N-ярусом, поэтому очень вероятно, что я борюсь за то, что моя ментальная модель слишком связана с этим дизайном. Я создал веб-приложение Asp.NET и начинаю с простого...

9
Как бы я разработал метод TryParse, который предоставляет подробную информацию в случае ошибки синтаксического анализа?

При анализе пользовательского ввода обычно рекомендуется не генерировать и перехватывать исключения, а использовать методы проверки. В .NET BCL это будет разница между, например, int.Parse(создает исключение для недопустимых данных) и int.TryParse(возвращает falseнедопустимые данные). Я создаю свой...

9
Гранулярность исключений

Я столкнулся с дебатами между несколькими друзьями и мной. Они предпочитают общие исключения, такие как ClientErrorExceptionи ServerErrorExceptionс подробностями в качестве полей исключения, тогда как я предпочитаю делать вещи более конкретными. Например, у меня может быть несколько исключений,...

9
Имя техники для вывода аргументов типа параметра типа?

Настройка: Давайте предположим, что у нас есть вызываемый Iteratorтип с параметром типа Element: interface Iterator<Element> {} Тогда у нас есть интерфейс, Iterableкоторый имеет один метод, который будет возвращать Iterator. // T has an upper bound of Iterator interface Iterable<T:...

9
Намерен ли Дейкстра на модуляризацию кода, когда писал о разделении интересов?

Сначала я прочитал отрывок из статьи Эдсгера В. Дейкстры 1974 года «О роли научной мысли»: Позвольте мне попытаться объяснить вам, что на мой вкус характерно для всего разумного мышления. Дело в том, что человек желает углубленно изучать аспект своего предмета изолированно ради своей собственной...

9
Может ли переименование метода сохранить инкапсуляцию?

Я читал эту страницу о том, когда геттеры / сеттеры оправданы, и ОП дал следующий пример кода: class Fridge { int cheese; void set_cheese(int _cheese) { cheese = _cheese; } int get_cheese() { return cheese; } } void go_shopping(Fridge fridge) { fridge.set_cheese(fridge.get_cheese() + 5); } В...

9
Слишком много абстракций, затрудняющих расширение кода

У меня проблемы с тем, что я считаю слишком большой абстракцией в базе кода (или, по крайней мере, имею дело с ней). Большинство методов в кодовой базе были абстрагированы для получения самого высокого родителя A в кодовой базе, но у дочернего элемента B этого родителя есть новый атрибут, который...