ВходНаше всё Теги codebook PARTS Поиск Опросы Закон Пятница
28 января
/1163388
Топик полностью
VladislavS. (12.01.2022 10:51, просмотров: 249) ответил 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!");

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


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

Ответы