💬 Истории подписчиков: Google Test vs Catch2 vs собственный framework
Недавно один из читателей поделился своей историей — возможно, она откликнется и вам:
🤔 А вы какой фреймворк используете в своих проектах?
Библиотека C/C++ разработчика #междусобойчик
Недавно один из читателей поделился своей историей — возможно, она откликнется и вам:
Работаю над embedded системой на C++, нужно покрыть тестами критичный код. Использую Google Test уже два года, но начинаю сомневаться в выборе. Фреймворк тяжелый, долго компилируется, плюс не всегда удобно для embedded разработки.
Попробовал Catch2 — понравилось! Header-only, быстрая компиляция, красивые assertion'ы. Но есть проблема: на некоторых микроконтроллерах не хватает памяти для всех template instantiation'ов.
Коллега использует doctest — еще более легковесный, но менее функциональный. Много чего нету. Есть еще Boost.Test, но это еще одна зависимость.
Думаю о том, чтобы написать минималистичный тест фреймворк именно под embedded. Но боюсь, что это будет изобретение велосипеда по новой, и потрачу время на то, что уже решено.
🤔 А вы какой фреймворк используете в своих проектах?
Библиотека C/C++ разработчика #междусобойчик
❤🔥4❤3🔥2🤩1
Загадка: Я не член семьи, но мне доверяют семейные секреты. Я могу войти в дом без стука. Кто я?
😼 Ответ пишите в комментариях.
Библиотека C/C++ разработчика #междусобойчик
😼 Ответ пишите в комментариях.
Библиотека C/C++ разработчика #междусобойчик
❤3
🚀 C++17: structured bindings
Structured bindings в C++17 — это не просто красивый синтаксис, это читаемость кода на новом уровне!
Код стал намного читаемее. Особенно полезно при работе с контейнерами пар и функциями, возвращающими несколько значений.
🧠 Используете ли вы structured bindings? В каких случаях они наиболее полезны?
Библиотека C/C++ разработчика #междусобойчик
Structured bindings в C++17 — это не просто красивый синтаксис, это читаемость кода на новом уровне!
// Старый способ (до C++17)
std::map<std::string, int> counts;
for (auto it = counts.begin(); it != counts.end(); ++it) {
std::cout << it->first << ": " << it->second << std::endl;
}
// C++17 structured bindings
for (const auto& [key, value] : counts) {
std::cout << key << ": " << value << std::endl;
}
// Работает с парами, tuple, массивами
auto [x, y, z] = std::make_tuple(1, 2.5f, "hello");
auto [min, max] = std::minmax({5, 2, 8, 1, 9});
Код стал намного читаемее. Особенно полезно при работе с контейнерами пар и функциями, возвращающими несколько значений.
🧠 Используете ли вы structured bindings? В каких случаях они наиболее полезны?
Библиотека C/C++ разработчика #междусобойчик
👍11🔥9