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

9
Идиоматическое обёртывание C ++ типа шаблона API в C

Я работаю над упаковкой API C ++, который предоставляет доступ к хранилищу данных (Hazelcast) в функции C, чтобы к хранилищу данных также можно было получить доступ из кода только на C. API Hazelcast C ++ для структуры данных Map выглядит следующим образом: auto map =...

9
На языке REST, в чем разница между ресурсом и представлением?

Я понимаю, что REST позволяет моделировать операции сервиса как представление состояния и переход из одного состояния в другое с использованием HTTP. Я всегда понимал ресурсы как представления о состоянии сервисной стороны до недавнего времени, когда читал эту статью Джимми Богарда, которого я знаю...

9
Какой методологии программного обеспечения мне следует руководствоваться при проведении исследований?

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

9
Критерии приемки для краевых случаев

Я владелец продукта в гибкой команде. Я, когда я делаю приемочное тестирование ПО, обычно отмечаю, чтобы попробовать некоторые крайние случаи Для меня не редкость, когда я что-то открываю, и затем я передаю это разработчикам. Меня отталкивает один из разработчиков, когда я отвергаю его истории. Он...

9
Имеет ли смысл применять принципы Redux к ОО-языкам?

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

9
Структура данных для двумерных настольных игр на функциональных языках

Я создаю простую реализацию MiniMax на функциональном языке программирования Elixir. Поскольку существует множество игр с совершенным знанием (крестики-нолики, connect-four, шашки, шахматы и т. Д.), Эта реализация может стать основой для создания игровых ИИ для любой из этих игр. Однако одна...

9
Как статическая типизация действительно полезна в больших проектах?

Любопытствуя на главной странице сайта языка скриптового программирования, я натолкнулся на этот отрывок: Когда система становится слишком большой, чтобы держать ее в голове, вы можете добавлять статические типы. Это заставило меня вспомнить, что во многих религиозных войнах между статическими,...

9
Apollo-11: использование включения вместо компоновщика

Недавно оцифрованный и превращенный в репозиторий исходный компьютерный исходный код Apollo 11 был доступен для просмотра на Github . В репозитории MAIN.agc автор репозитория комментирует, что они разбить огромный монолитный исходный код на более мелкие, более управляемые куски - т.е. на отдельные...

9
Я преждевременно оптимизирую?

В настоящее время я нахожусь на стадии разработки архитектуры на основе компонентов в C ++. Мой текущий дизайн включает в себя использование таких функций, как: std::vectors std::shared_ptrдля хранения компонентов std::dynamic_pointer_cast std::unordered_map<std::string,[yada]> Компоненты...

9
Контейнеры DI / IoC и фабрики: где я могу настроить приложение и почему?

Я пытаюсь выяснить, когда использовать реестр DIC / IoC для настройки моего программного обеспечения и когда использовать фабрики, а также обосновать любой из этих подходов. Я использую StructureMap в качестве моего DI-контейнера (DIC), который легко настроить с помощью реестров. В DIC практически...

9
Почему Swift сначала инициализирует собственные поля подкласса?

В языке Swift, чтобы инициализировать экземпляр, нужно заполнить все поля этого класса и только потом вызывать суперконструктор: class Base { var name: String init(name: String) { self.name = name } } class Derived: Base { var number: Int init(name: String, number: Int) { // won't compile if...

9
Можно ли определить все побитовые операторы, используя «побитовый nand», подобно тому, как вся логическая логика может быть построена, используя просто «булевский nand»?

Nand известен как «универсальный» логический элемент, потому что он позволяет вам определять все другие логические логические элементы: not(x) = nand(x,x) and(x, y) = not(nand(x, y)) or(x, y) = nand(not(x), not(y)) nor(x, y) = not(or(x, y)) xor(x, y) = nand(nand(a, nand(a, b)), nand(b, nand(a, b)))...

9
Обработка изменений в управляемой событиями архитектуре микросервиса

Я занимаюсь исследовательским проектом, в котором изучаю варианты обработки изменений в микросервисной архитектуре, управляемой событиями. Итак, скажем, у нас есть приложение, в котором мы получили четыре разных сервиса. Каждый из этих сервисов имеет собственную базу данных для хранения локальных...

9
Выбор наиболее калорийной расстановки блюд

Предположим, я ем пять раз в день, а поскольку в неделю семь дней, у меня есть рецепты по семь на каждый прием пищи, всего 35 рецептов. Каждый рецепт имеет количество калорий. Каждый день должен содержать один рецепт на каждый прием пищи, и каждый рецепт привязан к определенному приему пищи...

9
Декораторы классов в Python: практические примеры использования

Я ищу практические и не синтетические варианты использования декораторов классов Python. До сих пор единственный случай, который имел смысл для меня, - это регистрация класса в системе издатель-подписчик, например, плагины или события, что-то вроде: @register class MyPlugin(Plugin): pass или...

9
Это нормально для интерфейсов, чтобы зависеть от конкретных классов?

Я создаю интерфейс на Java для пользовательского обработчика ошибок. Хочу передать объект ошибки аргумента, но мне нужно, чтобы он был потомком Exceptionкласса. Можно ли использовать мое имя класса в интерфейсе? Разве это не сделает его менее интерфейсным с точки зрения отсутствия зависимости от...

9
Сохранение чистой истории git при использовании gitflow - неотправленные коммиты на разработке

Используя gitflow, при создании release-1.0.0ветви и объединении ее с обеими ветвями masterи developобеими ветвями будет отсутствовать коммит: masterне будет коммит, где release-1.0.0было слияние сdevelop developне будет коммит, где release-1.0.0было слияние сmaster Вместо этого после...

9
Микросервисы и каноническая модель

Когда я читал о микросервисах на этом сайте , я наткнулся на следующее утверждение. Что подразумевается под канонической схемой? Разве это не то же самое, что модель предметной области? Шаблон архитектуры микросервисов также отклоняет другие части SOA, такие как концепция канонической схемы....

9
Иногда частные функции - это просто еще не извлеченные внутренние единицы функциональности. Так почему бы не проверить их?

Иногда закрытые функции модуля или класса - это просто пока не извлекаемые внутренние единицы функциональности, которые могут заслуживать собственных тестов. Так почему бы не проверить их? Мы будем писать тесты для них позже , если / когда они извлечены. Так почему бы не написать тесты сейчас,...