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

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

8
Лицензия на программное обеспечение, которая дискриминирует на «этических» основаниях
Я потратил некоторое время на чтение общих лицензий на программное обеспечение с авторским левом и разрешением. Существует ли лицензия, позволяющая создателю приложения или алгоритма широко указывать, кто может использовать / распространять продукт на основе своих личных предубеждений? Я понимаю, что люди используют двойные лицензии, чтобы вынудить коммерческие организации платить за …

9
Это хорошая практика для запуска модульных тестов в хуках контроля версий?
С технической точки зрения возможно добавить несколько до / после push-хуков, которые будут запускать модульные тесты, прежде чем разрешить объединение некоторого конкретного коммита с удаленной веткой по умолчанию. Мой вопрос - лучше ли держать модульные тесты в конвейере сборки (таким образом, вводить битые коммиты в репо) или лучше просто не …

7
Полная неизменность и объектно-ориентированное программирование
В большинстве языков ООП объекты обычно изменяемы с ограниченным набором исключений (например, кортежи и строки в Python). В большинстве функциональных языков данные неизменны. Как изменяемые, так и неизменяемые объекты имеют целый ряд собственных преимуществ и недостатков. Существуют языки, которые пытаются объединить обе концепции, например, scala, где у вас есть (явно …

4
обзор кода с помощью git-flow и github
С обычными git и github я могу сделать обзор кода, просто создав запрос на извлечение из ветви функций, над которой я работаю, в главную ветку. Как бы я делал обзоры кода с помощью git-flow? С таким рабочим процессом, как «Завершение функции git flow», я не понимаю, где на самом деле …

3
Принципы программирования SOLID
Со временем я смог понять две части SOLID - «S» и «O». «O» - я выучил принцип Open Closed с помощью модели наследования и стратегии. «S» - я изучил принцип единой ответственности при изучении ORM (логика персистентности отбирается у объектов домена). Аналогичным образом, какие области / задачи лучше всего изучать …

16
Дата как номер версии программного обеспечения
Разработчики программного обеспечения обычно не используют дату в качестве номера версии, хотя формат ГГГГММДД (или его отклонения) выглядит достаточно надежным для использования. Что-то не так с этой схемой? Или это применимо только к ограниченным «типам» программного обеспечения (например, для собственного производства)?
43 versioning 

11
Каковы лучшие практики в отношении неподписанных целых?
Я использую целые числа без знака везде, и я не уверен, должен ли я. Это может быть от столбцов идентификаторов первичного ключа базы данных до счетчиков и т. Д. Если число никогда не должно быть отрицательным, тогда я всегда буду использовать беззнаковое целое. Однако я замечаю из кода другого, что …

6
Самый читаемый способ форматирования длинных условий? [закрыто]
ifСледует избегать длительных условий обмотки, если это вообще возможно, но иногда мы все заканчиваем тем, что пишем их. Даже если это очень простое условие, включенные операторы иногда просто очень многословны, поэтому все условие оказывается очень длинным. Какой самый удобный способ их форматирования? if (FoobarBaz::quxQuux(corge, grault) || !garply(waldo) || fred(plugh) !== …


7
Как вы справляетесь с интеграцией кода из нескольких веток / разработчиков каждого спринта?
Только что получил ретро-вызов, где разработчики выразили озабоченность по поводу интеграции своих историй в основную ветку каждого спринта. Все разработчики кода внутри своей ветви и к концу спринта все они объединяются в одну главную ветку. Затем одному разработчику (обычно одному и тому же) остается задача убедиться, что все хорошо интегрировано …

9
Является ли «избегать проблемы йо-йо» веской причиной, позволяющей «примитивную одержимость»?
Согласно « Когда примитивная одержимость не является запахом кода»? Я должен создать объект ZipCode для представления почтового индекса вместо объекта String. Однако, по моему опыту, я предпочитаю видеть public class Address{ public String zipCode; } вместо того public class Address{ public ZipCode zipCode; } потому что я думаю, что последний …

10
Приемлемо ли полагаться на уникальность случайных целых?
Я внедряю сетевой протокол, и мне требуется, чтобы пакеты имели уникальные идентификаторы. До сих пор я только что генерировал случайные 32-разрядные целые числа и предполагал, что астрономически маловероятно, что в течение срока службы программы / соединения произойдет столкновение. Это вообще считается приемлемой практикой в ​​рабочем коде, или следует разработать более …

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

5
Как избежать типичных «динамических языковых ошибок»?
Недавно я добавил пару часов в JavaScript, потому что хотел извлечь выгоду из огромной пользовательской базы. При этом я заметил шаблон, который большинство людей приписывают динамическим языкам. Вы работаете очень быстро, но как только ваш код достигает определенного размера, вы тратите много времени на ошибки типа, орфографии и рефакторинга в …

8
Должен ли я выбросить исключение в случае значимого значения вне диапазона или обработать его самостоятельно?
Я написал структуру, которая представляет координаты широты / долготы. Их значения варьируются от -180 до 180 для долгот и от 90 до -90 для широт. Если пользователь этой структуры дает мне значение вне этого диапазона, у меня есть 2 варианта: Бросить исключение (arg вне диапазона) Преобразовать значение в ограничение Поскольку …

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