Я изучал.NET 4.0 Контракта Кода и считал stackoverflow также в вопросе относительно этого.
Я все еще никогда не сталкивался ни с каким примером кода, который использует контракты кода так, чтобы получил меня удивление.. это действительно полезно? Или возможно его единственный полезный Ваш код достигает определенной сложности? Кто-либо там использующий Контракты Кода и действительно довольный они сделали?
Кажется мне, что все Контракты Кода, Утверждение на том, что входит и что выходит из метода с добавлением способности попытаться выяснить значения, входящие и во время компиляции... Но затем это собирается потребовать большего количества кода всех Ваших методов.. действительно ли это стоит того?
Преимущество, которое я заметил, это кажется мне, можно использовать контракты кода отчасти в качестве первой строки поблочного тестирования... затем, когда Вы пишете, что модульный тест к может постараться не писать некоторые более базовые тесты, потому что Контракты Кода уже касаются его.. это верно?
Контракты будут работать с вызовами WCF? Я предполагаю не, так как прокси создается с Вами автоматически, что Вы наклоняете изменение.
Я использую их каждый раз, когда мне нужно проверить, что входной параметр должен иметь определенное значение (число положительное, объект не равен нулю).
Для выходных данных я использую их в любое время, когда уверен, что возвращаемое значение должно быть в определенном состоянии (например, не в null).
Наличие контрактов в коде гарантирует, что исключение будет сгенерировано в момент появления неожиданного значения, а не дальше в коде, где объекты могут случайно остаться в поврежденном состоянии из-за случайного предположения.
Лично я считаю, что это делает код намного чище. Обозначения значительно упрощают запись (вместо использования if (.... == null) ....). Этот способ тоже Contract.Requires
очень важен в том, что он пытается выполнить. Когда я вижу это, я знаю, что код оценивает, что параметр находится в определенном состоянии.
существует область изучения контрактов: http://en.wikipedia.org/wiki/Design_by_contract задолго до их появления в .net.
Контракты кода полезны, чтобы дать ответы на следующие вопросы:
Если вы можете написать небольшой и читабельный контракт для этих вопросов, то используйте его.