В настоящее время я разрабатываю небольшую структуру ИИ (генетические алгоритмы / нейронные сети) на C # для университетского проекта.
Моя первая забота - разработка многоразовый фреймворк, поэтому я делаю все довольно модульным. Я знаю, что расплачиваюсь за это (производительность), но я чувствую, что могу получить больше, чем потерять с ним (желательно иметь код в два раза медленнее, чем терять в два раза больше времени, пытаясь найти невозможное для находить ошибки и терять много времени, пытаясь добавить новые вещи, которые сложно ввести в монолитный блок кода).
Я бы хотел, чтобы было много проверок различных частей моего кода, в основном утверждений. Проверьте, действительно ли при запуске метода X я нахожусь в правильном состоянии и т. Д. Подобные утверждения полезны при разработке, но я бы хотел, чтобы они не касались кода выпуска (то есть когда я решаю, что хочу оставить это работает на ночь, чтобы получить окончательные результаты исследования).
Я вижу несколько способов достижения этого:
Как бы вы это сделали и почему?
Я также знаю о модульных тестах (я их использую), но я также хотел бы иметь какие-то утверждения по коду тоже.