Игорь Бахарев @baharev_il
Пользователь
Информация
- В рейтинге
- Не участвует
- Откуда
- Россия
- Зарегистрирован
- Активность
Специализация
Backend Developer, Application Developer
Git
Linux
C
Algorithms and data structures
Software development
Programming microcontrollers
Applied math
C++
English
Research work
Там написано то, что написано.
Всё остальное - субъективно.
Соответственно, я проверяю так, как написано.
Здесь я просто опирюсь на стандарт POSIX:
malloc: https://pubs.opengroup.org/onlinepubs/9699919799/functions/malloc.html
memcpy: https://pubs.opengroup.org/onlinepubs/9699919799/functions/memcpy.html
Где ответ NULL зарезервирован и является индикатором ошибки.
Вы совершенно правы. Точечный, контролируемый фаззинг. Не как с ulimit, а когда точно знаешь где, когда и в какой потоковой функции выстрелит.
Не будем продолжать, дабы не превратить в спор. Спасибо за идею со счётчиком вызовов.
Понял вас отлично.) Но не согласен с вашей точкой зрения. "Генерация и обработка надуманных ошибок" - de facto стандарт продуктовой разработки и чем они разнообразнее и нетривиальнее - тем лучше. Думаю, здесь меня поддержат многочисленные профессиональные тестировщики. А вот когда все усилия сконцентрированы на одной бизнес-логике и программа ломается на любое отклонение от идеальных условий - как раз то, что вы называете "индусский код".
Повторю еще раз: Умные указатели не панацея и в рамках С++. Особенно, когда речь идет о многопоточности (еще один продуктовый стандарт). На эту тему уже писали здесь, на Хабре: https://habr.com/ru/articles/311560/
Спасибо вам за проявленный интерес.
Соглашусь с утверждением, что юнит-тестирование слабо влияет на качество архитектуры программы. Но является фундаментом для программы с любым качеством архитектуры.
Более того, использование умных указателей (которых нет в Си) - также совсем не панацея от всего и подлежит тестированию.