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

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

2
Должен ли минимизированный CSS храниться в Git?
Я использую Gulp для создания минимизированного CSS из моего кода SASS для проекта, над которым я работаю. Я задавался вопросом, считается ли это наилучшей практикой для восстановления этого уменьшенного CSS при запуске из Git вживую ... или Хранить минимизированные CSS-файлы в Git, чтобы они автоматически запускались в производство без дальнейшей …

4
Является ли хорошей идеей иметь отдельные методы тестирования для каждого шага?
Я тестирую REST API. Допустим, он возвращает структуру JSON. Каков наилучший подход к тестированию сервера? Каждый шаг теста может быть успешным, только если все предыдущие были успешными. Структура A: проверить все сразу - Test method 1: - make server request - assert http response code was 200 - assert returned …

5
Использование разных шаблонов для похожих функций
Я единственный разработчик проекта, который, как и любой программный проект, может быть взят кем-то другим в будущем. Допустим, я использовал шаблон X для реализации функции A. После разработки и доработки функции я понимаю, что могу реализовать ту же функцию, используя шаблон Y, о котором я только что узнал. Но функция …

2
Почему проверенные и непроверенные исключения называются «противоречиями» в руководстве по Oracle Java?
Я новичок в Java и читал документацию по исключениям. и, в частности, « Непроверенные исключения» - страница «Противоречие» . Суть говорит: Если от клиента можно ожидать восстановления после исключения, сделайте его проверенным исключением. Если клиент не может ничего сделать для восстановления из исключения, сделайте его непроверенным исключением. Я не понимаю …

1
Частичное совпадение имен в миллионах записей
Мы разработали веб-приложение для сопоставления имен. Он работает, разбивая имена на части, а значение Soundex каждой части сохраняется в базе данных. Показатель расстояния Левенштейн используются для применения процентного соответствия звука, а также написания против данного имени. Во время выполнения мы загружаем все записи в память и применяем расстояние Левенштейна ко …

3
Когда крючки - правильный выбор дизайна?
Я работал над большим приложением Rails, где использование обратных вызовов ActiveRecord было безудержным и мучительным. Сохранение записи часто имело неожиданные побочные эффекты, и это было непросто. В то же время я видел хуки, используемые для достижения хорошего эффекта как часть наследования (например, родительский класс, использующий шаблонный метод, позволяющий подклассам добавлять …
10 hooks 

4
Когда в Java будет использоваться нулевое выражение?
В учебнике, который я просматривал, указано, что оператор может быть пустым (нулевой оператор). Пустое выражение определяется как точка с запятой. Это абсолютно ничего не делает во время выполнения. Пустое выражение используется редко. Как умеренно опытный программист, я нахожу интересным, что они говорят, что редко используются, это означает, что где-то есть …
10 java 

2
Разве плохо создавать классы, единственной целью которых является неявное преобразование в другой класс?
Представьте себе ситуацию, когда мы используем библиотеку, которая позволяет вам создавать Circleобъекты, где вы можете указать радиус и центр круга, чтобы определить его. Однако по какой-то причине он также принимает обязательный flavourпараметр. Теперь предположим, что мне действительно нужно использовать Circleв моем собственном приложении, но для целей моего приложения я могу …

2
Как Mono Project смог повторно лицензировать свои библиотеки LGPL под MIT?
В проекте Mono использовались библиотеки LGPL. На самом деле mbundleвсе еще говорит, когда вы запускаете его Обратите внимание, что статическое связывание среды выполнения LGPL Mono имеет больше лицензионных ограничений, чем динамическое связывание. См. Http://www.mono-project.com/Licensing для получения подробной информации о лицензировании. По состоянию на март 2016 года они повторно лицензировали их …

3
Что значит вводить данные (против поведения) в конструктор класса, и почему это считается плохой практикой?
Я читаю книгу «Изучение шрифтов» Ремо Янсена. В одном разделе автор описывает, как создать очень простую платформу MVC для проверки концепции, включая создание Modelкласса, и говорит следующее: Для модели необходимо указать URL-адрес веб-службы, которую она использует. Мы собираемся использовать декоратор класса с именем ModelSettings, чтобы установить URL-адрес службы, которая будет …

4
Java: Как реализовать пошаговый конструктор, для которого порядок установки не имеет значения?
Изменить: я хотел бы отметить, что этот вопрос описывает теоретическую проблему, и я знаю, что я могу использовать аргументы конструктора для обязательных параметров, или вызвать исключение времени выполнения, если API используется неправильно. Однако я ищу решение, которое не требует аргументов конструктора или проверки во время выполнения. Представьте, что у вас …

3
Есть ли взаимосвязь между временем встречи и экономией времени на разработку?
Я работаю над проектом, и у нас есть регулярные (обычно еженедельные) неформальные встречи, где мы обсуждаем состояние проекта и его графический интерфейс. Я там единственный разработчик, остальные 4-5 человек имеют не ИТ-образование. Эта встреча заняла гораздо больше времени, чем обычно, но однажды один из моих коллег спросил о некоторых полях …

3
Почему в инкрементных сборках «make» не используются алгоритмы хеширования?
Я начинающий, makeи мне интересно, когда использовать make clean. Один коллега сказал мне, что инкрементные сборки с makeиспользованием временных меток файлов. Таким образом, если вы извлекаете старую версию файла в вашей VCS, у нее будет «старая» временная метка, и она будет помечена как «нет необходимости перекомпилировать этот файл». Тогда этот …
10 builds  make 

1
Почему запросы на извлечение не могут быть серьезно реализованы в Mercurial?
Неделю назад я был в LFNW, и когда я разговаривал с Ларри Хастингсом после его выступления, он сказал (перефразировано): В Git есть что-то, что делает возможным рабочий процесс Pull Request, чего нет в Mercurial. Вот почему Pull-запросы на BitBucket невелики. (Для контекста мы обсуждали тот факт, что Python переходит от …

2
Существует ли элегантный способ проверки уникальных ограничений на атрибуты объекта домена без перемещения бизнес-логики на уровень обслуживания?
Я уже 8 лет адаптирую дизайн, ориентированный на предметную область, и даже после всех этих лет есть еще одна вещь, которая меня беспокоит. Это проверка уникальной записи в хранилище данных для объекта домена. В сентябре 2013 года Мартин Фаулер упомянул принцип TellDontAsk , который, по возможности, должен применяться ко всем …

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