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

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

11
Зачем собирать мусор, если есть умные указатели
В наши дни так много языков собирают мусор. Это даже доступно для C ++ третьими лицами. Но в C ++ есть RAII и умные указатели. Так какой смысл использовать сборщик мусора? Это делает что-то дополнительное? И в других языках, таких как C #, если все ссылки обрабатываются как интеллектуальные указатели …

9
Каковы некоторые шаблоны и анти-шаблоны ведения журнала приложений? [закрыто]
Недавно мне пришлось исследовать полевую проблему для нашего крупного корпоративного приложения. Я был в ужасе от журналов, которые мне приходилось прочесывать, пытаясь найти проблему, и в конце дня журналы не помогли вообще идентифицировать / изолировать ошибку. Примечание: я понимаю, что не все ошибки обнаруживаются через журналы. Это не меняет того …
67 logging 

7
Если функции должны выполнить нулевые проверки перед выполнением намеченного поведения, это плохой дизайн?
Так что я не знаю, хороший это или плохой дизайн кода, поэтому я подумал, что лучше спросить. Я часто создаю методы, которые выполняют обработку данных с использованием классов, и я часто проверяю методы, чтобы убедиться, что я не получаю нулевые ссылки или другие ошибки заранее. Для очень простого примера: // …
66 c#  design  validation 

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

7
Как вы переводите программу из разработки в релиз?
В какой-то момент программа находится в разработке. Функции добавляются, удаляются или изменяются все время. Каждая версия - не что иное, как прототип. Поэтому я не трачу много времени на написание суперчистого кода, потому что никогда не знаю, как долго это будет продолжаться. Конечно, я стараюсь поддерживать качество кода в соответствии …

8
Если мне нужно использовать часть памяти на протяжении всей жизни моей программы, действительно ли необходимо освободить ее прямо перед завершением программы?
Во многих книгах и учебных пособиях я слышал, как подчеркивается практика управления памятью, и чувствовал, что некоторые загадочные и ужасные вещи могут произойти, если я не освобожу память после того, как использую ее. Я не могу говорить о других системах (хотя для меня разумно предположить, что они применяют подобную практику), …

9
Должны ли репозитории возвращать IQueryable?
Я видел много проектов, у которых есть репозитории, которые возвращают экземпляры IQueryable. Это позволяет выполнять дополнительные фильтры и сортировку IQueryableпо другому коду, что переводится в другой генерируемый SQL. Мне любопытно, откуда взялся этот паттерн и хорошая ли это идея. Больше всего меня беспокоит то, что IQueryableобещание попасть в базу данных …

12
Нарушает ли конструктор, который проверяет свои аргументы, SRP?
Я стараюсь максимально придерживаться принципа единой ответственности (SRP) и привык к определенной схеме (для SRP по методам), в значительной степени полагаясь на делегатов. Я хотел бы знать, является ли этот подход обоснованным или есть ли какие-либо серьезные проблемы с ним. Например, чтобы проверить ввод в конструктор, я мог бы ввести …

13
Почему «нижним» уровням приложений лучше не знать о «более высоких» уровнях?
В типичном (хорошо спроектированном) веб-приложении MVC база данных не знает о коде модели, код модели не знает о коде контроллера, а код контроллера не знает о коде представления. (Я полагаю, что вы могли бы даже начать с аппаратного обеспечения или даже дальше, и схема могла бы быть такой же.) Идя …

13
У моего босса плохой случай «Не изобретено здесь» [закрыто]
Мой отдел специализируется на преобразовании данных клиентов в нашу схему базы данных, чтобы они могли использовать наше программное обеспечение. Прямо сейчас у нас есть приложения на C #, которые берут IDataReader(99% времени) a SqlDataReader, выполняют некоторую очистку и отображение, вставляют его в DataRowобъект, а затем используют a, SqlBulkCopyчтобы вставить его …

4
Является ли система типов Haskell формально эквивалентной системе Java? [закрыто]
Я понимаю, что некоторые вещи проще / сложнее в одном языке, чем в другом, но меня интересуют только функции, связанные с типами, которые возможны в одном и невозможны / неактуальны в другом. Чтобы сделать его более конкретным, давайте проигнорируем расширения типов на Haskell, поскольку их так много, которые делают разные …

15
Я собираюсь бросить свою работу из-за нашей платформы: как я могу оставить продуктивное объяснение этому? [закрыто]
Я планирую оставить свою текущую работу, потому что мы заблокированы в использовании Blub , с корпоративной средой Blub и веб-сервером уровня Blub, на посредственном виртуальном хостинге. Мои коллеги дружелюбны, а мой начальник - средний владелец малого бизнеса - я хочу полностью уйти по техническим причинам. Я чувствую, что погружение в …

11
Лучшие практики для передачи устаревшего кода
Через пару месяцев коллега перейдет к новому проекту, и я унаследую один из его проектов. Чтобы подготовиться, я уже приказал Майклу Фезерсу « Эффективно работать с устаревшим кодом» . Но эти книги, а также большинство вопросов по унаследованному коду, которые я нашел до сих пор, касаются случая наследования кода как …

12
Получение непрограммистов, чтобы понять процесс разработки
При запуске проекта для компании, которая не является в первую очередь программистской, одно из ожиданий состоит в том, что в конце есть готовый продукт, свободный от всех ошибок, и сразу же делает все необходимое. Тем не менее, это редко так. Как можно управлять ожиданиями и объяснять непрограммистам, чем разработка программного …

30
Каковы предупреждающие признаки надвигающейся гибели, на которую стоит обратить внимание в проекте? [закрыто]
Работа над неудачным проектом - одна из немногих общих черт программистов, независимо от используемого языка, отрасли или опыта. Эти проекты могут быть отличным опытом обучения, душераздирающими бедствиями (или обоими!) И могут происходить по множеству причин: смена руководства недостаточно квалифицированная команда появление превосходящего конкурента во время цикла разработки над / под …

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