Как использовать кодовые контракты в .NET 4.0, не делая мой код загроможденным? - PullRequest
8 голосов
/ 15 февраля 2011

Я начал использовать кодовые контракты и обнаружил, что трудно сразу определить «внутренности» метода.

Возьмите этот (очень простой) пример:

public static void UserAddNew(string domain, string username, string displayName)
{
    Contract.Assert(!string.IsNullOrWhiteSpace(domain));
    Contract.Assert(!string.IsNullOrWhiteSpace(username));
    Contract.Assert(!string.IsNullOrWhiteSpace(displayName));

    LinqDal.User.UserAddNew(domain, username, displayName);
}

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

Что вы делаете, чтобы сохранить ваши контракты в порядке? Или я просто слишком разборчив?

1 Ответ

6 голосов
/ 15 февраля 2011

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

Атрибут класса контракта

Класс договора для атрибута

...