Контракты кода - приятно, на грани, но не готово для прайм-тайма?

Меня по-настоящему увлекли кодовые контракты, представленные в .NET 4 (хотя и с помощью DevLabs). Но один мелкий шрифт меня немного охладил. Вот что он говорит:

  • В настоящее время не существует обходного решения проблемы, когда постусловия вызываются вне блокировки в потокобезопасном методе, за исключением того, что они не используются.
  • .NET полагается на двоичный перезаписчик, что замедляет сборку .
  • Использование контрактов кода также может привести к снижению производительности во время выполнения.
  • Нельзя использовать для проверок, чувствительных к безопасности, потому что их можно обойти во время выполнения, обработав событие ContractFailed.

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

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

8
задан abatishchev 15 March 2013 в 02:40
поделиться