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

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

5
Что такое шаблон проектирования «Все исправить»?
В этой статье Стивена Фиггинса, написанной в 2003 году на linuxdevcenter.com , BitTorrent Брэма Коэна описывается как использование шаблона проектирования «Исправить все». Менее распространенный подход, который затрудняет понимание BitTorrent, но заслуживает изучения, - это использование иденпотентности Коэном. Процесс идемпотентен, если его применять более одного раза, и не вызывает дальнейших изменений. …

4
Почему многие разработчики программного обеспечения нарушают принцип открытого / закрытого?
Почему многие разработчики программного обеспечения нарушают принцип открытия / закрытия , изменяя многие вещи, такие как переименование функций, которые нарушают работу приложения после обновления? Этот вопрос приходит мне в голову после быстрой и непрерывной версий в библиотеке React . Каждый короткий период я ​​замечаю множество изменений в синтаксисе, именах компонентов …

7
Являются ли стеки единственным разумным способом структурирования программ?
Большинство архитектур, которые я видел, используют стек вызовов для сохранения / восстановления контекста перед вызовами функций. Это настолько распространенная парадигма, что операции push и pop встроены в большинство процессоров. Существуют ли системы, которые работают без стека? Если да, то как они работают и для чего они используются?

7
Как справиться со случайной сложностью в программных проектах
Когда Мюррея Гелл-Манна спросили, как Ричарду Фейнману удалось решить так много сложных проблем, Гелл-Манн ответил, что у Фейнмана есть алгоритм: Запишите проблему. Думай очень усердно. Запишите решение. Гелл-Манн пытался объяснить, что Фейнман был другим человеком, решающим проблемы, и не было никакого понимания, которое можно было бы получить при изучении его …

6
Является ли `catch (...) {throw; } плохая практика?
Хотя я согласен с тем, что отлов ... без повторной обработки действительно неверен, я, тем не менее, считаю, что использование таких конструкций: try { // Stuff } catch (...) { // Some cleanup throw; } Приемлемо в тех случаях, когда RAII не применяется . (Пожалуйста, не спрашивайте ... не всем …
74 c++ 

11
Почему мы должны использовать break в switch?
Кто решил (и на основе каких понятий), что switchконструкция (на многих языках) должна использоваться breakв каждом утверждении? Почему мы должны написать что-то вроде этого: switch(a) { case 1: result = 'one'; break; case 2: result = 'two'; break; default: result = 'not determined'; break; } (заметил это в PHP и …
74 conditions 

14
Хранятся ли в оперативной памяти объявления типов данных, такие как «int» и «char», когда выполняется программа на C?
Когда выполняется программа на C, данные сохраняются в куче или стеке. Значения хранятся в адресах RAM. Но как насчет индикаторов типа (например, intили char)? Они тоже хранятся? Рассмотрим следующий код: char a = 'A'; int x = 4; Я прочитал, что A и 4 хранятся в адресах RAM здесь. Но …
74 c  data 

15
Как разработчик должен отказаться от невозможных требований? [закрыто]
Вот проблема, с которой я сталкиваюсь: Цитата от руководителя проекта: Привет, Спарк, я поручаю тебе задачу разработки фреймворка, который можно было бы использовать для разных приложений iOS. Вот требования: Он должен быть в состоянии определить толщину большого пальца или пальцев, используемых для управления пользовательским интерфейсом. С этой информацией все элементы …

7
Почему я должен использовать шаблон MVC?
Кажется, что сегодня все, кто занимается веб-приложениями, хотят использовать MVC для всего. Однако мне трудно убедить себя в использовании этого паттерна. Я понимаю, что основная идея состоит в том, чтобы отделить логику бэкэнда от внешнего интерфейса, представляющего программу. Как правило, кажется, что представления всегда в некоторой степени зависят от контроллера, …

10
С какими стрессами сталкиваются программисты на работе и как вы с ними справляетесь? [закрыто]
Умение справляться со стрессом жизненно важно для поддержания здоровья во время работы на любой работе. Необходимая подзадача - научиться распознавать и ограничивать источники стресса. Но в разгар ежедневной рутины может быть трудно распознать источники стресса (особенно для интенсивной, сосредоточенной личности, такой как программист). На какие типы стрессоров должны обращать внимание …

10
Сколько строк в классе слишком много в Java? [закрыто]
По вашему опыту, какое полезное практическое правило для того, сколько строк кода слишком много для одного класса в Java? Чтобы было ясно, я знаю, что количество строк даже близко не соответствует реальному стандарту, который следует использовать для того, что должно быть в определенном классе, а что нет. Классы должны разрабатываться …

14
В какой момент вы «знаете» технологию, достаточную, чтобы включить ее в резюме [закрыто]
Недавно у меня был программист для интервью, который перечислил Python, PHP, Rails и ASP как некоторые из своих навыков. Однако в интервью они не знали, что такое управляющие структуры и базовая логика, они только следовали нескольким демонстрационным урокам. Поэтому мой вопрос заключается в следующем: в какой момент вы можете точно …
74 skills 

18
На простом английском языке, что такое рекурсия?
Идея рекурсии не очень распространена в реальном мире. Таким образом, это кажется немного запутанным для начинающих программистов. Хотя, думаю, они постепенно привыкают к этой концепции. Итак, что может быть хорошим объяснением для них, чтобы легко понять идею?
74 recursion 

22
Прыжки по работе, это проблема? [закрыто]
Как бы вы, как человек, вовлеченный в процесс найма (менеджер, интервьюер и т. Д.), Относились бы к кандидату, который менял работу каждые 1-2 года? Обновление Спасибо всем за вклад, некоторые действительно отличные отзывы и хорошую информацию в каждом посте. Я спросил об этом, потому что в настоящее время я работаю …

9
Работа с невоспроизводимыми ошибками
Предположим, ваша команда пишет программную систему, которая (что удивительно!) Работает нормально. Однажды один из инженеров по ошибке запускает некоторые SQL-запросы, которые изменяют некоторые данные БД, а затем забывает об этом. Через некоторое время вы обнаруживаете испорченные / ошибочные данные, и все ломают голову над тем, какая часть кода вызывала это …

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