Как вы утверждаете в алгоритмическом коде в .NET?

В настоящее время я разрабатываю небольшую структуру ИИ (генетические алгоритмы / нейронные сети) на C # для университетского проекта.

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

Я бы хотел, чтобы было много проверок различных частей моего кода, в основном утверждений. Проверьте, действительно ли при запуске метода X я нахожусь в правильном состоянии и т. Д. Подобные утверждения полезны при разработке, но я бы хотел, чтобы они не касались кода выпуска (то есть когда я решаю, что хочу оставить это работает на ночь, чтобы получить окончательные результаты исследования).

Я вижу несколько способов достижения этого:

  1. System.Diagonists.Assert семейство методов.
  2. Кодовые контракты
  3. Наличие if (x) затем вызовите InvalidStateException () в окружении #if DEBUG / #endif

Как бы вы это сделали и почему?

Я также знаю о модульных тестах (я их использую), но я также хотел бы иметь какие-то утверждения по коду тоже.

5
задан devoured elysium 19 November 2010 в 06:01
поделиться