Здравствуйте, Stanislav V. Zudin, Вы писали:
L>>Если вы подозреваете, что в алгоритме есть баг, просто пишете тест, воспроизводящий условия, при котором, как вы подозреваете, алгоритм ломается. Это просто и быстро. Проверяете свои подозрения. В отладчике в общем случае это сделать уже невозможно. SVZ>Дьявол кроется в деталях выделенном. SVZ>Не всегда просто и нифига не быстро.
Если не просто и не быстро, то вы либо не понимаете свой собственный код, либо алгоритм, либо предметную область. Значит, нужно заполнять пробелы.
SVZ>В моей практике это сложно и геморройно. И еще объемно.
Хороший индиактор того, что тестируемый код пора дробить на части.
SVZ>Как правило это добрая сотня строк, чтобы сварганить минимально-необходимый набор данных. И еще сотня — чтобы проверить результат. Написание одного теста занимало по полдня без перекуров. Работа алгоритма же не сводится к булевскому значению.
И это тоже индикатор
SVZ>Из полученных данных еще надо выудить нечто, что можно проверить. И в каждом тесте это "нечто" будет разным.
Это как раз не проблема
SVZ>Из-за этого у нас прижились рантайм проверки (ассерты) всего и вся и отладчик.
У меня крайне негативное отношение к ассертам, когда речь идет о плюсах.
Безотносительно этого, их применимость крайне ограничена, а для симуляции разных условий они вообще бесполезны.
Тестами можно сделать все, что можно сделать отладчиком. Только намного быстрее и автоматизировано.
И еще много чего такого, что отладчиком сделать вообще никак нельзя.