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

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

6
Когда я должен использовать хранимые процедуры?
Если у меня есть вся моя бизнес-логика в коде и я использую Entity Framework, в каких ситуациях (если таковые имеются) мне лучше переместить некоторую бизнес-логику в хранимую процедуру, вместо того, чтобы хранить все это в коде? Чтобы было ясно, я имею в виду в сочетании с текущей настройкой (бизнес-логика в …

1
Почему (/ сделал) Бертран Мейер считает, что создание подклассов - единственный способ расширить «закрытый» модуль?
В Построении объектно-ориентированного программного обеспечения Мейера (1988) он определяет принцип открытия / закрытия следующим образом: Модуль будет считаться открытым, если он все еще доступен для расширения. Например, должна быть возможность добавить поля к структурам данных, которые он содержит, или новые элементы к набору функций, которые он выполняет. Модуль считается закрытым, …

3
Шаблоны для передачи контекста через цепочку методов
Это дизайнерское решение, которое, кажется, приходит довольно много: как передать контекст через метод, который ему не нужен, в метод, который это делает. Есть ли правильный ответ или это зависит от контекста. Пример кода, который требует решения // needs the dependency function baz(session) { session('baz'); } // doesn't care about the …

4
Как работает Chrome V8? И почему JavaScript не был JIT-компилированным?
Я изучал интерпретаторы / компиляторы, а потом наткнулся на JIT-компиляцию - в частности, на Google Chrome V8 Javascript Engine. Мои вопросы - Как это может быть быстрее, чем стандартная интерпретация? Почему JIT-Compilation не использовался в первую очередь? Мое текущее понимание Каждая программа Javascript начинается с исходного кода , а затем, …

6
Является ли регистрация рядом с реализацией нарушением SRP?
Размышляя о гибкой разработке программного обеспечения и всех принципах (SRP, OCP, ...), я спрашиваю себя, как относиться к ведению журнала. Является ли регистрация рядом с реализацией нарушением SRP? Я бы сказал, yesпотому что реализация должна быть в состоянии работать без регистрации. Итак, как я могу реализовать ведение журнала лучше? Я …

7
Проблема стиля кодирования: должны ли мы иметь функции, которые принимают параметр, модифицируют его, а затем возвращают этот параметр?
Я немного спорю с моим другом о том, являются ли эти две практики просто двумя сторонами одной медали, или же одна из них действительно лучше. У нас есть функция, которая принимает параметр, заполняет его член и затем возвращает его: Item predictPrice(Item item) Я считаю, что, поскольку он работает с тем …

1
Может кто-нибудь объяснить процесс V Model? Почему он отличается от модели Waterfall?
Кажется, модель V - это просто модель водопада, нижняя половина водопада изогнута вверх, образуя букву V. Я не понимаю, как она добавляет что-то новое. Из диаграмм я также не понимаю, поток. Есть стрелки, указывающие во всех направлениях, и я не могу понять, что на первом месте. Следуем ли мы по …

3
Как пройти по дереву без использования рекурсии?
У меня очень большое в памяти дерево узлов и мне нужно пройти по дереву. Передача возвращенных значений каждого дочернего узла их родительскому узлу. Это должно быть сделано до тех пор, пока все узлы не получат свои пузырьки данных до корневого узла. Обход работает так. private Data Execute(Node pNode) { Data[] …
19 c#  optimization  trees 

4
Сделать методы, которые не зависят от полей экземпляра, статическими?
Недавно я начал программировать в Groovy для инфраструктуры тестирования интеграции, для проекта Java. Я использую Intellij IDEA с плагином Groovy и с удивлением вижу в качестве предупреждения все методы, которые не являются статичными и не зависят от каких-либо полей экземпляра. В Java, однако, это не проблема (по крайней мере, с …

2
Лучший способ структурировать Git-репозиторий для Maven
Мне нужен совет о том, как структурировать наши проекты в Git. Мы используем Java, а Maven - наш инструмент для сборки. Maven своего рода предполагает, что все ваши проекты имеют общего предка. Maven также может быть настоящей королевой драмы, когда вещи не настроены точно так, как Apache Foundation настраивает свои …

4
Понимание стека кадра вызова функции в C / C ++?
Я пытаюсь понять, как строятся стековые фреймы и какие переменные (параметры) помещаются в стек в каком порядке? Некоторые результаты поиска показали, что компилятор C / C ++ принимает решение на основе операций, выполняемых внутри функции. Например, если функция должна была просто увеличить переданное значение int на 1 (аналогично оператору ++) …
19 c++  c  compiler  stack 

4
Зачем нам нужно ключевое слово async?
Я только начал играть с async / await в .Net 4.5. Изначально мне интересно узнать, почему необходимо ключевое слово async? Я прочитал объяснение, что это маркер, поэтому компилятор знает, что метод чего-то ждет. Но кажется, что компилятор должен быть в состоянии понять это без ключевого слова. Так что еще это …
19 c#  .net 

7
Должен ли я создавать интерфейсы для объектов передачи данных?
Это хорошая идея или плохая идея создать интерфейс для объектов передачи данных? Предполагая, что объект обычно изменчив. Хотя мой пример на Java, он должен быть применим к любому другому языку с похожими понятиями. interface DataTransferObject { String getName(); void setName(String name); } class RealDataTransferObject implements DataTransferObject { String name; String …

6
Лучшая практика для управления параллелизмом в корзину на сайте электронной коммерции
Какова наилучшая практика в случае, когда два клиента одновременно добавляют товар, запас которого составлял только 1? Нужно ли проверять код корзины, чтобы один из этих двух покупателей не добавил один и тот же товар? Или эта проверка должна выполняться на этапе оплаты, например, при выполнении второго запроса для подтверждения того, …

6
Мне действительно нужен модуль модульного тестирования?
В настоящее время на моей работе у нас есть большой набор модульных тестов для нашего приложения C ++. Однако мы не используем фреймворк для юнит-тестирования. Они просто используют макрос C, который в основном обертывает assert и cout. Что-то вроде: VERIFY(cond) if (!(cond)) {std::cout << "unit test failed at " << …

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