Программирование по контракту (Code Contracts) в C#

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

Программирование по контрактам подразумевает написание дополнительных проверочных условий в методах класса. Данные условия должны гарантировать корректность входных и возвращаемых данных. То есть, данная идея состоит в том, что перед использованием входных данных внутри метода необходимо проверить, удовлетворяют ли они минимальным условиям корректности, а также удостовериться, что после выполнения работы мы получили корректный результат.

Еще одним преимуществом использования данного метода программирования можно считать документируемость кода. За счет декларации в методе требований становится более понятной логика его работы. Кроме того, существуют специализированные утилиты, позволяющие автоматически создавать документацию по коду или создавать модульные тесты. Это не только экономит время разработчику, но и в целом улучшает стиль программирования.

Выделяют три вида условий:

  • Предусловия (Preconditions) – условия корректности входных аргументов метода;
  • Постусловия (Postconditions) – условия корректности результата работы метода;
  • Инварианты (Invariants) – условия корректности переменных метода на протяжении всего его выполнения.

В .NET версии 4.0 и старше для реализации данного метода программирования используется пространство имен System.Diagnostics.Contracts. Давайте рассмотрим, как ей можно воспользоваться.

Примеры исходного кода можно изучить в статье по ссылке https://shwanoff.ru/code-contracts/