Re[14]: Долгая компиляция на с++ - смерть для больших проектов?
От: _hum_ Беларусь  
Дата: 01.05.16 11:26
Оценка:
Здравствуйте, landerhigh, Вы писали:

L>Здравствуйте, _hum_, Вы писали:


__>>ну, то есть, у меня вырисовывается картина, что тесты могут избавить от дебагинга в случае, когда


__>>- покрывают код настолько плотно, что юниты получаются очень простыми, а поэтому могут быть проанализированы на предмент ошибки и без дебагинга


L>Совершенно верно.


__>>- тесты настолько специфичные, что по срабатыванию сразу можно сказать, где кроется ошибка в юните


L>Совершенно верно.


спасибо. тогда подход понятен.

__>>только вот, действительно, я не верю, чтобы в концептуально и алгоритмически сложной системе это было возможно.


L>С вопросами веры в другой форум. Код обязан быть простым вне зависимости от сложности системы. Сложный для понимания и тестирования код даже специальное название имеет. Говнокод.


это понятно. вот только декомпозиция для тестирования и для написания кода могут противоречить друг другу (иногда даже большую функцию сложно разбить на подфункции из-за отсутствия подходящих самостоятельных концептов для этих фрагментов).

__>>да и перерасход мысли программиста на создание тестов (а в примере с транспонированием матрицы ваши тесты во много раз по объему и затратам на придумывание превосходят саму реализацию транспонирования) не факт, что окупится.


L>А вот это уже пример так называемого вранья.


L>Есть такое правило — If it worth doing, it worth testing. If it not worth testing, why bother doing it in the first place?


это не совсем верно. ведь на деле исходят из соотношения — прибыль от достижения цели/затраты. и в ряде случаев тестируемый код может оказаться намного более затратным, чем прибыль (например,глупо писать тесты для демонстрационного hello world)

L>Ну и не стоит забывать о такой детали, как "перерасход" мысли всех програмистов, когда из продакшена приходит креш дамп с чертовщиной, которой не может быть никогда, и который после двух недель курения отладчика сведется к инвертированному булевскому условию где-то очень глубоко в недрах программы, который простейший тест отловил бы полгода назад за две миллисекунды.


только в случае, если

1) тесты очень локализирующие;
2) тесты гарантированно ловят все ошибки, что, по-моему, нереально (даже для случая сложения двух чисел невозможно проверить безошибочность работы на всех вариантах входных данных, что уж говорить о более сложных функциях)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.