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

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

5
Заставить ВСЕХ разработчиков делать обзоры кода
Я разработчик программного обеспечения в команде разработчиков 7-8. Мы уже давно занимаемся обзорами кода, и качество кода со временем улучшилось. Однако недавно я заметил, что некоторых разработчиков просят больше обзоров кода, чем других. Боюсь, это из-за их гибкого отношения. На мой взгляд, это не то, как должны проводиться проверки кода: …

2
Если я опоздаю, чтобы передать лицензию на репозиторий, все ли предыдущие коммиты не связаны с лицензией?
Предположим, у меня есть частный проект со 100 коммитами. Я не добавляю лицензию на программное обеспечение до 101-го коммита. Если я сделаю проект открытым исходным кодом, означает ли это, что все первые 100 коммитов не связаны лицензией на программное обеспечение в 101-м коммите? Должен ли проект быть перебазирован при добавлении …

3
Использование статической проверки типов для защиты от бизнес-ошибок
Я большой поклонник статической проверки типов. Это мешает вам делать глупые ошибки, подобные этой: // java code Adult a = new Adult(); a.setAge("Roger"); //static type checker would complain a.setName(42); //and here too Но это не мешает вам делать глупые ошибки, подобные этой: Adult a = new Adult(); // obviously you've …

4
Как вы можете TDD для ошибки, которая может быть проверена только после того, как она была исправлена?
Вот один пример: мое веб-приложение содержит перетаскиваемые элементы. При перетаскивании элемента браузер создает «призрачное изображение». Я хочу удалить «призрачное изображение» при перетаскивании, и я пишу тест для этого поведения. Моя проблема в том, что я изначально не представляю, как исправить эту ошибку, и единственный способ написать тест - это исправить …

2
Стек, расширяющий LinkedList. Нарушение принципа подстановки Лискова?
Существует класс LinkedList с такими функциями, как add_first (), add_last (), add_after (), remove_first (), remove_last () и remove () Теперь есть класс Stack, который предоставляет такие функции, как push (), pop (), peek () или top (), и для реализации этих методов он расширяет методы класса LinkedList. Это нарушение …

5
Модульное тестирование пустого метода
Чтобы исправить ошибку в приложении, я изменил метод с именем postLogin, добавив вызов к существующему методу с именем getShoppingCart. Код protected void postLogin() { getShoppingCart(); } Однако я не уверен, для чего лучше всего написать модульный тест postLogin. Подход 1 Используйте команду verify from Mockito, чтобы просто убедиться, что метод …

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

3
Как сделать автоматизированные тесты популярными? [закрыто]
Закрыто . Этот вопрос основан на мнении . В настоящее время он не принимает ответы. Хотите улучшить этот вопрос? Обновите вопрос, чтобы ответить на него фактами и цитатами, отредактировав этот пост . Закрыто 2 года назад . Наша кодовая база растет уже 20 лет. У нас около 10 разработчиков + …

3
Как управлять константами в разных языках?
У меня есть ситуация, когда я поддерживаю то, что функционально является одной библиотекой на нескольких языках. Часто между ними есть общие константы (например, ключи имен полей json или коды ошибок). В настоящее время я делаю это с помощью кода, определяющего константы в каждом языке. Проблема заключается в обслуживании. Если я …
13 design  packages 

7
Как избежать переписывания частей приложения
Я работаю в компании над проектом для их отдела продаж. Это моя первая профессиональная работа по программированию, но я сам программировал и учился годами. Часть проекта включает в себя сбор некоторых данных и их объединение с вводом для производства и построения графика. Затем сохраните данные ... и так далее, и …

4
О моей базе данных Дата Тип данных крестовый поход: Действительный? Стоящий? Кто-нибудь еще чувствует это?
Я трачу много времени, отвечая на вопросы SQL на SO. Я часто сталкиваюсь с вопросами такого рода: SELECT * FROM person WHERE birthdate BETWEEN '01/01/2017' AND '01/03/2017' SELECT * FROM person WHERE birthdate BETWEEN '2017-01-01' AND '2017-03-01' SELECT * FROM person WHERE birthdate BETWEEN 'some string' AND 'other string' то …

2
Как называется эта техника программирования?
Я столкнулся с этой техникой программирования, когда занимался парным программированием в интервью, и не смог найти ее название в Google. Идея состоит в том, что вы сначала пишете выражение, которое использует переменные, а затем пишете код, который вычисляет переменные позже. Чтобы использовать пример кода здесь: private bool ValidPolicyNumber(string policyNumber) { …

1
Использование метода Java по умолчанию
В течение многих десятилетий это было так , что интерфейсы были только только (только) для определения сигнатуры методы. Нам сказали, что это был «правильный способ делать вещи». Затем вышла Java 8 и сказала: Ну, теперь вы можете определить методы по умолчанию. Должен бежать, пока. Мне любопытно, как это усваивается как …

8
«Предпочитаю композицию наследованию» - единственная причина защищаться от изменений подписи?
Эта страница поддерживает композицию перед наследованием со следующим аргументом (перефразировав его в моих словах): Изменение в сигнатуре метода суперкласса (который не был переопределен в подклассе) во многих случаях вызывает дополнительные изменения, когда мы используем наследование. Однако, когда мы используем Композицию, необходимые дополнительные изменения происходят только в одном месте: подклассе. Неужели …

6
Чистый ООП способ отображения объекта на его презентатора
Я создаю настольную игру (например, шахматы) на Java, где каждая фигура имеет свой собственный тип (например Pawn, Rookи т. Д.). Для графической части приложения мне нужно изображение для каждой из этих частей. Поскольку делать думает, как rook.image(); нарушает разделение пользовательского интерфейса и бизнес-логики, я создаю отдельного презентатора для каждого фрагмента, …

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