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

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

10
Кто должен обучать новых программистов? Младшие или старшие программисты? [закрыто]
Закрыто. Этот вопрос не по теме . В настоящее время он не принимает ответы. Хотите улучшить этот вопрос? Обновите вопрос, чтобы он соответствовал теме разработки программного обеспечения стека Exchange. Закрыто 4 года назад . В моей команде нам часто требуется, чтобы самые старшие программисты обучали / обучали совершенно новых младших …

2
(Дис-) преимущества структурной типизации
Я только что посмотрел этот доклад Даниэля Спевака, в котором он рассказывает о преимуществах структурной типизации по сравнению с номинальной типизацией Scala и Java . Одним из примеров этого различия будет следующий код Java public interface Foo { public int length(); } public interface Bar { public int length(); } …

2
Много маленьких скриптов, один репозиторий или несколько?
Сотрудник и я столкнулись с проблемой, по которой у нас много мнений. В настоящее время у нас есть git-репозиторий, в котором мы храним все наши cronjobs. Их около 20, и они на самом деле не связаны, за исключением того факта, что они являются небольшими скриптами на python и необходимы для …


8
Почему мы не используем динамический (на стороне сервера) CSS?
Сгенерированный HTML на стороне сервера тривиален (и это был единственный способ создать динамические веб-страницы до AJAX), CSS на стороне сервера - нет. На самом деле, я никогда не видел это. Существуют CSS-компиляторы, но они генерируют CSS-файлы, которые можно использовать как статические. Технически, он не требует специальных библиотек, тег стиля HTML …

5
Простой способ улучшить качество релиза в среде RAD
Здесь немного предыстории - мы небольшая команда (из 5) разработчиков RAD, отвечающая за внутреннюю разработку программного обеспечения в большой компании, не занимающейся разработкой программного обеспечения. «Внутреннее программное обеспечение» варьируется от настольного .NET-приложения, использующего сервер MSSQL в качестве бэкэнда, до сценариев Python, работающих в фоновом режиме, до документов и шаблонов MS …

1
Groovy следует принципу соответствия Теннента?
Вот интересное обсуждение принципа соответствия Теннента и краткое описание Нила Гафтера : Принцип гласит, что выражение или утверждение, когда оно заключено в замыкание и затем сразу вызвано, должно иметь то же значение, что и до того, как оно будет заключено в замыкание. Любое изменение семантики при переносе кода в замыкание, …

5
Как я могу разработать контрольные примеры для покрытия кода на основе случайных событий?
Например, если код генерирует случайное значение int от 0 до 10 и принимает разные ветвления для каждого результата, как можно разработать набор тестов, чтобы гарантировать 100-процентное покрытие операторов в таком коде? В Java код может выглядеть примерно так: int i = new Random().nextInt(10); switch(i) { //11 case statements }

2
Делают ли накладные расходы метода target-c нецелесообразным подход к проектированию «множества маленьких методов»?
Я вообще предпочитаю использовать небольшие методы, как это рекомендовал Боб Мартин из Чистого кода . Я также прочитал достаточно о внутренностях Objective C, чтобы иметь хоть какое-то представление о том, как работает его отправка сообщений ( серия bbums особенно информативна в этом). Несмотря на преждевременную оптимизацию, я хотел бы знать, …

5
Когда вы должны и не должны использовать ключевое слово «новый»?
Я смотрел презентацию Google Tech Talk по модульному тестированию , которую проводил Миско Хевери, и он сказал, что следует избегать использования newключевого слова в коде бизнес-логики. Я написал программу, и в итоге я использовал newключевое слово здесь и там, но они были в основном для создания экземпляров объектов, которые содержат …

2
Будут ли B-деревья и другие структуры данных устаревать с появлением твердотельных накопителей?
Многие (возможно, большинство?) Приложения баз данных сегодня используют B-деревья и варианты для хранения данных, потому что эта структура данных оптимизирует операции чтения, записи и поиска на жестком диске (и эти операции, в свою очередь, играют важную роль в общей эффективности базы данных). Должны ли твердотельные накопители (SSD) полностью вытеснять традиционные …

16
Как потратить меньше времени на отладку? [закрыто]
Закрыто . Этот вопрос должен быть более сфокусированным . В настоящее время он не принимает ответы. Хотите улучшить этот вопрос? Обновите вопрос, чтобы он был сосредоточен только на одной проблеме, отредактировав этот пост . Закрыто 5 лет назад . Следуя правилу Парето, программист тратит только 20% своего времени на действительно …

6
Как вы справляетесь с постоянно растущими кучами проблем, которые необходимо решить «когда-нибудь»?
Мы используем JIRA для отслеживания проблем в наших программных проектах. Один эффект, который мы заметили, заключается в том, что мы часто создаем новую проблему, но пока не знаем, когда / если проблема будет решена вообще. Таким образом, мы придумали фиктивную веху «Далекое будущее», к которой относятся такие проблемы. Как это …

2
Если атрибуция осуществляется через псевдоним, кому принадлежат права на код? [закрыто]
Закрыто. Этот вопрос не по теме . В настоящее время он не принимает ответы. Хотите улучшить этот вопрос? Обновите вопрос, чтобы он соответствовал теме разработки программного обеспечения стека Exchange. Закрыто 4 года назад . Мне известно о нескольких случаях, когда кодеры использовали псевдоним для указания авторства вместо своих настоящих имен. …

5
Как сделать TDD для чего-то со многими перестановками?
При создании системы, подобной ИИ, которая может очень быстро идти по множеству различных путей, или по сути любому алгоритму, имеющему несколько разных входных данных, возможный набор результатов может содержать большое количество перестановок. Какой подход следует использовать, чтобы использовать TDD при создании системы, которая выдает много-много разных комбинаций результатов?

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