Найти в Дзене
Всё что вы хотели знать об умных указателях в С++
Сегодня поговорим об использовании интеллектуальных указателей в реальных проектах. Разберем вопросы о том каковы основные сценарии использования weak_ptr в паре с shared_ptr, как устроены shared_ptr и weak_ptr "под капотом", изучим накладные расходы при использовании shared_ptr и weak_ptr, а также большое количество связанных с этим проблем. Предполагается наличие у читателя предварительных знаний о назначении интеллектуальных указателей. Использование std::weak_ptr вместе с std::shared_ptr —...
3 недели назад
Применяем пользовательские типы для предотвращения ошибок в передаче параметров в С++
Допустим что перед нами стоит задача разработать тип данных, задающий положение на плоскости некторой точки, например, персонажа компьютерной игры. Первый вариант может выглядеть следующим образом: class Coord { int x_, y_; public: Coord(int x, int y) : x_(x), y_(y) {} //далее идут методы для работы с координатами }; Несмотря на крайнюю простоту, при использовании Coord может возникнуть проблема, связанная с тем, что оба параметра конструктора имеют один и тот же тип. Следовательно, передаваемые...
1 месяц назад
Тестируем код зависящий от временных интервалов
Представим что Вам нужно протестировать функцию, которая работает со временем, ожидая, к примеру, 5 секунд. Как протестировать такой код в google mock чтобы при каждом прогоне теста не ждать 5 секунд? Для того, чтобы тесты выполнялись мгновенно, необходимо вынести функционал работы с системным временем в отдельную абстракцию. Вместо прямого вызова std::this_thread::sleep_for или использования std::chrono::system_clock код должен обращаться к интерфейсу, абстрагирующему работу со временем. class...
1 месяц назад
Пишем фейковые объекты для тестов c Google Mock
В модульном тестировании фейк - это ограниченная реализация более сложного механизма, выполненная для упрощения процесса. Примером может служить использование объекта класса std::map вместо реальной базы данных. Другими словами, фейк - это упрощенная, но рабочая реализация зависимости тестируемого функционала. Есть два основных способа использовать gmock и gtest для фейков: Пусть мы разрабатываем систему хранения данных, где клиент взаимодействует с базой не напрямую, а через класс DBStorer. Одним...
1 месяц назад
Тестируем реализацию шаблона проектирования singleton c Google Mock
Согласно Википедии «синглтон» - это шаблон, ограничивающий создание экземпляра класса одним единственным экземпляром. Он описан в книге о паттернах проектирования «Банды четырёх», посвещенной способам решения повторяющихся проблем в объектно-ориентированном программировании. Паттерн используется когда в системе необходимо обеспечить существование ровно одного объекта. Шаблон «синглтон» позволяет: Пусть «синглтон» нужен для того чтобы гарантировать наличие только одного объекта Logger, записывающего сообщения в std::cout...
1 месяц назад
Если нравится — подпишитесь
Так вы не пропустите новые публикации этого канала