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

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

8
Какой алгоритм требует набора?
На моих первых курсах программирования мне сказали, что я должен использовать набор всякий раз, когда мне нужно что-то сделать, например удалить дубликаты чего-либо. Например: чтобы удалить все дубликаты из вектора, выполните итерацию по указанному вектору и добавьте каждый элемент в набор, после чего у вас останутся уникальные вхождения. Однако я …

3
Куда девать бизнес-логику при использовании Firebase?
Я собираюсь начать разработку одностраничного веб-приложения, которое очень упростит многопользовательскую систему документации. Внешний интерфейс, вероятно, будет использовать Angular2. У проекта короткий срок, поэтому я искал «горячие клавиши», т.е. использовал различные готовые сервисы вместо того, чтобы реализовывать все с нуля. Мне понадобится какой-то бэкэнд для хранения данных приложения. Я осмотрелся и …

2
Как создать новый агрегатный корень в CQRS?
Как мы должны создавать новые агрегатные корни в архитектуре cqrs? В этом примере я хочу создать новый совокупный корневой AR2, который содержит ссылку на первый AR1. Я создаю AR2, используя метод AR1 в качестве отправной точки. Пока что вижу несколько вариантов: Внутри метода в AR1 createAr2RootOpt1я мог бы new AR2()немедленно …

1
Есть ли ситуация, когда было бы лучше использовать слабые ссылки вместо простой композиции?
Хотя в документах Java указано, что слабые ссылки предназначены главным образом для канонизации отображений, вы обнаружите, что многие , многие , многие люди в Интернете заявляют, что WeakHashMap идеально подходит для хранения метаданных объекта в течение его срока службы. Тем не менее, никто не мешает сделать понятный и соответствующий пример. …

1
Кто может просмотреть мой код, если я единственный, кто знает технологию?
В настоящее время я работаю над внедрением React в компании, в которой я работаю. Как единственный, кто прошел курсы по этой теме, кого я могу попросить о проверке, чтобы убедиться, что код соответствует «передовым методам» и правильно реализован?

2
Что именно происходит, когда поток ожидает задачу внутри цикла while?
Поработав некоторое время с асинхронным / ожидающим паттерном в C #, я внезапно осознал, что не знаю, как объяснить, что происходит в следующем коде: async void MyThread() { while (!_quit) { await GetWorkAsync(); } } GetWorkAsync()предполагается, что он возвращает ожидаемое, Taskчто может вызвать или не вызвать переключение потока при выполнении …
10 c#  loops  async 

2
Предел стека
Недавно я протестировал ограничение стека на трех устройствах с разными ОС (под лимитом я подразумеваю максимальное количество уровней, которое может иметь стек), и я заметил, что каждый раз, когда я достигаю 2 ^ 16 уровней, это дает мне ошибка переполнения, и когда я ставлю 2 ^ 16-1, он работает правильно. …
10 stack 

3
Источник событий, одно событие, состояние двух агрегатов изменилось
Я пытаюсь изучить способы DDD и смежных предметов. Мне пришла в голову идея простого ограниченного контекста для реализации «банка»: есть счета, деньги можно вкладывать, снимать и переводить между ними. Также важно вести историю изменений. Я идентифицировал сущность Аккаунта, и было бы полезно отслеживать события в нем. Другие сущности или объекты-значения …

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

3
TDD как подход к алгоритмическим задачам
Я потерпел неудачу в алгоритмическом тесте с Codility, потому что пытался найти лучшее решение, и в итоге у меня ничего не было. Так что это заставило меня задуматься, могу ли я использовать подход, аналогичный TDD? Т.е. могу ли я, как правило, постепенно разрабатывать решение подобным образом? Если бы я писал …

1
Структура базы данных для игры 2 на 2
Я регулярно играю в игру 2 на 2 с 12 друзьями и хочу, чтобы база данных отслеживала игроков, команды, результаты и игры с целью создания системы рейтинга. Поскольку мы регулярно меняем команды, я придумал таблицы players, teamsи gamesв играх было две команды (team1 и team2), а команды состоят из двух …

7
Должны ли сервисы напрямую взаимодействовать друг с другом в микросервисной архитектуре?
У меня есть несколько веб-сервисов, которые формируют веб-приложение. Клиенты могут получить доступ к этим услугам через вызовы API REST. Должны ли эти службы общаться напрямую друг с другом? Если это так, разве это не объединит их, что противоречит концепции микросервисов? Должен ли клиент вызывать их напрямую один за другим, чтобы …

2
Почему директива «using» и инструкция «using» используют одно и то же ключевое слово в C #?
usingДиректива дает нам доступ к типам , не используя их полностью квалифицированные имена: using MyNamespace.Foo.Bar; usingЗаявление действует как синтаксический сахар для try/ finallyблоков , которые обеспечивают объекты утилизируются должным образом: using(var x = new MyDisposableClass()) { ... } Эти две ситуации, похоже, не имеют ничего общего друг с другом. Почему …
10 c#  statement 

2
Используется ли структура стека для асинхронных процессов?
На этот вопрос Эрик Липперт дает отличный ответ, описывая, для чего используется стек. В течение года я знал - вообще говоря - что такое стек и как он используется, но некоторые его ответы заставляют меня задуматься, не используется ли эта структура стека сегодня, где асинхронное программирование является нормой. Из его …
10 stack 

2
Избегайте геттеров и сеттеров, отображающих информацию о пользователях
Фон Я читаю «Чистую книгу кодов», и, в частности, я работаю над художественными объектами Kata, как банковский счет, и я застрял на этом правиле: Девятое правило художественных объектов - мы не используем геттеры или сеттеры. Это кажется довольно забавным, и я согласен с этим принципом. Более того, на странице 98-99 …

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