Программная инженерия

Q & A для профессионалов, преподавателей и студентов, работающих в жизненном цикле разработки систем

4
Как вы назначаете коды ошибок?
Как при разработке проекта среднего размера вы можете идентифицировать, создавать и поддерживать коды ошибок? Я за свою жизнь не могу придумать простой и чистый способ сделать это. Некоторые из моих идей преобразовывают имена классов и имен методов в целочисленную строку, но это слишком длинный способ отображать пользователю поверх факта, что …

3
Насколько полезны инфиксные операторы в языке программирования?
Насколько полезны инфиксные операторы в языке программирования? Стоят ли они дополнительной сложности, которую они предоставляют? Можете ли вы привести примеры, когда инфиксные операторы лучше подходят для задачи, которую нельзя решить, просто перегружая обычные операторы?

4
Много-много-много ассоциаций в микросервисах
У меня сейчас два микросервиса. Мы им позвоним Aи B. База данных под микросервисом Aимеет следующую таблицу: A |-- users База данных под микросервисом Bимеет следующую таблицу: B |-- trackers Требования утверждают, что usersи trackersимеют отношение многие ко многим. Я не уверен, как правильно справиться с этим в архитектуре микросервисов. …

2
Традиционные брокеры сообщений и потоковые данные
По данным сайта Кафки : « Kakfa используется для создания конвейеров данных в реальном времени и потоковых приложений ». Просматривая Интернет повсеместно, я нашел следующее общепринятое определение понятия « потоковые данные »: Потоковые данные - это данные, которые непрерывно перемещаются из источника в пункт назначения по сети; и Потоковые данные …

2
Мультитенантный микросервисный дизайн
Мы находимся в процессе миграции монолитного приложения на микросервисную архитектуру. Из-за некоторых нормативных требований мы должны хранить данные о клиентах из разных стран в отдельных (специфичных для страны) базах данных. То есть US db для клиентов в США, UK db для клиентов в Великобритании ... Следующие проекты, которые мы рассматриваем, …

8
Всегда ли строки C заканчиваются нулем или это зависит от платформы?
Сейчас я работаю со встроенными системами и выясняю способы реализации строк в микропроцессоре без операционной системы. Пока что я просто использую идею использования NULL-концевых символьных указателей и обрабатываю их как строки, где NULL обозначает конец. Я знаю, что это довольно часто, но всегда ли вы можете рассчитывать на это? Причина, …

2
Как мне назвать функции, которые возвращают значения в Python?
Я запутался в выборе имен для своих функций в Python . Иногда Python встроенных функций являются императивом , таких как: printфункции и метод строки find. Иногда они не такие, как: lenего имя не является обязательным, как calculate_len, например, и typeне является find_type. Я могу понять, что printвозвращает значение, которое мы …

3
DDD: где разместить обработчики событий домена?
Не могли бы вы высказать свое мнение о том, какой слой подходит для размещения обработчиков событий домена в DDD? Например, у меня есть служба приложений для добавления нового контракта, и я хотел бы отправить уведомление по электронной почте контактному лицу, когда контракт будет добавлен, так же как и служба отправки …

3
Зачем тебе «я». в Python ссылаться на переменные экземпляра?
Я программировал на нескольких языках, таких как Java, Ruby, Haskell и Python. Мне приходится переключаться между многими языками в день из-за разных проектов, над которыми я работаю. Теперь проблема в том, что я часто забываю написать, так selfкак первый параметр в определениях функций в Python - это вызов методов для …

2
Символ диаграммы классов UML для функции верхнего уровня
Как обозначить диаграмму классов UML как функцию верхнего уровня, которая не имеет инкапсулирующего класса или другой структуры? например, у меня есть функция, используемая для извлечения данных из URL. Поскольку это функция (в математическом смысле) только ее параметров и общего глобального состояния, функция не помещается в класс, а остается в качестве …
13 uml 

3
Композиция по наследству, но
Я пытаюсь научиться программировать и сталкиваюсь с противоречивой информацией, которая сбивает меня с толку. Я изучал ООП и что такое абстрактные классы / интерфейсы и как их использовать, но потом я читаю, что нужно «отдавать предпочтение композиции, а не наследованию». Я понимаю, что композиция - это когда один класс создает …

2
Почему языки программирования начали использовать = для назначения?
В большинстве ранних книг по алгоритмам <-упоминается назначение и =сравнение. Но в настоящее время единственными языками, которые не используются =для присваивания, являются Pascal ( :=) и игрушечные языки, такие как COOL . Что привело к тому, что современные языки программирования превратились =в присвоение значения вместо его математического значения равенства?

3
Обход предварительного заказа такой же, как поиск в глубину?
Мне кажется, что обход по предварительному заказу и DFS такие же, как и в обоих случаях, когда мы переходим от корня к левой ветви и обратно к корню, а затем рекурсивно к правой ветви. Может ли кто-нибудь исправить меня, если я ошибаюсь? Заранее спасибо!

1
Шаблоны регулярных выражений Java - скомпилируйте постоянные времени или члены экземпляра?
В настоящее время у меня есть пара одноэлементных объектов, в которых я выполняю сопоставление с регулярными выражениями, и мои Patterns определяются следующим образом: class Foobar { private final Pattern firstPattern = Pattern.compile("some regex"); private final Pattern secondPattern = Pattern.compile("some other regex"); // more Patterns, etc. private Foobar() {} public static …

3
Внедрение зависимостей: в какой момент мне разрешено создавать новый объект?
Я рефакторинг PHP- приложения, и я пытаюсь сделать это имеет много внедрения зависимостей (DI), насколько это возможно. Я чувствую, что у меня есть хорошее представление о том, как это работает, и я, конечно, вижу, что мои классы становятся намного стройнее и надежнее. Я делаю рефакторинг, чтобы я мог внедрить зависимость, …

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.