ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Среда
24 апреля
1163388 Топик полностью
VladislavS. (12.01.2022 10:51, просмотров: 437) ответил evgeniy1294 на 1) Смысл тестирования в том, чтобы загнать на вход всё возможные значения и во всех случаях получить корректный результат. Тестирование должно быть автоматизированным, тест пишется один раз. В случае шаблонного кода это сложно или невозможно реализовать.
Код сам себя постоянно тестирует. Сейчас в ход концепты пошли. Вы параметры шаблонов так можете обложить, что ни одна муха не проскочит. Отсутствие повторений при каждой компиляции проверяется автоматом. 
static_assert(pins_.isUnique([](auto pin1, auto pin2)
                             {
                               return (TypeUnBox<pin1>::tgpio::gpio_id == TypeUnBox<pin2>::tgpio::gpio_id) &&
                                      (TypeUnBox<pin1>::pin_mask == TypeUnBox<pin2>::pin_mask);
                             }), "PinList has Duplicates!");

Да и просто, когда что-то идёт не так, строгий контроль типов С++ (в отличии от С) не даст скомпилировать.


Обратите внимание, кстати, на этот пример. Несмотря на то что он под завязку шаблонный, программирование стало обычным функциональным. Что тут сложного, кроме знания синтаксиса лямбд?