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

37
Почему тестирование языка не поддерживается на уровне синтаксиса?

Вы можете найти бесконечный список блогов, статей и сайтов, рекламирующих преимущества модульного тестирования вашего исходного кода. Почти гарантировано, что разработчики, которые программировали компиляторы для Java, C ++, C # и других типизированных языков, использовали модульное тестирование...

37
Почему вывод типа полезен?

Я читаю код гораздо чаще, чем пишу код, и я предполагаю, что большинство программистов, работающих над промышленным программным обеспечением, делают это. Я предполагаю, что преимущество вывода типов заключается в меньшей детализации и меньшем количестве написанного кода. Но с другой стороны, если...

37
Является ли создание подклассов для конкретных случаев плохой практикой?

Рассмотрим следующий дизайн public class Person { public virtual string Name { get; } public Person (string name) { this.Name = name; } } public class Karl : Person { public override string Name { get { return "Karl"; } } } public class John : Person { public override string Name { get { return...

37
При написании объектно-ориентированного кода я должен всегда следовать шаблону проектирования?

Есть ли мыслимый шаблон проектирования для какой-либо объектно-ориентированной программы? Я спрашиваю об этом, потому что недавно я увидел реализацию Doorкласса с Lock. Это было частью теста, и в ответ было сказано, что код соответствует шаблону Null Object: class Lock { public: virtual void...

37
Подклассы только для конструктора: это анти-шаблон?

У меня была беседа с коллегой, и в итоге у нас возникли противоречивые представления о цели создания подклассов. Моя интуиция заключается в том, что если основная функция подкласса должна выражать ограниченный диапазон возможных значений его родителя, то, вероятно, это не должен быть подкласс. Он...

37
Выпуск программного обеспечения с открытым исходным кодом слишком рано [закрыто]

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

37
Почему ответственность за обеспечение безопасности потоков при программировании на GUI лежит на вызывающей стороне?

Во многих местах я видел, что каноническая мудрость 1 заключается в том, что вызывающая сторона несет ответственность за обеспечение того, чтобы вы были в потоке пользовательского интерфейса при обновлении компонентов пользовательского интерфейса (в частности, в Java Swing, что вы находитесь в...

37
PHP: когда использовать массивы и когда использовать объекты для конструкций кода, в основном для хранения данных?

PHP - это язык смешанной парадигмы, позволяющий использовать и возвращать необъектные типы данных, такие как массивы. Я задаю вопрос, чтобы попытаться прояснить некоторые рекомендации по выбору массивов и объектов при принятии решения о том, какую программную конструкцию использовать в конкретной...

37
Что такое «методы класса» и «методы экземпляра» в Python?

В чате была дискуссия, касающаяся вопроса (сам вопрос не имеет отношения к этому), который показал, что я, возможно, вообще не знаю Python. На мой взгляд, хотя терминология отличается в разных языках, мы можем классифицировать функции следующим образом: [бесплатные] функции статические методы /...

37
Это антипаттерн, чтобы использовать peek () для изменения элемента потока?

Предположим, у меня есть поток вещей, и я хочу «обогатить» их серединой потока, я могу использовать peek()это, например: streamOfThings.peek(this::thingMutator).forEach(this::someConsumer); Предположим, что изменение объектов в этой точке в коде является правильным поведением - например,...

37
Предназначены ли интеграционные тесты для повторения всех модульных тестов?

Допустим, у меня есть функция (написана на Ruby, но должна быть понятна всем): def am_I_old_enough?(name = 'filip') person = Person::API.new(name) if person.male? return person.age > 21 else return person.age > 18 end end В модульном тестировании я бы создал четыре теста, чтобы охватить все...

37
Как справиться с различными стилями разработки (сверху вниз и снизу вверх) в команде?

Скажем, вы только что начали работать в очень маленькой команде над {в настоящее время относительно небольшим, но, надеюсь, еще большим, проектом}. Обратите внимание, что это реальный проект, предназначенный для использования другими разработчиками в реальном мире, а не какой-то академический...

37
Не нарушает ли добавление типа возврата в метод обновления «Принцип единой ответственности»?

У меня есть метод, который обновляет данные сотрудников в базе данных. EmployeeКласс неизменен, так что «обновление» средства объекта на самом деле для создания экземпляра нового объекта. Я хочу, чтобы Updateметод возвращал новый экземпляр Employeeс обновленными данными, но теперь я могу сказать,...

37
Какая польза от преобразования исходного кода в байт-код Java?

Если нужны разные JVM для разных архитектур, я не могу понять, какова логика внедрения этой концепции. В других языках нам нужны разные компиляторы для разных машин, но в Java нам требуются разные JVM, так какова логика введения концепции JVM или этого дополнительного...

37
При проектировании системы лучше всего ориентироваться на дизайн, который вы будете использовать?

При разработке системы или приложения, которые вы планируете использовать с определенной платформой, лучше всего проектировать систему без учета инфраструктуры, или лучше проектировать систему с мышлением «хорошо, что для среды было бы легче с...

37
Всегда ли плохо использовать «новый» в конструкторе?

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

37
В порядке ли создание объектов с нулевыми параметрами в модульных тестах?

Я начал писать тестовые модули для моего текущего проекта. У меня действительно нет опыта с этим все же. Сначала я хочу полностью «получить его», поэтому в настоящее время я не использую ни свою платформу IoC, ни библиотеку-макет. Мне было интересно, если что-то не так с предоставлением нулевых...

37
Должны ли файлы UTF-8 CSV содержать спецификацию (метку порядка байтов)?

Наше программное обеспечение для бизнеса позволяет пользователю сохранять определенные данные в формате CSV . Поскольку в дикой природе используется много разных форматов (все они называются «CSV»), мы пытаемся решить, как должен выглядеть «формат по умолчанию». Что касается разделителей строк /...

37
Как описать архитектурный сдвиг, который намеренно нарушает стандарты REST?

Я предлагаю внести изменения в очень плохо спроектированный программный проект, который страдает от множества проблем. На высоком уровне проект использует Angular на внешнем интерфейсе и использует различные API REST; что все замечательно (я не вижу необходимости менять нашу технологию или...