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

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

1
Модульное тестирование трубопроводов для сбора данных, состоящих из однопоточных функций
Читая практическое введение Мэри Роуз Кук в функциональное программирование , она приводит пример анти-паттерна. def format_bands(bands): for band in bands: band['country'] = 'Canada' band['name'] = band['name'].replace('.', '') band['name'] = band['name'].title() поскольку функция делает больше чем одно имя не является описательным у него есть побочные эффекты В качестве предложенного решения она …

4
Должен ли REST API преобразовывать дату и время в соответствующий часовой пояс клиента?
При реализации нашего API возникла проблема даты и времени. Все даты нормализованы к UTC в базе данных. В настоящее время в приложении без API все даты и время конвертируются на основе предпочтений пользователей, прежде чем они представлены. Теперь тот же вопрос возник для API: должен ли API возвращать дату и …
10 rest  api  time 

3
Приоритет функции в алгоритме Шунтирования
Я работаю с помощью алгоритма Shunting-yard , как описано в Википедии. Описание алгоритма при работе с операторами выглядит следующим образом: Если токен является оператором o1, то: в то время как есть токен оператора, o2, на вершине стека операторов, и либо o1 is left-associative and its precedence is less than or …

4
Является ли гарантия неизменности оправданием для выставления поля вместо свойства?
Общее руководство по C # - всегда использовать свойство над открытым полем. Это имеет смысл - выставляя поле, вы раскрываете много деталей реализации. Со свойством вы инкапсулируете эту деталь, чтобы она была скрыта от потребления кода, а изменения реализации отделены от изменений интерфейса. Однако мне интересно, есть ли иногда допустимое …

3
Абстрактное свойство в базовом классе, чтобы заставить программиста определить его
Я кодирую с шаблоном состояния для встроенного устройства. У меня есть базовый / абстрактный класс, называемый State, и затем каждый дискретный (конкретный) класс состояний реализует абстрактный State State. В государственном классе у меня есть несколько абстрактных методов. Если я не реализую абстрактные методы в дискретном (конкретном) классе, Visual Studio выдаст …

2
Идентификатор против объекта домена в качестве параметра метода
Есть ли объективные аргументы за или против использования объектов против уникального идентификатора в качестве параметров метода / функции? (а члены других объектов?). Особенно в контексте статически типизированных языков (C # / Java / Scala) Плюсы самого объекта: Более безопасные звонки. С идентификаторами существует риск неправильного упорядочения аргументов. Этого можно избежать, …

3
Как отобразить / уточнить лицензию на код в блоге
Допустим, у меня есть блог, доступный под одной из лицензий Creative Commons . Такой тип лицензии будет отображаться внизу каждой страницы со ссылкой на фактическую лицензию и т. Д. Тем не менее, очевидно, что лицензии Creative Commons не очень подходят ни для программного обеспечения, ни для распространения исходного кода , …

1
Будет ли SQLite менее полезен, не принимая вставки нечисловых значений в числовые столбцы?
В SQLite следующий оператор будет успешным, и строка будет вставлена ​​/ обновлена ​​в SALARYстолбце, который имеет тип INTEGER: update employee set salary='TOO MUCH' where emp_id=1; Обратите внимание, что ноль не будет вставлен / обновлен, но будет содержать фактическую строку «СЛИШКОМ МНОГО» , так что речь идет не об автоматическом преобразовании …
10 design  sqlite 

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

2
DDD - Совокупный корень с большим количеством детей
Я предрежу этот вопрос, сказав, что я относительно новичок в DDD, поэтому я могу сделать здесь несколько фундаментальных ошибок! Я работаю над проектом, который включает в себя концепции счетов и транзакций (в финансовом смысле). Счет может иметь много транзакций против него. Мне кажется, что Учетная запись и Транзакция являются обеими …

2
Правильный способ удалить элемент из связанного списка
В этом интервью Slashdot Линус Торвальдс цитирует слова: Я видел слишком много людей, которые удаляли односвязную запись списка, отслеживая запись «prev», а затем удаляли запись, делая что-то вроде if (prev) prev-> next = entry-> next; иначе list_head = entry-> next; и всякий раз, когда я вижу такой код, я просто …
10 pointers 

2
Могу ли я обновить прикрепленный объект, используя отдельный, но равный объект?
Я получаю данные фильма из внешнего API. На первом этапе я буду чистить каждый фильм и вставлять его в свою базу данных. На втором этапе я буду периодически обновлять свою базу данных, используя API «Изменения» API, который я могу запросить, чтобы увидеть, какие фильмы изменили свою информацию. Мой слой ORM …

2
Как мне выполнить модульное тестирование эвристического алгоритма?
Скажем, у нас есть наш алгоритм поиска маршрута: def myHeuristicTSP(graph): /*implementation*/ return route Теперь мы хотим проверить это: class TestMyHeuristicTSP: def testNullGraphRaiseValueError(self): self.assertRaises(ValueError, myHueristicTSP(None)) def testSimpleTwoNodeGraphReturnsRoute: self.assertEquals(expectedResult, myHeuristicTSP(input)) Вопрос в том, что для неэвристического алгоритма TSP мы можем дать множество графиков и проверить, что они всегда возвращают абсолютно кратчайший маршрут. …

2
Нет ли проблемы с куриным яйцом, поскольку GCC написан на самом C ++?
Начиная с версии 4.8, компилятор C ++ GCC (часть G ++) написан уже не на C, а на самом C ++. У меня есть гипотетический вопрос по этому вопросу. Интересно, как скомпилировать код C ++ GCC на новой платформе, у которой еще нет компилятора C ++. Конечно, вы можете использовать …
10 c++  compiler  gcc 

2
Должен ли отправитель события всегда быть универсальным объектом?
При программировании событий на C # рекомендуется создать делегат в форме: delegate XEventHandler(object sender, XEventArgs e); У меня вопрос по первому аргументу делегата object sender. Это всегда должно быть универсальным object? Наличие отправителя типа objectвсегда приводит к коду, подобному этому. val = ((ConcreteType)sender).Property; или, еще более многословный, ConcreteType obj = …
10 c#  event 

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