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

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

3
Реализация шаблона посетителя для абстрактного синтаксического дерева
Я нахожусь в процессе создания своего собственного языка программирования, который я делаю для целей обучения. Я уже написал лексер и парсер рекурсивного спуска для подмножества моего языка (в настоящее время я поддерживаю математические выражения, такие как + - * /и круглые скобки). Парсер возвращает мне абстрактное синтаксическое дерево, в котором …

4
Почему разработка, управляемая тестами, отсутствует в тесте Джоэла?
Я читал этот блог Джоэла Спольски о 12 шагах по улучшению кода . Отсутствие Test Driven Development действительно удивило меня. Поэтому я хочу передать вопрос Гуру. Разве TDD не стоит усилий?

2
Будет ли C # сливаться с собственным компилятором C ++? [закрыто]
В настоящее время этот вопрос не очень подходит для нашего формата вопросов и ответов. Мы ожидаем, что ответы будут подтверждены фактами, ссылками или опытом, но этот вопрос, скорее всего, вызовет дебаты, споры, опрос или расширенное обсуждение. Если вы считаете, что этот вопрос можно улучшить и, возможно, вновь открыть, обратитесь за …
23 c#  c++ 

3
Должен ли я использовать Debug.Assert сегодня?
Недавно я натолкнулся на какой-то недавно написанный код, в который было добавлено множество Debug.Assert (C #). Должны ли мы все еще использовать это широко, несмотря на использование TDD, BDD и модульного тестирования в целом?

2
Является ли хорошей идеей предоставлять разные сигнатуры функций, которые делают одно и то же?
Вот класс C ++, который создается с тремя значениями. class Foo{ //Constructor Foo(std::string, int, char); private: std::string foo; char bar; int baz; }; Все типы параметров разные. Я мог бы перегрузить конструктор, чтобы порядок не имел значения. class Foo{ //Constructors Foo(std::string, char, int); Foo(std::string, int, char); Foo(char, int, std::string); Foo(char, …

5
Модульное тестирование в мире «без сеттера»
Я не считаю себя экспертом DDD, но, как архитектор решений, стараюсь по возможности применять лучшие практики. Я знаю, что вокруг «за» и «против» нет (публичного) «стиля» сеттера в DDD, много споров, и я вижу обе стороны аргумента. Моя проблема в том, что я работаю в команде с широким разнообразием навыков, …

1
Как часто seq используется в производственном коде Haskell?
У меня есть некоторый опыт написания небольших инструментов на Haskell, и я нахожу его очень интуитивно понятным, особенно для написания фильтров (использующих interact), которые обрабатывают их стандартный ввод и передают его на стандартный вывод. Недавно я попытался использовать один такой фильтр для файла, который был примерно в 10 раз больше …

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

3
Почему многопоточность часто предпочтительнее для повышения производительности?
Этот вопрос был перенесен из переполнения стека, потому что на него можно ответить в Software Engineering Stack Exchange. Мигрировал 7 лет назад . У меня вопрос, почему программисты любят параллельные и многопоточные программы вообще. Я рассматриваю 2 основных подхода: асинхронный подход, основанный в основном на сигналах, или просто асинхронный подход, …

5
Почему пользователи Git говорят, что Subversion не имеет всего исходного кода локально?
Я только продолжаю читать то, что прочитал на SO, так что простите, но все, что я прочитал, говорит о том, что одним из главных преимуществ Git перед Subversion является то, что Git предоставляет весь исходный код разработчику локально, не делая никаких действий по сервер. С моим ограниченным использованием SVN и …
23 git  svn 

5
успех: / сбой: блоки против завершения: блок
Я вижу два общих шаблона для блоков в Objective-C. Один из них - пара успехов: / fail: блоки, другой - одно завершение: блок. Например, допустим, у меня есть задача, которая будет возвращать объект асинхронно, и эта задача может завершиться ошибкой. Первый шаблон -taskWithSuccess:(void (^)(id object))success failure:(void (^)(NSError *error))failure. Второй шаблон …

5
Как реализовать безопасную историю паролей
Пароли не следует хранить в виде простого текста по очевидным причинам безопасности: вам нужно хранить хэши, а также тщательно генерировать хэши, чтобы избежать атак радужных таблиц. Однако обычно у вас есть требование хранить последние n паролей и обеспечивать минимальную сложность и минимальное изменение между различными паролями (чтобы пользователь не мог …

5
Этикет отслеживания ошибок - некромантия или дубликат?
Я обнаружил очень старую (более 2 лет) проблему с запросом на функцию в трекере ошибок для проекта с открытым исходным кодом, которая была помечена как «решена (не будет исправлена)» из-за отсутствия инструментов, необходимых для выполнения запрошенного улучшения. За время, прошедшее с момента принятия этого решения, были разработаны новые инструменты, которые …

3
Называя метод «делай X, если нужно»
Какой хороший способ назвать метод, который проверяет, нужно ли делать X, и делает ли он это в случае необходимости? Например, как назвать метод, который обновляет список пользователей, если в систему вошли новые пользователи? UpdateListIfNeededкажется слишком длинным, в то время как просто UpdateListподразумевает, что каждый раз выполняется дорогая и ненужная операция. …

6
Являются ли диаграммы классов UML адекватными для проектирования систем JavaScript?
Учитывая, что UML ориентирован на более классический подход к объектной ориентации, все же можно ли его надежно использовать для проектирования систем JavaScript? Одна конкретная проблема, которую я вижу, состоит в том, что диаграммы классов, на самом деле, представляют собой структурное представление системы, а JavaScript в большей степени ориентирован на поведение, …

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