Отлаживал сегодня свою программу для автоматизации автомойки. И понял что столкнулся с проблемой отложенной отладки. Я привык писать небольшие программы и каждую функцию (процедуру) тестировать сразу после написания. Но в этом проекте слишком много функций, часто со сложными автоматически генерируемыми другими функциями данными. Поэтому многие из них, я протестировал лишь спустя недели. И сильно удивился некоторым строкам кода.
Например я определил формат для работы с GPIO. Использовать в качестве условия и в качестве команд массивы знаковых целочисленных чисел, содержащих в модуле числа номер порта GPIO, а в знаке состояние порта GPIO. Для хранения в самом объекте текущего состояния использовал бинарный массив который передавал через функцию синхронизации. И обнаружил что ещё давно написал эту функцию принимающую Integer[] (массив целочисленных знаковых), а при синхронизации передавал в неё Boolean[] (бинарный массив). Из за чего тестовый объект Box1 просто не реагировал на GPIO.
Так же я обнаружил ошибку:
If IntegerArrayGPIO[a] > 0 Then
' True
WriteGPIO(Abs(IntegerArrayGPIO[a]), True) ' Функция Abs использована в данной строе для единообразия
Endif
If IntegerArrayGPIO[a] > 0 Then
' False
WriteGPIO(Abs(IntegerArrayGPIO[a]), False)
Endif
И множество других ошибок. Пришлось их отлавливать при помощи слежения за переменными.
Что вы делаете когда сталкиваетесь с невозможностью или трудностью тестировать большую часть функций сразу после написания?