.net 4.0 Code Contracts. Когда использовать? Когда они - пустая трата времени?

Я изучал.NET 4.0 Контракта Кода и считал stackoverflow также в вопросе относительно этого.

Я все еще никогда не сталкивался ни с каким примером кода, который использует контракты кода так, чтобы получил меня удивление.. это действительно полезно? Или возможно его единственный полезный Ваш код достигает определенной сложности? Кто-либо там использующий Контракты Кода и действительно довольный они сделали?

Кажется мне, что все Контракты Кода, Утверждение на том, что входит и что выходит из метода с добавлением способности попытаться выяснить значения, входящие и во время компиляции... Но затем это собирается потребовать большего количества кода всех Ваших методов.. действительно ли это стоит того?

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

Контракты будут работать с вызовами WCF? Я предполагаю не, так как прокси создается с Вами автоматически, что Вы наклоняете изменение.

9
задан urig 25 July 2010 в 02:01
поделиться

2 ответа

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

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

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

Лично я считаю, что это делает код намного чище. Обозначения значительно упрощают запись (вместо использования if (.... == null) ....). Этот способ тоже Contract.Requires очень важен в том, что он пытается выполнить. Когда я вижу это, я знаю, что код оценивает, что параметр находится в определенном состоянии.

7
ответ дан 3 November 2019 в 00:58
поделиться

существует область изучения контрактов: http://en.wikipedia.org/wiki/Design_by_contract задолго до их появления в .net.

Контракты кода полезны, чтобы дать ответы на следующие вопросы:

  • Что ожидает метод?
  • Что гарантирует метод?
  • Что поддерживает метод?

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

2
ответ дан 3 November 2019 в 00:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: