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

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

5
RESTful API. Должен ли я вернуть объект, который был создан / обновлен?
Я разрабатываю веб-сервис RESTful с использованием WebApi, и мне было интересно, какие HTTP-ответы и тела ответов нужно возвращать при обновлении / создании объектов. Например, я могу использовать метод POST для отправки некоторого JSON в веб-сервис, а затем создать объект. Рекомендуется ли затем установить для HTTP-статуса статус созданный (201) или ok …
36 rest  http 

3
Кэширование на бизнес-уровне против Кэширования на уровне данных
Я всегда работал над проектами, в которых кеширование выполнялось на DAL, в основном именно тогда, когда вы собираетесь выполнить вызов в базу данных, он проверяет, есть ли данные в кэше, и если он есть, он просто не выполняет вызов и вместо этого возвращает эти данные. Я только недавно прочитал о …

3
Разница между кучей и приоритетной очередью
Я всегда считал , что отвалы и приоритетные очереди были синонимами - абстрактная структура данных , которая поддерживает insert, findMinи deleteMinоперации. Некоторая литература, кажется, согласна со мной - например, чисто функциональные структуры данных Криса Окасаки (глава 3). С другой стороны, страница кучи Википедии определяет ее как древовидную структуру данных и …

4
Что такое злоупотребление дженериками?
Просматривая некоторый код, я заметил возможность изменить его, чтобы использовать дженерики. (Запутанный) код выглядит так: public void DoAllTheThings(Type typeOfTarget, object[] possibleTargets) { var someProperty = typeOfTarget.GetProperty(possibleTargets[0]); ... } Этот код можно заменить на дженерики, например, так: public void DoAllTheThings<T>(object[] possibleTargets[0]) { var someProperty = type(T).getProperty(possibleTargets[0]); ... } Исследуя преимущества и …
35 generics 

8
Будет ли иметь 4 состояния на «бит», а не 2, в два раза больше места?
Довольно простой фундаментальный, хотя и наивный вопрос: Будет ли иметь 4 состояния на «бит», а не 2, в два раза больше места? В случае, если это не ясно, я имею в виду, как если бы каждая «структура хранения», а не только представляющая 2 значения (база 2: 0, 1), могла бы …
35 data  storage 


2
Как Rust расходится с возможностями параллелизма в C ++?
Вопросов Я пытаюсь понять, улучшает ли Rust фундаментально и достаточно средства параллелизма в C ++, чтобы решить, стоит ли мне тратить время на изучение Rust. В частности, как идиоматический Rust улучшается или, во всяком случае, расходится с возможностями параллелизма идиоматического C ++? Является ли улучшение (или расхождение) в основном синтаксическим, …
35 c++  concurrency  rust  c++14 

8
Являются ли задания в условной части условными обозначениями плохой практикой?
Давайте предположим, что я хочу написать функцию, которая объединяет две строки в C. Я бы написал так: void concat(char s[], char t[]){ int i = 0; int j = 0; while (s[i] != '\0'){ i++; } while (t[j] != '\0'){ s[i] = t[j]; i++; j++; } s[i] = '\0'; } …

7
Аргументы против подавления ошибок
Я нашел такой код в одном из наших проектов: SomeClass QueryServer(string args) { try { return SomeClass.Parse(_server.Query(args)); } catch (Exception) { return null; } } Насколько я понимаю, подавление ошибок, подобных этой, является плохой практикой, поскольку она уничтожает полезную информацию из исключения исходного сервера и заставляет код продолжаться, когда он …

8
Когда мы на самом деле используем объектно-ориентированное программирование? [закрыто]
Я пишу программу на Python, которая в основном манипулирует строками, и мне было интересно, должен ли я делать это, используя принципы ООП или нет. Клиент сказал мне, что ему наплевать на код, он просто хочет, чтобы все было сделано . Я знаю, что объектно-ориентированный код по определению не является чище, …

5
Когда мне следует расширить класс Java Swing?
Мое текущее понимание реализации Наследования состоит в том, что следует расширять класс только при наличии отношения IS-A . Если родительский класс может дополнительно иметь более конкретные дочерние типы с различной функциональностью, но будет совместно использовать общие элементы, абстрагированные в родительском. Я подвергаю сомнению это понимание из-за того, что мой профессор …

9
Разумно ли писать модульные тесты, потому что они, как правило, комментируются позже или потому что интеграционные тесты более ценны?
Я обсуждал модульное / интеграционное тестирование с коллегой, и он выступил с интересным аргументом против написания модульных тестов. Я сторонник большого юнит-теста (прежде всего JUnit), но мне интересно услышать чужие высказывания, так как он высказал некоторые интересные моменты. Подводя итог его очки: Когда происходят значительные изменения кода (новый набор POJO, …

7
Являются ли частые осложненные конфликты слиянием признаком проблем?
В нашей команде мы используем Git в качестве источника контроля. У нас есть несколько областей кода, которые почти независимы, но имеют некоторое перекрытие. В последнее время мы обсуждали рабочие процессы и подходы к использованию системы контроля версий. Одна жалоба, которая возникает, когда я продвигаю использование рабочего процесса ветви функций, заключается …

2
MVCS - магазин контроллеров модельного представления
Недавно я решил начать изучать разработку под iOS, и с этой целью я читал Программирование на iOS: Руководство по ранчо для больших ботаников . В книге авторы описывают шаблон проектирования MVCS - Model-View-Controller-Store , основная идея которого заключается в том, что, поскольку во многих приложениях используется несколько внешних источников данных, …

2
Первый язык программирования банкоматов
Первые банкоматы выполняли такие задачи, как банкоматы, это были автономные автоматы, которые работали с перфокартами, пропитанными карбоном и 6-значным PIN-кодом. Максимальная сумма снятия с карты составляла 10 фунтов, и каждая была одноразовой картой - банкомат проглотил карты! Первый банкомат был установлен в Лондоне в 1967 году, когда я посмотрел на …

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